#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
#include <WiFi.h>
#include <ThingSpeak.h>
const char* WIFI_NAME = "Wokwi-GUEST"; // WiFi ssid
const char* WIFI_PWD = ""; // password
#define WIFI_CHANNEL 1
const int myChannelID = 2409976; // cloud channel ID
const char* myApiKey = "RS9MRXAQBNYQ1WDW"; // Cloud Api key
const char* server = "api.thingspeak.com"; // connect to ThingSpeak server
// get wifi
WiFiClient client; // Wifi client class
OneWire oneWire(10);
DallasTemperature sensor(&oneWire);
//declaring lcd
LiquidCrystal_I2C lcd(0x27, 30, 4);
const int ledPin = 8;
const int ledPin1 = 4;
const int sensorPin = 2;
int sensorMin = 0; // minimum sensor value
int sensorMax = 30; // maximum temperature value
int sensorValue = 0; // sensor value
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(1, 0);
lcd.println("Env Temperature!");
delay(5000);
// sensor.begin();
pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
delay(2);
sensor.begin();
delay(20);
ThingSpeak.begin(client);
}
void loop() {
// lcd.print(sensorMax);
sensor.requestTemperatures(); // Send the command to get temperatures
float temperatureC = sensor.getTempCByIndex(0);
float temperatureF = sensor.getTempFByIndex(0);
lcd.clear();
if(temperatureC == -127.00){
lcd.println("Failed to read from DS18B20 sensor");
} else {
lcd.setCursor(0,0);
lcd.println("Temperature is:");
lcd.setCursor(0, 1);
lcd.print("... ");
lcd.print(temperatureC);
lcd.print("\xDF");
lcd.print("C");
lcd.print(" ...");
delay(1000);
}
if(temperatureC > sensorMax){
// when temperature is above 30 degrees celcius blink red led
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(10); // wait for a second
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(10); // wait for a second
}else{
// when temperature is moderate blink green led
digitalWrite(ledPin1, HIGH); // turn the LED on (HIGH is the voltage level)
delay(500); // wait for a second
digitalWrite(ledPin1, LOW); // turn the LED off by making the voltage LOW
delay(500); // wait for a second
}
Serial.print("Temperature is: ");
delay(10);
Serial.println(sensor.getTempCByIndex(0));
ThingSpeak.setField(1,temperatureC); //send data to ThingSpeak
int x = ThingSpeak.writeFields( myChannelID, myApiKey);
if(x == 200){
Serial.println("Channel update successful. ");
Serial.println("Temperature " + String(temperatureC));
}
else{
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
delay(10);
}
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_NAME);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_NAME, WIFI_PWD, WIFI_CHANNEL);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}