Proyek ini bertujuan untuk membuat sistem monitoring kelembapan tanah yang dapat diakses secara real-time melalui aplikasi Blynk. Sistem ini sangat berguna dalam membantu kita memantau kondisi kelembapan tanah, khususnya untuk keperluan pertanian dan perkebunan, agar tanaman tetap dalam kondisi optimal.
Kelembapan tanah adalah salah satu faktor penting yang menentukan pertumbuhan tanaman. Jika tanah terlalu kering, tanaman akan kekurangan air dan dapat mengalami gangguan pertumbuhan. Sebaliknya, tanah yang terlalu basah juga bisa menyebabkan masalah, seperti akar yang busuk. Dengan menggunakan sensor kelembapan tanah yang terhubung ke modul ESP-01 dan Arduino, kita dapat memonitor kelembapan tanah secara real-time melalui aplikasi Blynk. Aplikasi ini akan memudahkan kita dalam mengontrol dan memastikan tanaman mendapatkan jumlah air yang tepat.
Dalam proyek ini, kita akan menggunakan beberapa komponen:
- Arduino sebagai otak dari sistem yang mengontrol pembacaan sensor kelembapan.
- ESP-01 sebagai modul WiFi untuk mengirim data kelembapan tanah ke aplikasi Blynk.
- Sensor Kelembapan Tanah yang berfungsi untuk mendeteksi tingkat kelembapan di dalam tanah.
- Aplikasi Blynk, yang berfungsi sebagai platform untuk menampilkan data kelembapan tanah secara real-time pada smartphone.
- Kabel dan Breadboard untuk menyambungkan setiap komponen pada rangkaian.
Cara Kerja Sistem
Sistem ini bekerja dengan mengambil data dari sensor kelembapan tanah, yang kemudian diproses oleh Arduino. Setelah itu, data kelembapan akan dikirim melalui modul ESP-01 ke aplikasi Blynk, yang memungkinkan kita melihat status kelembapan tanah kapan saja dan di mana saja melalui smartphone.
Jika kelembapan tanah berada di bawah batas tertentu, kita juga bisa mengonfigurasi sistem untuk memberikan notifikasi melalui aplikasi Blynk. Dengan demikian, kita akan mendapatkan peringatan untuk menyiram tanaman sebelum kelembapan mencapai tingkat yang terlalu rendah.
Langkah-langkah Rangkaian:
Koneksi Hardware:
- Hubungkan sensor kelembapan tanah ke Arduino. Biasanya, sensor kelembapan tanah memiliki tiga pin: VCC, GND, dan A0 (output analog).
- Sambungkan VCC ke 5V pada Arduino, GND ke GND Arduino, dan A0 ke pin analog A0 di Arduino.
- Hubungkan ESP-01 dengan Arduino melalui adaptor ESP-01 atau level shifter, dengan koneksi berikut:
- TX (ESP-01) ke RX (Arduino)
- RX (ESP-01) ke TX (Arduino)
- VCC ke 3.3V
- GND ke GND
Persiapan Blynk:
- Buat proyek baru di aplikasi Blynk.
- Pilih perangkat ESP8266 sebagai board (karena ESP-01 menggunakan chip ESP8266).
- Salin Auth Token yang diberikan oleh Blynk untuk digunakan dalam kode.
Kode Arduino:
Instal pustaka Blynk dan ESP8266 dengan cara masuk ke Library Manager di Arduino IDE, lalu cari dan instal pustaka Blynk dan ESP8266WiFi.
Source Code : Sensor Kelembapan Tanah Dengan ESP01 dan Arduino Blynk
#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;
}
}
Untuk Lebih jelasnya dapat lihat project di
wokwiDan untuk source Code dapat dilihat di
github
0 Komentar
Berikan Komentar yang bermanfaat dan sehat.