- Komponente potrebne
- Kružni dijagram
- Programiranje ESP8266 NodeMCU za sustav automatskog navodnjavanja
Većina poljoprivrednika koristi velike dijelove poljoprivrednog zemljišta i postaje vrlo teško doći do i pratiti svaki kutak velikih površina. Ponekad postoji mogućnost neravnomjernog prskanja vodom. To rezultira nekvalitetnim usjevima što dalje dovodi do financijskih gubitaka. U ovom je scenariju pametni sustav navodnjavanja koji koristi najnoviju IoT tehnologiju koristan i dovodi do jednostavnosti poljoprivrede.
Smart navodnjavanje sustav ima širok raspon automatizaciji kompletan sustav za navodnjavanje. Ovdje gradimo sustav navodnjavanja zasnovan na IoT-u pomoću ESP8266 NodeMCU modula i DHT11 senzora. Ne samo da će automatski navodnjavati vodu na temelju razine vlage u tlu, već će i slati podatke na ThingSpeak Server kako bi se pratilo stanje zemljišta. Sustav će se sastojati od vodene pumpe koja će se koristiti za prskanje vode po zemljištu, ovisno o stanju okoliša, poput vlage, temperature i vlažnosti.
Prethodno smo izgradili sličan sustav automatskog navodnjavanja biljaka koji šalje upozorenja na mobitel, ali ne i na IoT oblak. Osim toga, alarm za kišu i krug detektora vlage u tlu također mogu biti korisni u izgradnji pametnog sustava za navodnjavanje.
Prije početka, važno je napomenuti da različiti usjevi zahtijevaju različitu vlagu, temperaturu i vlažnost tla. Dakle, u ovom uputstvu koristimo takav usjev koji će zahtijevati vlagu tla od oko 50-55%. Dakle, kada tlo izgubi vlagu na manje od 50%, tada će se motorna pumpa automatski uključiti kako bi poškropila vodu i nastavit će prskati vodu sve dok vlaga ne naraste do 55%, a nakon toga pumpa će se isključiti. Podaci senzora bit će poslani na ThingSpeak Server u određenom vremenskom intervalu kako bi se mogli nadzirati s bilo kojeg mjesta na svijetu.
Komponente potrebne
- NodeMCU ESP8266
- Modul osjetnika vlage u tlu
- Modul pumpe za vodu
- Modul releja
- DHT11
- Spajanje žica
Možete kupiti sve komponente potrebne za ovaj projekt.
Kružni dijagram
Dijagram kruga za ovaj IoT sustav pametnog navodnjavanja dat je u nastavku:


Programiranje ESP8266 NodeMCU za sustav automatskog navodnjavanja
Za programiranje modula ESP8266 NodeMCU, samo se knjižnica senzora DHT11 koristi kao vanjska knjižnica. Senzor vlage daje analogni izlaz koji se može očitati kroz analogni pin A0 ESP8266 NodeMCU. Budući da NodeMCU ne može dati izlazni napon veći od 3,3 V sa svog GPIO, pa koristimo relejni modul za pogon 5 V motorne pumpe. Također se senzor vlage i DHT11 senzor napajaju iz vanjskog napajanja od 5V.
Kompletni kod sa radnim video zapisom dan je na kraju ovog vodiča, ovdje objašnjavamo program kako bismo razumjeli radni tok projekta.
Započnite s uključivanjem potrebne biblioteke.
#include
Budući da koristimo ThingSpeak Server, API ključ potreban je za komunikaciju s poslužiteljem. Da biste znali kako možemo dobiti API ključ od ThingSpeak, možete posjetiti prethodni članak o praćenju temperature i vlažnosti uživo na ThingSpeak.
Niz apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Sljedeći je korak upisivanje vjerodajnica za Wi-Fi poput SSID-a i lozinke.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definirajte pin DHT osjetnika na koji je povezan DHT i odaberite vrstu DHT.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Izlaz osjetnika vlage spojen je na pin A0 ESP8266 NodeMCU. I pin motora je povezan s D0 NodeMCU.
const int vlagaPin = A0; const int motorPin = D0;
Koristit ćemo funkciju millis () za slanje podataka nakon svakog definiranog vremenskog intervala, ovdje je 10 sekundi. Kašnjenje () se izbjegava jer se ne zaustavi program u određenom odgode gdje sklop ne može raditi druge poslove. Ovdje saznajte više o razlici između kašnjenja () i milisa ().
nepotpisani dugi interval = 10000; nepotpisano dugo previousMillis = 0;
Postavite iglu motora kao izlaznu i prvo ugasite motor. Pokrenite očitavanje senzora DHT11.
pinMode (motorPin, IZLAZ); digitalWrite (motorPin, LOW); // početno isključite motor dht.begin ();
Pokušajte povezati Wi-Fi s danim SSID-om i lozinkom i pričekajte da se Wi-Fi poveže, a ako je povezan, prijeđite na sljedeće korake.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { delay (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi povezan"); }
Definirajte trenutno vrijeme pokretanja programa i spremite ga u varijablu kako biste ga usporedili s proteklim vremenom.
nepotpisana duga strujaMillis = milis ();
Pročitajte podatke o temperaturi i vlažnosti i spremite ih u varijable.
plutajuće h = dht.readHumidity (); float t = dht.readTemperature ();
Ako je DHT povezan i ako ESP8266 NodeMCU može očitati očitanja, prijeđite na sljedeći korak ili se vratite odavde da biste ponovno provjerili.
if (isnan (h) - isnan (t)) { Serial.println ("Nije uspjelo očitavanje s DHT senzora!"); povratak; }
Očitajte očitanje vlage sa senzora i ispišite očitanje.
postotak vlage = (100,00 - ((analogRead (vlagaPin) / 1023,00) * 100,00)); Serial.print ("Vlaga tla je ="); Serial.print (postotak vlage); Serial.println ("%");
Ako je očitanje vlage između potrebnog raspona vlage u tlu, isključite crpku ili ako ona prelazi potrebnu vlagu, uključite crpku.
if (vlažnostProcent <50) { digitalWrite (motorPin, HIGH); } if (vlagaPercentage > 50 && vlagaPercentage <55) { digitalWrite (motorPin, HIGH); } if ( vlagaPercentage > 56) { digitalWrite (motorPin, LOW); }
Sada nakon svakih 10 sekundi nazovite funkciju sendThingspeak () za slanje podataka o vlažnosti, temperaturi i vlažnosti na ThingSpeak poslužitelj.
if ((nepotpisano dugo) (currentMillis - previousMillis)> = interval) { sendThingspeak (); prethodniMillis = milis (); client.stop (); }
U funkciji sendThingspeak () provjeravamo je li sustav povezan s poslužiteljem i ako je odgovor da, pripremamo niz u kojem je zapisano očitanje vlage, temperature, vlage i taj će se niz poslati na ThingSpeak poslužitelj zajedno s API ključem i adresom poslužitelja.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = Niz (vlagaProcent); postStr + = "& field2 ="; postStr + = Niz (t); postStr + = "& field3 ="; postStr + = Niz (h); postStr + = "\ r \ n \ r \ n";
Napokon se podaci šalju na ThingSpeak poslužitelj pomoću funkcije client.print () koja sadrži API ključ, adresu poslužitelja i niz koji je pripremljen u prethodnom koraku.
client.print ("POST / ažuriraj HTTP / 1.1 \ n"); client.print ("Domaćin: api.thingspeak.com \ n"); client.print ("Veza: zatvori \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Vrsta sadržaja: application / x-www-form-urlencoded \ n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Napokon, ovako izgledaju podaci na nadzornoj ploči ThingSpeak

Ovaj posljednji korak završava cjelovitu lekciju o sustavu pametnog navodnjavanja temeljenom na IoT-u. Imajte na umu da je važno isključiti motor kada vlaga tla dosegne potrebnu razinu nakon prskanja vodom. Možete napraviti pametniji sustav koji može sadržavati različitu kontrolu za različite usjeve.
Ako se suočavate s bilo kojim problemima tijekom izvođenja ovog projekta, komentirajte u nastavku ili potražite relevantnija pitanja i odgovore na našim forumima.
Kompletni program i demonstracijski videozapis za ovaj projekt pronađite u nastavku.
