EasyIoT DS18B20 Temperature Sensor – ESP8266

I needed a temperature node, but I didn’t have a DHT22 temp/humidity sensor!?

So I modified the example sketch for the DHT to use a DS18B20 Digital Temperature Sensor instead!

It works great!

The sensor is connected as shown here:

http://www.hobbytronics.co.uk/ds18b20-arduino

Heres the code:

 

/*

DS18B20 Digital Sensor Node Sketch for EasyIoT Server
Modified by Lewys Martin <l@lewys.eu>
See: blog.lewys.eu for details

Original Code:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

V1.0 – first version

Created by Igor Jarc <igor.jarc1@gmail.com>
See http://iot-playground.com for details
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 2 as published by the Free Software Foundation.
*/
#include <Esp8266EasyIoT.h>
#include <SoftwareSerial.h>
#include <DallasTemperature.h>
#include <OneWire.h>

#define CHILD_ID_TEMP 1
#define SENSOR_DIGITAL_PIN 2
Esp8266EasyIoT esp;

SoftwareSerial serialEsp(10, 11);

OneWire oneWire(SENSOR_DIGITAL_PIN);
DallasTemperature sensors(&oneWire);

float lastTemp;

Esp8266EasyIoTMsg msgTemp(CHILD_ID_TEMP, V_TEMP);
void setup()
{
serialEsp.begin(9600);
Serial.begin(115200);

Serial.println(“EasyIoTEsp init”);
esp.begin(NULL, 3, &serialEsp, &Serial);
//esp.begin(NULL, &serialEsp);
esp.present(CHILD_ID_TEMP, S_TEMP);

sensors.begin();
}

void loop()
{
while(!esp.process());

sensors.requestTemperatures();
float temperature = (sensors.getTempCByIndex(0));
if (isnan(temperature)) {
Serial.println(“Failed reading temperature from sensor”);
}
else if (temperature != lastTemp)
{
lastTemp = temperature;
esp.send(msgTemp.set(temperature, 1));
Serial.print(“T: “);
Serial.println(temperature);
}
}

And some pictures:
image

image

One thought on “EasyIoT DS18B20 Temperature Sensor – ESP8266”

  1. code updated:

    #include
    #include
    #include
    #include

    #define CHILD_ID_TEMP 1
    #define SENSOR_DIGITAL_PIN 2

    Esp8266EasyIoT esp;

    SoftwareSerial serialEsp(10, 11);

    OneWire oneWire(SENSOR_DIGITAL_PIN);
    DallasTemperature sensors(&oneWire);

    float lastTemp;

    Esp8266EasyIoTMsg msgTemp(CHILD_ID_TEMP, V_TEMP);

    void setup()
    {
    serialEsp.begin(9600);
    Serial.begin(115200);

    Serial.println(“EasyIoTEsp init”);

    esp.begin(NULL, 3, &serialEsp, &Serial);
    //esp.begin(NULL, &serialEsp);

    pinMode(13, OUTPUT);
    // Serial.println(“present S_TEMP”);
    esp.present(CHILD_ID_TEMP, S_TEMP);
    sensors.begin();
    }

    void loop()
    {
    while(!esp.process());
    sensors.requestTemperatures();

    float temperature = (sensors.getTempCByIndex(0));
    if (isnan(temperature)) {
    Serial.println(“Failed reading temperature from DS1820”);
    }
    else if (temperature != lastTemp)
    {
    lastTemp = temperature;
    esp.send(msgTemp.set(temperature, 1));
    Serial.print(“T: “);
    Serial.println(temperature);
    }
    }

Leave a Reply

Your email address will not be published. Required fields are marked *