#include <ThingSpeak.h> // ThingSpeak library
#include <DHT.h> // DHT sensor library
// ThingSpeak settings
unsigned long myChannelNumber = 2805623; // Replace with your ThingSpeak channel number
const char* myWriteAPIKey = "X6ICWS7J3M2X6Z80"; // Replace with your ThingSpeak Write API Key
// DHT sensor settings
#define DHT_PIN 23 // DHT22 data pin connected to GPIO 23
#define DHT_TYPE DHT22 // DHT sensor type (DHT22)
DHT dht(DHT_PIN, DHT_TYPE);
WiFiClient client; // Wi-Fi client for ThingSpeak
void setup() {
Serial.begin(115200);
// Initialize DHT sensor
dht.begin();
// Connect to Wi-Fi
Serial.println("Connecting to Wi-Fi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("\nWi-Fi connected");
// Initialize ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Read temperature and humidity from DHT sensor
float temperature = dht.readTemperature(); // Read temperature in Celsius
float humidity = dht.readHumidity(); // Read humidity
// Check if any reads failed and exit early (to try again)
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
delay(2000);
return;
}
// Print temperature and humidity
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.println(" %");
// Send data to ThingSpeak
if (WiFi.status() == WL_CONNECTED) {
int field1 = temperature; // Field 1 for temperature
int field2 = humidity; // Field 2 for humidity
int result = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey, field1, field2);
if (result == 200) {
Serial.println("Data sent to ThingSpeak successfully.");
} else {
Serial.print("Error sending data to ThingSpeak. HTTP error code: ");
Serial.println(result);
}
} else {
Serial.println("Wi-Fi disconnected. Reconnecting...");
WiFi.begin(ssid, password);
}
// Delay before next ThingSpeak update (15 seconds minimum)
delay(15000);
}