Sebilangan besar petani menggunakan sebahagian besar tanah pertanian dan menjadi sangat sukar untuk dijangkau dan menjejaki setiap sudut tanah yang luas. Kadang-kadang ada kemungkinan percikan air tidak rata. Ini mengakibatkan tanaman berkualiti buruk yang seterusnya menyebabkan kerugian kewangan. Dalam senario ini Sistem Pengairan Pintar yang menggunakan teknologi IoT Terkini sangat membantu dan membawa kepada kemudahan pertanian.
The pengairan Smart System mempunyai peluang yang luas untuk mengautomasikan sistem pengairan yang lengkap. Di sini kita sedang membina Sistem Pengairan berasaskan IoT menggunakan Modul NodeMCU ESP8266 dan Sensor DHT11. Ia tidak hanya akan mengairi air secara automatik berdasarkan tahap kelembapan di dalam tanah, tetapi juga mengirim Data ke ThingSpeak Server untuk mengetahui keadaan tanah. Sistem ini terdiri daripada pam air yang akan digunakan untuk menaburkan air di tanah bergantung kepada keadaan persekitaran tanah seperti Kelembapan, Suhu dan Kelembapan.
Kami sebelumnya membina Sistem Pengairan Tanaman Automatik yang serupa yang menghantar makluman di telefon bimbit tetapi tidak di awan IoT. Selain itu, penggera Hujan dan litar pengesan kelembapan tanah juga dapat membantu membangun sistem Pengairan Pintar.
Sebelum memulakan, penting untuk diperhatikan bahawa tanaman yang berbeza memerlukan Kelembapan Tanah, Suhu dan Kelembapan yang berbeza. Oleh itu, dalam tutorial ini kita menggunakan tanaman yang memerlukan kelembapan tanah sekitar 50-55%. Oleh itu, apabila tanah kehilangan kelembapannya kurang dari 50% maka Motor pump akan dihidupkan secara automatik untuk menaburkan air dan ia akan terus menyiram air sehingga kelembapan naik hingga 55% dan selepas itu pam akan dimatikan. Data sensor akan dihantar ke ThingSpeak Server dalam selang waktu yang ditentukan sehingga dapat dipantau dari mana saja di dunia.
Komponen Diperlukan
- NodeMCU ESP8266
- Modul Sensor Kelembapan Tanah
- Modul Pam Air
- Modul Relay
- DHT11
- Wayar Penyambung
Anda boleh membeli semua komponen yang diperlukan untuk projek ini.
Rajah Litar
Gambarajah litar untuk Sistem Pengairan Pintar IoT ini diberikan di bawah:
Pengaturcaraan ESP8266 NodeMCU untuk Sistem Pengairan Automatik
Untuk memprogram modul NodeMCU ESP8266, hanya perpustakaan sensor DHT11 yang digunakan sebagai perpustakaan luaran. Sensor kelembapan memberikan output analog yang dapat dibaca melalui pin analog A8 ESP8266 NodeMCU. Oleh kerana NodeMCU tidak dapat memberikan voltan output lebih besar daripada 3.3V dari GPIO-nya, maka kami menggunakan modul geganti untuk menggerakkan pam motor 5V. Sensor Moisture dan DHT11 juga dikuasakan dari bekalan kuasa 5V luaran.
Kod lengkap dengan video berfungsi diberikan pada akhir tutorial ini, di sini kami menerangkan program untuk memahami aliran kerja projek.
Mulakan dengan memasukkan perpustakaan yang diperlukan.
#sertakan
Oleh kerana kami menggunakan ThingSpeak Server, Kunci API diperlukan untuk berkomunikasi dengan pelayan. Untuk mengetahui bagaimana kita dapat memperoleh Kunci API dari ThingSpeak, anda boleh mengunjungi artikel sebelumnya mengenai Pemantauan Suhu dan Kelembapan Langsung di ThingSpeak.
Rentetan apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Langkah seterusnya adalah menulis kelayakan Wi-Fi seperti SSID dan Kata Laluan.
const char * ssid = "CircuitDigest"; const char * lulus = "xxxxxxxxxxx";
Tentukan Pin Sensor DHT di mana DHT disambungkan dan Pilih jenis DHT.
#tentukan DHTPIN D3 DHT dht (DHTPIN, DHT11);
Output sensor kelembapan disambungkan ke Pin A0 dari ESP8266 NodeMCU. Dan pin motor disambungkan ke D0 of NodeMCU.
const int kelembapanPin = A0; const int motorPin = D0;
Kami akan menggunakan fungsi millis () untuk mengirim data setelah setiap selang waktu yang ditentukan di sini adalah 10 saat. The tunda () dielakkan kerana ia berhenti program untuk kelewatan ditakrifkan di mana pengawal mikro tidak boleh melakukan tugas-tugas lain. Ketahui lebih lanjut mengenai perbezaan antara kelewatan () dan milis () di sini.
selang panjang yang tidak ditandatangani = 10000; lama tidak ditandatangani sebelumnyaMillis = 0;
Tetapkan pin motor sebagai output, dan matikan motor pada mulanya. Mulakan bacaan sensor DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, RENDAH); // biarkan motor mati secara tidak aktif dht.begin ();
Cuba sambungkan Wi-Fi dengan SSID dan Kata Laluan yang diberikan dan tunggu sehingga Wi-Fi disambungkan dan jika disambungkan kemudian pergi ke langkah seterusnya.
WiFi.begin (ssid, lulus); sementara (WiFi.status ()! = WL_CONNECTED) { kelewatan (500); Cetakan bersiri ("."); } Serial.println (""); Serial.println ("WiFi disambungkan"); }
Tentukan masa semasa memulakan program dan simpan dalam pemboleh ubah untuk membandingkannya dengan masa yang berlalu.
arus panjang yang tidak ditandatanganiMillis = millis ();
Baca data suhu dan kelembapan dan simpan menjadi pemboleh ubah.
apungan h = dht.readHumidity (); apungan t = dht.readTemperature ();
Sekiranya DHT disambungkan dan ESP8266 NodeMCU dapat membaca bacaannya, teruskan ke langkah seterusnya atau kembali dari sini untuk memeriksa semula.
if (isnan (h) - isnan (t)) { Serial.println ("Gagal membaca dari sensor DHT!"); kembali; }
Baca bacaan kelembapan dari sensor dan cetak bacaannya.
moistPercentage = (100.00 - ((analogRead (moistPin) / 1023.00) * 100.00)); Serial.print ("Soil Moisture is ="); Serial.print (kelembapanPentensi); Serial.println ("%");
Sekiranya bacaan kelembapan berada di antara julat kelembapan tanah yang diperlukan maka matikan pam atau jika melebihi kelembapan yang diperlukan, hidupkan pam.
jika ( moistPercentage <50) { digitalWrite (motorPin, TINGGI); } jika ( moistPercentage > 50 && moistPercentage <55) { digitalWrite (motorPin, TINGGI); } jika ( moistPercentage > 56) { digitalWrite (motorPin, LOW); }
Sekarang selepas setiap 10 saat, panggil fungsi sendThingspeak () untuk menghantar data kelembapan, suhu dan kelembapan ke pelayan ThingSpeak.
if ((unsigned long) (currentMillis - sebelumnyaMillis)> = selang) { sendThingspeak (); sebelumnyaMillis = millis (); pelanggan.stop (); }
Dalam fungsi sendThingspeak () kami memeriksa apakah sistem disambungkan ke pelayan dan jika ya maka kami menyiapkan tali di mana kelembapan, suhu, pembacaan kelembapan ditulis dan tali ini akan dikirim ke pelayan ThingSpeak bersama dengan kunci API dan alamat pelayan.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& bidang1 ="; postStr + = Rentetan (kelembapanPersentase); postStr + = "& bidang2 ="; postStr + = Rentetan (t); postStr + = "& bidang3 ="; postStr + = Rentetan (h); postStr + = "\ r \ n \ r \ n";
Akhirnya data dihantar ke pelayan ThingSpeak menggunakan fungsi client.print () yang mengandungi kunci API, alamat pelayan dan rentetan yang disiapkan pada langkah sebelumnya.
client.print ("POST / kemas kini HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Sambungan: tutup \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded \ n"); client.print ("Panjang Kandungan:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Akhirnya ini adalah bagaimana data kelihatan di ThingSpeak Dashboard
Langkah terakhir ini menyelesaikan tutorial lengkap mengenai Sistem Pengairan Pintar berasaskan IoT. Perhatikan bahawa penting untuk mematikan motor ketika kelembapan tanah telah mencapai tahap yang diperlukan setelah air ditaburkan. Anda boleh membuat sistem yang lebih pintar yang boleh mengandungi kawalan yang berbeza untuk tanaman yang berbeza.
Sekiranya anda menghadapi sebarang masalah semasa melakukan projek ini, maka komen di bawah ini atau sampai ke forum kami untuk pertanyaan dan jawapan yang lebih relevan.
Cari video program dan demonstrasi lengkap untuk projek ini di bawah.