#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
#include <ESP32Servo.h>
#define TRIG_PIN 2 // ESP32 pin GIOP23 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN 4
Servo myservo;
const int DHT_PIN = 15;
const int LED_PIN = 13;
const int motor = 18;
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber =2565594 ;
const char* myApiKey = "TOT59J8GC99VBJR8";
const char* server = "api.thingspeak.com";
float duration_us, distance_cm;
DHTesp dhtSensor;
WiFiClient client;
void setup() {
Serial.begin(115200);
myservo.attach(5);
pinMode(TRIG_PIN, OUTPUT);
pinMode(18, OUTPUT);
// configure the echo pin to input mode
pinMode(ECHO_PIN, INPUT);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(LED_PIN, OUTPUT);
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
ThingSpeak.setField(2,data.temperature);
ThingSpeak.setField(3,data.humidity);
if (data.temperature > 35 || data.temperature < 12 || data.humidity > 70 || data.humidity < 40) {
digitalWrite(13, HIGH);
myservo.write(180);
ThingSpeak.setField(4,1);
}else{
digitalWrite(13, LOW);
myservo.write(0);
ThingSpeak.setField(4,0);
}
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration_us = pulseIn(ECHO_PIN, HIGH);
distance_cm = 0.017 * duration_us;
ThingSpeak.setField(1,distance_cm);
if (distance_cm < 30) {digitalWrite(18, LOW);
}else{digitalWrite(18, HIGH);
}
int x = ThingSpeak.writeFields(myChannelNumber,myApiKey);
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
if(x == 200){
Serial.println("Data pushed successfull");
}else{
Serial.println("Push error" + String(x));
}
Serial.println("---");
delay(10000);
}