#include <DHT.h>
#include <ESP32Servo.h>
#include <WiFi.h>
#include <ThingSpeak.h>
#define DHT_SENSOR_PIN 2
#define DHT_SENSOR_TYPE DHT22
#define LDR_SENSOR_PIN 35
DHT dht_sensor(2, DHT22);
const float gama = 0.7;
const float rl10 = 50;
Servo myservo;
const int servoPin = 32;
int position=0;
int piezo=33;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* server="api.thingspeak.com";
WiFiClient client;
unsigned long myChannelNumber = 1;
const char * myWriteAPIKey = "T02ZNNXGSW9MH8TV";
void setup() {
Serial.begin(115200);
Serial.println(F("DHTxx test!"));
dht_sensor.begin();
myservo.attach(32);
pinMode(piezo,OUTPUT);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
if(WiFi.status() !=WL_CONNECTED){
Serial.print("Attempting to connect");
while(WiFi.status() !=WL_CONNECTED){
WiFi.begin(ssid,password);
delay(5000);
}
Serial.println("\nConnected");
}
float h=dht_sensor.readHumidity();
float t=dht_sensor.readTemperature();
int LDR = analogRead(LDR_SENSOR_PIN);
LDR = map(LDR, 4095, 0, 1024, 0);
float voltage = LDR / 1024.*5;
float resistance = 2000 * voltage / (1-voltage/5);
float lux = pow(rl10*1e3*pow(10,gama)/resistance,(1/gama));
Serial.print("Luminesensce = ");
Serial.println(lux);
if (isnan(h) || isnan(t)) {
Serial.println(F("No reading from DHT sensor!!!"));
}
else{
Serial.print("Humidity: ");
Serial.print(h);
Serial.print("%");
Serial.print(" | ");
Serial.print("Temperature: ");
Serial.print(t);
Serial.print("°C \n");
}
ThingSpeak.setField(1,t);
ThingSpeak.setField(2,h);
ThingSpeak.setField(3,lux);
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
if ((t>25)||(h<90)){
myservo.write(0);
delay(1000);
}
else if (lux>600){
myservo.write(0);
delay(1000);
}
else if ((t<25)||(h>90)){
myservo.write(90);
digitalWrite(piezo, HIGH);
delay(1000);
digitalWrite(piezo, LOW);
delay(1000);
}
else if (lux<600){
myservo.write(90);
digitalWrite(piezo, HIGH);
delay(1000);
digitalWrite(piezo, LOW);
delay(1000);
}
}