// Library
#include <WiFi.h>
#include <ThingSpeak.h>
// Sensor Ultrasonik
const int echo_PIN = 14;
const int triger_PIN = 12;
float Distance = 0;
float duration = 0;
// DHT
#include <DHT.h>
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Konfigurasi WiFi
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
// Konfigurasi ThingSpeak
const int myChannelNumber = 2591833;
const char* myApiKey = "BR6JUAENLGIQK54X";
const char* server = "api.thingspeak.com";
WiFiClient client;
void setup() {
Serial.begin(115200);
dht.begin();
pinMode(triger_PIN, OUTPUT);
pinMode(echo_PIN, INPUT);
// Menghubungkan ke WiFi
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("(Disconnected)");
}
Serial.println("(Connected)");
Serial.println("-----------------------");
// ~
WiFi.mode(WIFI_STA);
// Inisialisasi ThingSpeak
ThingSpeak.begin(client);
}
void loop() {
// Membaca data dari sensor ultrasonik
digitalWrite(triger_PIN,LOW);
delayMicroseconds(10);
digitalWrite(triger_PIN,HIGH);
duration = pulseIn(echo_PIN,HIGH);
Distance =( 0.017 * duration)/100;
ThingSpeak.setField(3, Distance);
// Membaca data dari DHT
float Temp = dht.readTemperature();
float Humidity = dht.readHumidity();
ThingSpeak.setField(1, Temp);
ThingSpeak.setField(2, Humidity);
int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
// Cetak ke serial monitor Wokwi
Serial.println("Suhu : " + String(Temp) + "°C");
Serial.println("Kelembapan : " + String(Humidity) + "%");
Serial.println("Jarak : " + String(Distance) + "m");
Serial.println("-----------------------");
// Mengecek apakah data sudah berhasil terkirim ke ThingSpeak
if (x == 200) {
Serial.println("[Data berhasil dikirim]");
} else {
Serial.println("[ERROR!]");
}
Serial.println("-----------------------");
delay(5000);
}