Sebagian besar petani menggunakan sebagian besar lahan pertanian dan menjadi sangat sulit untuk menjangkau dan melacak setiap sudut lahan yang luas. Terkadang ada kemungkinan percikan air tidak merata. Hal ini mengakibatkan tanaman berkualitas buruk yang selanjutnya menyebabkan kerugian finansial. Dalam skenario ini Sistem Irigasi Cerdas menggunakan teknologi IoT terbaru sangat membantu dan mengarah pada kemudahan bertani.
The Cerdas irigasi Sistem memiliki cakupan luas untuk mengotomatisasi sistem irigasi lengkap. Di sini kami membangun Sistem Irigasi berbasis IoT menggunakan Modul NodeMCU ESP8266 dan Sensor DHT11. Ini tidak hanya akan mengairi air secara otomatis berdasarkan tingkat kelembaban di tanah tetapi juga mengirim Data ke Server ThingSpeak untuk melacak kondisi lahan. Sistem akan terdiri dari pompa air yang akan digunakan untuk memercikkan air ke tanah tergantung pada kondisi lingkungan tanah seperti Kelembaban, Suhu dan Kelembaban.
Kami sebelumnya membangun Sistem Irigasi Tanaman Otomatis serupa yang mengirimkan peringatan di seluler tetapi tidak di cloud IoT. Selain itu, sirkuit alarm hujan dan detektor kelembaban tanah juga dapat membantu dalam membangun sistem Irigasi Cerdas.
Sebelum memulai, penting untuk diperhatikan bahwa tanaman yang berbeda memerlukan Kondisi Kelembaban Tanah, Suhu dan Kelembaban yang berbeda. Jadi dalam tutorial ini kami menggunakan tanaman seperti itu yang membutuhkan kelembaban tanah sekitar 50-55%. Jadi ketika tanah kehilangan kelembabannya kurang dari 50% maka pompa motor akan menyala secara otomatis untuk memercikkan air dan akan terus memercikkan air sampai kelembaban naik hingga 55% dan setelah itu pompa akan dimatikan. Data sensor akan dikirim ke Server ThingSpeak dalam interval waktu yang ditentukan sehingga dapat dipantau dari mana saja di dunia.
Komponen Diperlukan
- NodeMCU ESP8266
- Modul Sensor Kelembaban Tanah
- Modul Pompa Air
- Modul Relai
- DHT11
- Menghubungkan Kabel
Anda dapat membeli semua komponen yang diperlukan untuk proyek ini.
Diagram Sirkuit
Diagram sirkuit untuk Sistem Irigasi Cerdas IoT ini diberikan di bawah ini:
Pemrograman ESP8266 NodeMCU untuk Sistem Irigasi Otomatis
Untuk memprogram modul ESP8266 NodeMCU, hanya pustaka sensor DHT11 yang digunakan sebagai pustaka eksternal. Sensor kelembaban memberikan keluaran analog yang dapat dibaca melalui pin analog NodeMCU ESP8266 A0. Karena NodeMCU tidak dapat memberikan tegangan keluaran lebih besar dari 3.3V dari GPIO-nya maka kami menggunakan modul relai untuk menggerakkan pompa motor 5V. Juga sensor Kelembaban dan sensor DHT11 didukung dari catu daya 5V eksternal.
Kode lengkap dengan video kerja diberikan di akhir tutorial ini, di sini kami menjelaskan program untuk memahami alur kerja proyek.
Mulailah dengan memasukkan perpustakaan yang diperlukan.
#include
Karena kami menggunakan Server ThingSpeak, Kunci API diperlukan untuk berkomunikasi dengan server. Untuk mengetahui bagaimana kita bisa mendapatkan API Key dari ThingSpeak Anda bisa mengunjungi artikel sebelumnya tentang Live Temperature and Humidity Monitoring di ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Langkah selanjutnya adalah menulis kredensial Wi-Fi seperti SSID dan Kata Sandi.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Tentukan Pin Sensor DHT di mana DHT terhubung dan Pilih jenis DHT.
# Tentukan DHTPIN D3 DHT dht (DHTPIN, DHT11);
Output sensor kelembaban terhubung ke Pin A0 dari ESP8266 NodeMCU. Dan pin motor terhubung ke D0 dari NodeMCU.
const int kelembabanPin = A0; const int motorPin = D0;
Kami akan menggunakan fungsi millis () untuk mengirim data setelah setiap interval waktu yang ditentukan di sini adalah 10 detik. The delay () dihindari karena berhenti program untuk penundaan didefinisikan di mana mikrokontroler tidak dapat melakukan tugas-tugas lainnya. Pelajari lebih lanjut tentang perbedaan antara delay () dan millis () di sini.
interval panjang unsigned = 10000; unsigned long beforeMillis = 0;
Atur pin motor sebagai output, dan matikan motor pada awalnya. Mulai pembacaan sensor DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // jauhkan motor pada awalnya dht.begin ();
Cobalah untuk menghubungkan Wi-Fi dengan SSID dan Kata Sandi yang diberikan dan tunggu sampai Wi-Fi terhubung dan jika terhubung kemudian lanjutkan ke langkah berikutnya.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi tersambung"); }
Tentukan waktu saat ini untuk memulai program dan simpan dalam variabel untuk membandingkannya dengan waktu yang telah berlalu.
currentMillis panjang unsigned = millis ();
Membaca data suhu dan kelembapan dan menyimpannya ke dalam variabel.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Jika DHT terhubung dan ESP8266 NodeMCU dapat membaca bacaan, lanjutkan ke langkah berikutnya atau kembali dari sini untuk memeriksa lagi.
if (isnan (h) - isnan (t)) { Serial.println ("Gagal membaca dari sensor DHT!"); kembali; }
Baca pembacaan kelembaban dari sensor dan cetak pembacaan.
MoisturePercentage = (100.00 - ((analogRead (moisturePin) / 1023.00) * 100.00)); Serial.print ("Kelembaban Tanah ="); Serial.print (MoisturePercentage); Serial.println ("%");
Jika pembacaan kelembaban berada di antara kisaran kelembaban tanah yang dibutuhkan maka matikan pompa atau jika melebihi kelembaban yang dibutuhkan maka hidupkan pompa.
if (moisturePercentage <50) { digitalWrite (motorPin, HIGH); } if (moisturePercentage> 50 && moisturePercentage <55) { digitalWrite (motorPin, HIGH); } if (moisturePercentage> 56) { digitalWrite (motorPin, LOW); }
Sekarang setelah setiap 10 detik panggil fungsi sendThingspeak () untuk mengirim data kelembaban, suhu dan kelembaban ke server ThingSpeak.
if ((unsigned long) (currentMillis - beforeMillis)> = interval) { sendThingspeak (); PreviousMillis = millis (); client.stop (); }
Dalam fungsi sendThingspeak () kami memeriksa apakah sistem terhubung ke server dan jika ya maka kami menyiapkan string di mana kelembaban, suhu, pembacaan kelembaban ditulis dan string ini akan dikirim ke server ThingSpeak bersama dengan kunci API dan alamat server.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (moisturePercentage); postStr + = "& field2 ="; postStr + = String (t); postStr + = "& field3 ="; postStr + = String (h); postStr + = "\ r \ n \ r \ n";
Akhirnya data dikirim ke server ThingSpeak menggunakan fungsi client.print () yang berisi kunci API, alamat server dan string yang disiapkan pada langkah sebelumnya.
client.print ("POST / perbarui HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Sambungan: tutup \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Jenis-Konten: application / x-www-form-urlencoded \ n"); client.print ("Panjang-Konten:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Terakhir, seperti inilah tampilan data di ThingSpeak Dashboard
Langkah terakhir ini melengkapi tutorial lengkap Sistem Irigasi Cerdas berbasis IoT. Ingatlah bahwa penting untuk mematikan motor saat kelembapan tanah telah mencapai tingkat yang dibutuhkan setelah penyiraman air. Anda dapat membuat sistem yang lebih cerdas yang dapat berisi kontrol berbeda untuk berbagai tanaman.
Jika Anda menghadapi masalah apa pun saat melakukan proyek ini, beri komentar di bawah atau kunjungi forum kami untuk pertanyaan yang lebih relevan dan jawaban mereka.
Temukan program lengkap dan Video demonstrasi untuk proyek ini di bawah.