/**
ESP32 + DHT22 + ThingSpeak Example using Wokwi
By IoT Frontier
*/
#include <WiFi.h>
#include <WiFi.h>
#include "DHTesp.h"
#include "ThingSpeak.h"
// Wi-Fi Credentials
const char* WIFI_NAME = "Wokwi-GUEST"; // Replace with your Wi-Fi SSID
const char* WIFI_PASSWORD = ""; // Replace with your Wi-Fi password (Wokwi-GUEST has no password)
// ThingSpeak Credentials
const int myChannelNumber = 2820767; // Replace with your ThingSpeak channel number
const char* myApiKey = "GJYYPK7Y8Z9XKEGW"; // Replace with your ThingSpeak API key
const char* server = "api.thingspeak.com"; // ThingSpeak server address
// DHT22 Sensor Pin
const int DHT_PIN = 15; // GPIO15 on ESP32 in Wokwi
DHTesp dhtSensor; // Create an instance of the DHTesp library
WiFiClient client; // Create a Wi-Fi client object
void setup() {
Serial.begin(115200); // Initialize serial communication
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Initialize the DHT22 sensor
// Connect to Wi-Fi
Serial.println("Connecting to WiFi...");
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting...");
}
Serial.println("WiFi Connected!");
Serial.println("Local IP Address: " + String(WiFi.localIP())); // Display local IP address
ThingSpeak.begin(client); // Initialize ThingSpeak
}
void loop() {
// Read temperature and humidity from DHT22
TempAndHumidity data = dhtSensor.getTempAndHumidity();
// Debugging: Print temperature and humidity to Serial Monitor
Serial.println("Temperature: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
// Send data to ThingSpeak
ThingSpeak.setField(1, data.temperature); // Set field 1 to temperature
ThingSpeak.setField(2, data.humidity); // Set field 2 to humidity
int responseCode = ThingSpeak.writeFields(myChannelNumber, myApiKey); // Write data to ThingSpeak
if (responseCode == 200) {
Serial.println("Data successfully sent to ThingSpeak!");
} else {
Serial.println("Failed to send data. HTTP error code: " + String(responseCode));
}
Serial.println("---"); // Separator for clarity
delay(15000); // Wait for 15 seconds (ThingSpeak rate limit)
}