Ticker

10/recent/ticker-posts

Ad Code

Responsive Advertisement

Sensor Kelembapan Tanah Dengan ESP01 dan Arduino Blynk

 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:

  1. Arduino sebagai otak dari sistem yang mengontrol pembacaan sensor kelembapan.
  2. ESP-01 sebagai modul WiFi untuk mengirim data kelembapan tanah ke aplikasi Blynk.
  3. Sensor Kelembapan Tanah yang berfungsi untuk mendeteksi tingkat kelembapan di dalam tanah.
  4. Aplikasi Blynk, yang berfungsi sebagai platform untuk menampilkan data kelembapan tanah secara real-time pada smartphone.
  5. 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:

  1. 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

Rangkaian Sensor Kelembapan Tanah Dengan  ESP01 dan Arduino Blynk

  1. 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.
  2. 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 wokwi
Dan untuk source Code dapat dilihat di github

Posting Komentar

0 Komentar