Večina kmetov uporablja velike dele kmetijskih zemljišč, zato je zelo težko doseči in izslediti vsak kotiček velikih zemljišč. Včasih obstaja možnost neenakomernega škropljenja vode. Posledica tega so slabe kakovosti pridelkov, kar nadalje vodi v finančne izgube. V tem primeru je pametni namakalni sistem, ki uporablja najnovejšo IoT tehnologijo, koristen in vodi k enostavnemu kmetovanju.
Smart namakalni sistem ima veliko možnosti, da avtomatizirati celoten namakalni sistem. Tu gradimo namakalni sistem, ki temelji na IoT, z uporabo modula ESP8266 NodeMCU in senzorja DHT11. Vode ne bo samo samodejno namakal glede na raven vlage v tleh, temveč bo podatke poslal tudi na strežnik ThingSpeak, da bo sledil stanju na kopnem. Sistem bo sestavljen iz vodne črpalke, ki se bo uporabljala za škropljenje vode po zemlji, odvisno od stanja okolja, kot so vlaga, temperatura in vlažnost.
Pred tem smo zgradili podoben sistem za samodejno namakanje rastlin, ki pošilja opozorila na mobilni napravi, ne pa tudi na oblaku IoT. Poleg tega lahko alarmni sistem za dež in detektor vlage v tleh pomagata tudi pri izdelavi pametnega namakalnega sistema.
Pred začetkom je pomembno opozoriti, da različni posevki potrebujejo različno vlago, temperaturo in vlažnost tal. Torej v tej vadnici uporabljamo tak pridelek, ki bo zahteval vlago v tleh približno 50-55%. Torej, ko tla izgubijo vlago na manj kot 50%, se motorna črpalka samodejno vklopi za škropljenje vode in bo še naprej škropila vodo, dokler vlaga ne naraste na 55% in nato črpalka izklopi. Podatki senzorja bodo poslani strežniku ThingSpeak v določenem časovnem intervalu, tako da jih je mogoče nadzorovati od koder koli na svetu.
Potrebne komponente
- NodeMCU ESP8266
- Modul senzorja vlage v tleh
- Modul vodne črpalke
- Relejni modul
- DHT11
- Povezovanje žic
Lahko kupite vse komponente, potrebne za ta projekt.
Shema vezja
Shema vezja za ta pametni namakalni sistem IoT je podana spodaj:
Programiranje ESP8266 NodeMCU za sistem samodejnega namakanja
Za programiranje modula ESP8266 NodeMCU se kot zunanja knjižnica uporablja samo knjižnica senzorjev DHT11. Senzor vlage daje analogni izhod, ki ga je mogoče prebrati preko analognega zatiča E0 ESP8266 NodeMCU. Ker NodeMCU ne more oddajati izhodne napetosti, večje od 3,3 V iz svojega GPIO, zato za pogon 5 V motorne črpalke uporabljamo relejni modul. Tudi senzor vlage in senzor DHT11 se napajata iz zunanjega 5V napajalnika.
Popolna koda z delujočim videoposnetkom je podana na koncu te vadnice, tukaj razlagamo program za razumevanje delovnega toka projekta.
Začnite z vključitvijo potrebne knjižnice.
#include
Ker uporabljamo strežnik ThingSpeak, je ključ API potreben za komunikacijo s strežnikom. Če želite izvedeti, kako lahko dobimo API-ključ od ThingSpeak, lahko obiščete prejšnji članek o spremljanju temperature in vlažnosti v živo na ThingSpeak.
Niz apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Naslednji korak je vpis poverilnic za Wi-Fi, kot sta SSID in geslo.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Določite zatič senzorja DHT, kamor je povezan DHT, in izberite vrsto DHT.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Izhod senzorja vlage je priključen na pin A0 ESP8266 NodeMCU. In zatič motorja je povezan z D0 NodeMCU.
const int vlagaPin = A0; const int motorPin = D0;
Uporabili bomo funkcijo milis () za pošiljanje podatkov po vsakem določenem časovnem intervalu, ki znaša 10 sekund. Zamudo () , da ne pride, ker se ne ustavi program za določeno zamudo, kjer mikrokontroler ne more storiti druge naloge. Več o razliki med zamudo () in milisami () preberite tukaj.
nepodpisan dolg interval = 10000; unsigned long previousMillis = 0;
Nastavite zatič motorja kot izhod in motor najprej zavrtite. Zaženite odčitavanje senzorja DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // motor najprej izključi dht.begin ();
Poskusite povezati Wi-Fi z danim SSID in geslom in počakajte, da se Wi-Fi poveže. Če je povezan, pojdite na naslednje korake.
WiFi.begin (ssid, pass); medtem ko (WiFi.status ()! = WL_CONNECTED) { zamuda (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi povezan"); }
Določite trenutni čas zagona programa in ga shranite v spremenljivko, da ga primerjate s pretečenim časom.
nepodpisan dolgi tokMillis = milis ();
Preberite podatke o temperaturi in vlažnosti in jih shranite v spremenljivke.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Če je DHT povezan in ESP8266 NodeMCU lahko bere odčitke, nadaljujte na naslednji korak ali se vrnite od tu, da ponovno preverite.
if (isnan (h) - isnan (t)) { Serial.println ("Ni bilo mogoče prebrati s senzorja DHT!"); vrnitev; }
Preberite odčitek vlage s senzorja in natisnite odčitek.
vlažnostPercentage = (100,00 - ((analogRead (vlagaPin) / 1023,00) * 100,00)); Serial.print ("Vlaga v tleh je ="); Serial.print (vlažnostProcent); Serial.println ("%");
Če je odčitek vlage med zahtevanim razponom vlage v tleh, črpalko izklopite, če pa presega zahtevano vlago, vklopite črpalko.
if (vlažnostPercentage <50) { digitalWrite (motorPin, HIGH); } if (vlažnostPercentage> 50 && vlagaPercentage <55) { digitalWrite (motorPin, HIGH); } if (vlažnostPercentage> 56) { digitalWrite (motorPin, LOW); }
Zdaj po vsakih 10 sekundah pokličite funkcijo sendThingspeak (), da podatke o vlagi, temperaturi in vlažnosti pošljete na strežnik ThingSpeak.
if ((nepodpisano dolgo) (currentMillis - previousMillis)> = interval) { sendThingspeak (); previousMillis = milis (); client.stop (); }
V funkciji sendThingspeak () preverimo, ali je sistem povezan s strežnikom, in če je odgovor pritrdilen, pripravimo niz, v katerem je zapisano odčitavanje vlage, temperature, vlage in ta niz bo poslan skupaj s ključem API in naslovom strežnika na ThingSpeak.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = niz (vlažnostProcent); postStr + = "& field2 ="; postStr + = niz (t); postStr + = "& field3 ="; postStr + = niz (h); postStr + = "\ r \ n \ r \ n";
Na koncu se podatki pošljejo na strežnik ThingSpeak s pomočjo funkcije client.print (), ki vsebuje ključ API, naslov strežnika in niz, ki je pripravljen v prejšnjem koraku.
client.print ("POST / posodobitev HTTP / 1.1 \ n"); client.print ("Gostitelj: api.thingspeak.com \ n"); client.print ("Povezava: zapri \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Vrsta vsebine: application / x-www-form-urlencoded \ n"); client.print ("Dolžina vsebine:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Končno tako izgledajo podatki na nadzorni plošči ThingSpeak
V tem zadnjem koraku je končana celotna vadnica o pametnem namakalnem sistemu, ki temelji na IoT. Pomembno je, da izklopite motor, ko vlaga tal doseže zahtevano raven po posipanju vode. Lahko naredite bolj pameten sistem, ki lahko vsebuje različne kontrole za različne pridelke.
Če se med izvajanjem tega projekta soočate s kakršnimi koli težavami, komentirajte spodaj ali poiščite ustreznejša vprašanja in odgovore na naše forume.
Spodaj poiščite celoten program in predstavitveni video za ta projekt.