Read temperature and humidity from DHT11 and send data to ThingSpeak cloud via WiFi.
Wire Color Connections:
Pin Configuration:
// DHT11 Temperature & Humidity to ThingSpeak
// Install: DHT sensor library, ThingSpeak library
#include <ESP8266WiFi.h>
#include <DHT.h>
#include <ThingSpeak.h>
#define DHTPIN D7 // DHT11 data pin (GPIO13)
#define DHTTYPE DHT11
// WiFi credentials
const char* ssid = \"YOUR_WIFI_SSID\";
const char* password = \"YOUR_WIFI_PASSWORD\";
// ThingSpeak credentials
unsigned long channelID = 1234567; // Your channel ID
const char* writeAPIKey = \"YOUR_API_KEY\";
DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;
void setup() {
Serial.begin(9600);
dht.begin();
Serial.println(\"Connecting to WiFi...\");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(\".\");
}
Serial.println(\"\");
Serial.println(\"WiFi connected\");
ThingSpeak.begin(client);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println(\"Failed to read DHT11!\");
delay(2000);
return;
}
Serial.print(\"Temp: \");
Serial.print(temperature);
Serial.print(\" C, Humidity: \");
Serial.println(humidity);
ThingSpeak.setField(1, temperature);
ThingSpeak.setField(2, humidity);
int status = ThingSpeak.writeFields(channelID, writeAPIKey);
if (status == 200) {
Serial.println(\"Data sent to ThingSpeak\");
} else {
Serial.print(\"ThingSpeak error: \");
Serial.println(status);
}
delay(20000); // ThingSpeak allows 1 update per 15 seconds
}