/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
#include <WiFi.h>
#include "ThingSpeak.h"
#include <Adafruit_Sensor.h>
#define echoPin 12 // Pin D12 esp32 ke pin Echo Ultrasonik
#define trigPin 13 // pin D13 esp32 ke pin Trig Ultrasonik
const int DHT_PIN = 15;
const char* ssid = "Wokwi-GUEST";
const char* pw = "";
WiFiClient client;
unsigned long myChannelNumber = 1;
const char* myAPIKey = "RTK1OU1LQLEKJ5OX";
const char* server = "api.thingspeak.com";
unsigned long lastTime = 0;
unsigned long timerDelay = 30000;
float duration; // variable untuk gelombang suara
float distance; // variable untuk mengukur jarak
int temperatureC;
int humidity;
DHTesp dhtSensor;
void setup() {
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
dhtSensor.getPin();
WiFi.begin(ssid, pw);
while(WiFi.status() != WL_CONNECTED){
delay(100);
Serial.println(".");
}
Serial.println("WiFi terhubung");
Serial.println(WiFi.localIP());
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
}
void loop() {
temperatureC = dhtSensor.getTemperature();
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // sinyal gelombang suara
// menghitung nilai distance
distance = duration * 0.017;
Serial.println("Temperature C");
Serial.println(temperatureC);
humidity = dhtSensor.getHumidity();
Serial.println("Humidity %");
Serial.println(humidity);
Serial.println("Distance cm");
Serial.println(distance);
ThingSpeak.setField(1, temperatureC);
ThingSpeak.setField(2, humidity);
ThingSpeak.setField(3, distance);
int x = ThingSpeak.writeFields(myChannelNumber, myAPIKey);
if (x == 200){
Serial.println("Channel update berhasil");
} else {
Serial.println("Masalah dalam update channel, HTTP error code " + String(x));
}
}