#include <Arduino.h>
#include "DHT_Async.h"
#include <WiFi.h>
#include "ThingSpeak.h"
#define DHT_SENSOR_TYPE DHT_TYPE_22
static const int DHT_SENSOR_PIN = 32;
DHT_Async dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE);
const char* ssid = "Wokwi-GUEST"; // Write your SSID
const char* password = ""; // Write your WIFI password
WiFiClient client;
unsigned long Channel_ID = 3308053; //replace with your Channel ID
const char * API_key = "28K22LIY7EGRU9S1"; //replace with your API Key
static bool measure_environment(float *temperature, float *humidity)
{ static unsigned long measurement_timestamp = millis();
/* Measure once every four seconds. */
if (millis() - measurement_timestamp > 4000ul)
{ if (dht_sensor.measure(temperature, humidity))
{ measurement_timestamp = millis();
return (true);
}
}
return (false);
}
void setup()
{ Serial.begin(9600);
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client); // Initialize ThingSpeak
if(WiFi.status() != WL_CONNECTED)
{ Serial.print("Connecting...");
while(WiFi.status() != WL_CONNECTED)
{ WiFi.begin(ssid, password);
delay(5000);
}
Serial.println("\nConnected.");
}
}
void loop()
{ static float temperature = 0.0;
static float humidity = 0.0;
static unsigned long lastThingSpeakTime = 0;
int an;
// Read DHT sensor every 4 seconds
if (measure_environment(&temperature, &humidity))
{ Serial.print("T = ");
Serial.print(temperature, 1);
Serial.print(" deg. C, H = ");
Serial.print(humidity, 1);
Serial.print("% ");
an = analogRead(33);
Serial.print("Analog = ");
Serial.println(an);
}
// Send data to ThingSpeak every 20 seconds
if (millis() - lastThingSpeakTime >= 20000UL)
{ ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
ThingSpeak.setField(3, an);
int Data = ThingSpeak.writeFields(Channel_ID, API_key);
if (Data == 200)
Serial.println("Channel updated successfully!");
else
Serial.println("Problem updating channel. HTTP error code " + String(Data));
lastThingSpeakTime = millis();
}
}