#define BLYNK_TEMPLATE_ID "TMPL6SjS-w3Fy"
#define BLYNK_TEMPLATE_NAME "Sensor Kelembapan"
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "xxxxxxxxxxxxxxxxx"; // Token Blynk
char ssid[] = "H4nk"; // Nama WiFi
char pass[] = "xxxxxxxxxxxx"; // Password WiFi
const int sensorPin = A0; // Pin sensor kelembapan tanah
BlynkTimer timer; // Timer untuk pengecekan koneksi
bool lastWiFiStatus = false; // Status koneksi WiFi terakhir
bool lastBlynkStatus = false; // Status koneksi Blynk terakhir
void setup() {
Serial.begin(115200);
connectToWiFiAndBlynk(); // Fungsi koneksi awal
pinMode(sensorPin, INPUT);
// Atur timer untuk menjalankan fungsi pembacaan sensor secara berkala
timer.setInterval(1000L, sendSensorData); // Setiap 1 detik
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
connectToWiFiAndBlynk(); // Rekoneksi jika WiFi terputus
} else if (!Blynk.connected()) {
connectToWiFiAndBlynk(); // Rekoneksi jika Blynk terputus
}
Blynk.run();
timer.run(); // Jalankan timer untuk fungsi pembacaan sensor
checkConnectionStatus(); // Cek dan tampilkan status koneksi
}
// Fungsi untuk menghubungkan ke WiFi dan Blynk
void connectToWiFiAndBlynk() {
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Menghubungkan ke WiFi...");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi Terhubung");
}
if (!Blynk.connected()) {
Serial.println("Menghubungkan ke Blynk...");
Blynk.config(auth);
Blynk.connect(); // Menyambungkan ke server Blynk
if (Blynk.connected()) {
Blynk.syncAll(); // Sinkronisasi data Blynk jika koneksi berhasil
Serial.println("Blynk Terhubung dan Data Tersinkronisasi");
}
}
}
// Fungsi untuk membaca data sensor dan mengirim ke Blynk
void sendSensorData() {
if (Blynk.connected()) { // Hanya kirim data jika terhubung ke Blynk
int kelembapan = analogRead(sensorPin);
int persentaseKelembapan = map(kelembapan, 1023, 0, 0, 100); // Kalibrasi sesuai sensor
Blynk.virtualWrite(V1, kelembapan); // Kirim data ke Virtual Pin V1
Serial.print("Kelembapan: ");
Serial.print(kelembapan);
Serial.print(" %");
Serial.print(" | Persentase Kelembapan : ");
Serial.print(persentaseKelembapan);
Serial.println(" %");
} else {
Serial.println("Tidak terhubung ke Blynk, data tidak terkirim.");
}
}
// Fungsi untuk memeriksa dan menampilkan status koneksi WiFi dan Blynk
void checkConnectionStatus() {
bool currentWiFiStatus = (WiFi.status() == WL_CONNECTED);
bool currentBlynkStatus = Blynk.connected();
// Cek perubahan status koneksi WiFi
if (currentWiFiStatus != lastWiFiStatus) {
if (currentWiFiStatus) {
Serial.println("Status WiFi: Terhubung");
} else {
Serial.println("Status WiFi: Terputus");
}
lastWiFiStatus = currentWiFiStatus;
}
// Cek perubahan status koneksi Blynk
if (currentBlynkStatus != lastBlynkStatus) {
if (currentBlynkStatus) {
Serial.println("Status Blynk: Terhubung");
} else {
Serial.println("Status Blynk: Terputus");
}
lastBlynkStatus = currentBlynkStatus;
}
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
chip1:GND
chip1:VCC
chip1:A0
esp1:GND
esp1:TX
esp1:GPIO2
esp1:CH_PD
esp1:GPIO0
esp1:RESET
esp1:RX
esp1:VCC
r1:1
r1:2
r2:1
r2:2
led1:A
led1:C
r3:1
r3:2