#include <WiFi.h>
#include "ThingSpeak.h"
#include "DHT.h"
// DHT sensor configuration
#define DHTPIN 26
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Ultrasonic sensor configuration
#define TRIG_PIN 6 // Pin connected to TRIG of ultrasonic sensor
#define ECHO_PIN 18 //
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2705249;
const char* myApiKey = "Q3TFKUTFJ38UJ2FA";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(115200);
dht.begin();
// Set ultrasonic sensor pins as output and input
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
// Connecting to Wi-Fi
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected!");
Serial.println("Local IP: " + String(WiFi.localIP()));
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
// Function to measure distance using ultrasonic sensor
float getDistance() {
// Clear the trigger pin
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
// Set trigger pin HIGH for 10 microseconds to send the ultrasonic pulse
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Measure the time it takes for the echo to return
long duration = pulseIn(ECHO_PIN, HIGH);
// Calculate the distance (speed of sound is 34300 cm/s)
float distance = duration * 0.034 / 2;
return distance;
}
void loop() {
// Read humidity and temperature from DHT22
float h = dht.readHumidity();
float t = dht.readTemperature();
// Read distance from ultrasonic sensor
float distance = getDistance();
// Set the fields for ThingSpeak
ThingSpeak.setField(1, t); // Temperature field
ThingSpeak.setField(2, h); // Humidity field
ThingSpeak.setField(3, distance); // Ultrasonic distance field
// Write the data to ThingSpeak
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
// Print the data to Serial Monitor
Serial.print("Temperature: ");
Serial.println(t);
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Distance (cm): ");
Serial.println(distance);
delay(3000); // Wait for 3 seconds before sending next set of data
}Loading
esp32-devkit-c-v4
esp32-devkit-c-v4