#17 - Dual Temperature Sensors running on ESP-01
This is a simple example of running both a DHTxx (in this case DHT11) and DS18B20 1-wire sensors on the lowly ESP-01
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <ESP8266mDNS.h> // For OTA
#include <WiFiUdp.h> // For OTA
#include <ArduinoOTA.h> // For OTA
char auth[] = "xxxxxxxxxx"; // Local Server
char ssid[] = "xxxxxxxxxx";
char pass[] = "xxxxxxxxxx";
//char server[] = "xxx.xxx.xxx.xxx"; // IP for your Local Server
char server[] = "blynk-cloud.com";
int port = 8080;
BlynkTimer timer;
// DHT22 Sensor setup
#include <DHT.h>
#define DHTPIN 0 // GPIO0 - pin5 on ESP-01
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float h;
float t;
// DS18B20 Sensor setup
#include <OneWire.h>
#include<DallasTemperature.h>
#define ONE_WIRE_BUS 2 // GPIO2 - pin3 on ESP-01
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
float DS18B20Temp;
void setup()
{
DS18B20.begin();
Blynk.connectWiFi(ssid, pass);
Blynk.config(auth, server, 8080);
Blynk.connect();
timer.setInterval(1000L, UpTime);
timer.setInterval(60000L, DS18B20TempSensor);
timer.setInterval(10050L, DHTTempHumSensor);
Blynk.virtualWrite(2, BLYNK_VERSION);
Blynk.virtualWrite(6, ESP.getCoreVersion());
ArduinoOTA.setHostname("ESP-01 Multi-temp"); // For OTA
ArduinoOTA.begin(); // For OTA
}
void DS18B20TempSensor() // DS18B20 sensor reading
{
DS18B20.requestTemperatures();
delay(500); // Yes, the evil delay... but only for a really short time every 10s . Alternative options are avail with timers.
Blynk.virtualWrite(V3, DS18B20.getTempCByIndex(0));
}
void DHTTempHumSensor() // DHT sensor reading
{
h = dht.readHumidity();
t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
Blynk.virtualWrite(V4, h);
Blynk.virtualWrite(V5, t);
}
BLYNK_WRITE(V1) { // Quick test read. Clears all values and reloads
if (param.asInt()) {
Blynk.virtualWrite(V0, 0);
Blynk.virtualWrite(V3, 0);
Blynk.virtualWrite(V4, 0);
Blynk.virtualWrite(V5, 0);
DS18B20TempSensor();
DHTTempHumSensor();
}
}
void UpTime()
{
Blynk.virtualWrite(V0, millis() / 1000);
Blynk.virtualWrite(V7, WiFi.RSSI());
}
void loop()
{
Blynk.run();
timer.run();
ArduinoOTA.handle(); // For OTA
}