ESP8266 WiFi – Temperatuur sensor DS18B20 uitlezen (ArduinoIDE)
Op deze pagina vind je een voorbeeld om via de ESP-01 module een DS18B20 (Dallas 1-wire) temperatuur sensor te gebruiken via de GPIO pinnen met de firmware ArduinoIDE.
Hardware
BESTEL NU!
BESTEL NU! (WATERDICHT)
De DS18B20 is nauwkeurige digitale temperatuur sensor, het is een Dallas one-wire device en werkt op 3.3v, je kan meerdere sensoren aansluiten via dezelfde pinnen en deze uitlezen.
Afwijking: ±0,5°C bij −50°C en +85°C
Specificaties:
– 1-Wire interface vereist slechts 1 pin voor communicatie
– 9/10/11/12 bits resolutie (in te stellen)
– 64-bit serial code opgeslagen in een geïntegreerde ROM
– Kan worden gevoed vanuit datalijn.
– Voeding bereik is 3,0 V tot 5,5 V
– Meet temperaturen van -55 ° C tot +125 ° C
– ± 0,5 ° C nauwkeurigheid van -10 ° C tot +85 ° C
Pinout
Pin: | Functie |
1 | GND |
2 | Digitale uitgang |
3 | Vdd (+3.3v) |
Wat heb je nodig?
1) Firmware flashen met ArduinoIDE
2) Weerstand van 4,7 kΩ
3) Arduino OneWire bibliotheek
Script ZONDER Dallas Temperature Control Library (alleen OneWire)
Onderstaand script leest de DS18B20 sensor uit met alleen de OneWire bibliotheek, en geeft het aantal graden weer via de seriële console (bron)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <OneWire.h> // DS18B20 op pin 2. OneWire ds(2); void setup() { // Start seriele poort. Serial.begin(9600); } void loop() { byte data[2]; ds.reset(); ds.write(0xCC); ds.write(0x44); delay(750); ds.reset(); ds.write(0xCC); ds.write(0xBE); data[0] = ds.read(); data[1] = ds.read(); int Temp = (data[1]<<8)+data[0]; Temp = Temp>>4; // schrijf temperatuur naar console. Serial.print(" T = "); Serial.print(Temp); Serial.println("'C"); } |
Code flashen:
Voordat je de module kan aansluiten, verbind GPIO 0 op GND en flash de code in de ESP8266 module.
Sensor aansluiten:
Eenmaal de code geflashed, Sluit de sensor aan volgens onderstaand schema:
De console output:
Script MET Dallas Temperature Control Library en OneWire
Wat heb je nodig?
1) Weerstand van 4,7 kΩ
2) Arduino OneWire bibliotheek
3) Arduino Dallas TLC bibliotheek
Onderstaand script leest de DS18B20 sensor uit met de Dallas TLC en OneWire bibliotheek, en geeft het aantal graden (gedetailleerder) weer via de seriële console (bron)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include <OneWire.h> #include <DallasTemperature.h> // Data wire is plugged into port 2 on the Arduino #define ONE_WIRE_BUS 2 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); void setup(void) { // start serial port Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library Demo"); // Start up the library sensors.begin(); } void loop(void) { // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); // Send the command to get temperatures Serial.println("DONE"); Serial.print("Temperature for the device 1 (index 0) is: "); Serial.println(sensors.getTempCByIndex(0)); } |
De console output: