//#define BLYNK_TEMPLATE_ID "TMPL3cc3KTGWg"
//#define BLYNK_TEMPLATE_NAME "temp"
//#define BLYNK_AUTH_TOKEN "bvQETxv2CsbqrtBthaQS1gpyD3fyYB0i"
#include <OneWire.h>
#include <DallasTemperature.h>
//#include <WiFi.h>
//#include <WiFiClient.h>
//#include <BlynkSimpleEsp32.h>
#include <DNSServer.h>
//#include <WebServer.h>
//#include <WiFiManager.h>
#include <LiquidCrystal_I2C.h>
//WiFiServer server(80); // Set web server port number to 80
//String header;// Variable to store the HTTP request
#define ONE_WIRE_BUS 13 // Data wire is connected to GPIO 13
//#define BLYNK_PRINT Serial
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Addresses of 3 DS18B20s
uint8_t sensor01[8] = { 0x28, 0xB2, 0x8F, 0x45, 0xD4, 0xD7, 0x53, 0x3A };
uint8_t sensor02[8] = { 0x28, 0x35, 0xD9, 0x45, 0xD4, 0x21, 0x37, 0x6B };
uint8_t sensor03[8] = { 0x28, 0x63, 0xFD, 0x45, 0xD4, 0x7B, 0x0C, 0x1E };
float temperature01;
float temperature02; // Variables for storing temperatures
float temperature03;
const int TEMP_Threshold_Upper=35; // Upper threshold temperture for alarm
const int TEMP_Threshold_Lower=-127;
const int RELAY_Alarm=12; //pin for alarm relay
LiquidCrystal_I2C lcd(0x27, 20, 4); //LCD Address and Size
//char auth[] = BLYNK_AUTH_TOKEN;
//BlynkTimer timer;
const int PIN_AP = 0; // to enter wifi manager
DeviceAddress Thermometer;
int deviceCount=0;
//unsigned long previousMillis = 0; //for wifi reconnect
///]unsigned long interval = 30000;
void setup(void)
{
Serial.begin(9600); // Start the serial communication
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("WELCOME ");
delay(2000);
lcd.clear();
lcd.print("IOT Temperature Monitoring System");
delay(3000);
lcd.clear();
pinMode(RELAY_Alarm, OUTPUT); //initialize digial pin as an output
pinMode(PIN_AP, INPUT); //initialize digital pin as input
// WiFiManager
//WiFiManager wifiManager;
//wifiManager.autoConnect("AutoConnectAP");
Serial.println("Connected.");
lcd.println("Connected.");
// Connect to Blynk
//Blynk.config(auth);
//Blynk.connect();
//while (!Blynk.connected())
//{
// Serial.println("Connecting to Blynk...");
//lcd.println("Connecting to Blynk...");
//delay(2000);
//}
Serial.println("Connected to Blynk");
lcd.println("Connected to Blynk");
sensors.begin();
Serial.println("Locating devices...");
lcd.println("Locating devices...");
Serial.print("Found ");
lcd.print("Found ");
deviceCount = sensors.getDeviceCount();
Serial.print(deviceCount, DEC);
lcd.print(deviceCount, DEC);
Serial.println(" devices.");
lcd.println(" devices.");
Serial.println("");
lcd.println("");
Serial.println("Printing addresses...");
lcd.println("Printing addresses...");
for (int i=0; i < deviceCount; i++)
{
Serial.print("Sensor ");
lcd.print("Sensor ");
Serial.print(i+1);
lcd.print(i+1);
Serial.print(" : ");
lcd.print(" : ");
sensors.getAddress(Thermometer, i);
printAddress(Thermometer);
}
sensors.setResolution(sensor01, 10); //set resolution
sensors.setResolution(sensor02, 10); //set resolution
sensors.setResolution(sensor02, 10); //set resolution
}
void loop()
{sendSensor01(); // Temperature sensor read interval. 1000 (ms) = 1 seconds.
sendSensor02(); // Temperature sensor read interval. 1000 (ms) = 1 seconds.
sendSensor03(); // Temperature sensor read interval. 1000 (ms) = 1 seconds.
}
//wifi reconnecting
//unsigned long currentMillis = millis();
// if WiFi is down, try reconnecting every CHECK_WIFI_TIME seconds
//if ((WiFi.status() != WL_CONNECTED) && (currentMillis - previousMillis >=interval))
// {
//Serial.print(millis());
//lcd.print(millis());
//Serial.println("Reconnecting to WiFi...");
//lcd.println("Reconnecting to WiFi...");
// WiFi.reconnect();
//previousMillis = currentMillis;
//}
//WiFiManager WifiManager;
//if boot button was pressed
// if ( digitalRead(PIN_AP) == LOW )
//{
// Serial.println("reset"); // try to open the portal
//if(!WifiManager.startConfigPortal("AutoConnectAP", "") )
//{
//Serial.println("Failed to connect");
//delay(2000);
//ESP.restart();
//delay(1000);
//}
//Serial.println("connected!!!");
//}
//{
// Blynk.run();
//timer.run();
//}
//}
void printAddress(DeviceAddress deviceAddress)
{
for (uint8_t i = 0; i < 8; i++)
{
Serial.print("0x");
if (deviceAddress[i] < 0x10) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
if (i < 7) Serial.print(", ");
}
Serial.println("");
}
void sendSensor01()
{lcd.clear();
sensors.requestTemperatures(); // Polls the sensors.
temperature01 = sensors.getTempC(sensor01); // Stores temperature. Change to getTempCByIndex(0) for celcius.
//Blynk.virtualWrite(0, temperature01); // Send temperature to Blynk app virtual pin 1.
Serial.print("T1: ");
lcd.setCursor(0,0);
lcd.print("T1: ");
Serial.print(temperature01);
lcd.print(temperature01);
Serial.println(" Deg C");
lcd.print((char)223);
lcd.print("C");
;
delay(2000);
if (temperature01 > TEMP_Threshold_Upper)
{
Serial.println("Warning! High Temp T1");
lcd.println("T1 High Temp");
delay(2000);
digitalWrite(RELAY_Alarm, HIGH);
delay(2000);}
else (temperature01 = TEMP_Threshold_Lower);
{
digitalWrite(RELAY_Alarm, HIGH);
Serial.println("T1 Sensor Fault");
lcd.setCursor(012);
lcd.println(" T1 Sen/Flt");
delay(2000);
}
}
void sendSensor02()
{
sensors.requestTemperatures(); // Polls the sensors.
temperature02 = sensors.getTempC(sensor02); // Stores temperature. Change to getTempCByIndex(0) for celcius.
//Blynk.virtualWrite(1, temperature02); // Send temperature to Blynk app virtual pin 1.
Serial.print("T2: ");
lcd.setCursor(2,0);
lcd.print("T2: ");
Serial.print(temperature02);
lcd.print(temperature02);
Serial.println(" Deg C");
lcd.print((char)223);
lcd.println("C");
if(temperature03> TEMP_Threshold_Upper)
{
Serial.println("Warning! High Temp T2");
lcd.println("T2 High Temp");
delay(2000);
digitalWrite(RELAY_Alarm, HIGH);
delay(2000);}
else if(temperature02 = TEMP_Threshold_Lower);
{
digitalWrite(RELAY_Alarm, HIGH);
Serial.println("T2 Sensor Fault");
lcd.setCursor(2,12);
lcd.println("T2 Sen/Flt");
delay(2000);}
}
void sendSensor03()
{
sensors.requestTemperatures(); // Polls the sensors.
temperature03 = sensors.getTempC(sensor03); // Stores temperature. Change to getTempCByIndex(0) for celcius.
//Blynk.virtualWrite(2, temperature03); // Send temperature to Blynk app virtual pin 1.
Serial.print("T3: ");
lcd.setCursor(3,0);
lcd.print("T3: ");
Serial.print(temperature03);
lcd.print(temperature03);
Serial.println(" Deg C");
lcd.print((char)223);
lcd.println("C");
if(temperature03> TEMP_Threshold_Upper)
{
Serial.println("Warning! High Temp T3");
lcd.println("T3 High Temp");
delay(2000);
digitalWrite(RELAY_Alarm, HIGH);
delay(2000);}
else if(temperature03 = TEMP_Threshold_Lower);
{
digitalWrite(RELAY_Alarm, HIGH);
Serial.println("T3 Sensor Fault");
lcd.setCursor(3,12);
lcd.println("T3 Sensor Fault");
delay(2000); }
}
Loading
ds18b20
ds18b20
Loading
ds18b20
ds18b20
Loading
ds18b20
ds18b20