- Súčasti sú povinné
- Schéma zapojenia
- Programovanie ESP8266 NodeMCU pre automatický zavlažovací systém
Väčšina poľnohospodárov využíva veľké časti poľnohospodárskej pôdy a je veľmi ťažké dosiahnuť a sledovať každý roh veľkej pôdy. Niekedy existuje možnosť nerovnomerného postriekania vodou. To vedie k nekvalitným plodinám, čo ďalej vedie k finančným stratám. V tomto scenári je inteligentný zavlažovací systém využívajúci najnovšiu technológiu IoT užitočný a vedie k ľahkému poľnohospodárstvu.
Inteligentný zavlažovací systém má široké pole pôsobnosti pre automatizáciu celý zavlažovací systém. Tu budujeme zavlažovací systém založený na IoT, ktorý využíva modul NodeMCU ESP8266 a snímač DHT11. Nielenže automaticky zavlažuje vodu na základe úrovne vlhkosti v pôde, ale tiež odosiela údaje na server ThingSpeak, aby sledoval stav pôdy. Systém bude pozostávať z vodného čerpadla, ktoré sa bude používať na rozstrekovanie vody na pevninu v závislosti od stavu prostredia v krajine, ako je vlhkosť, teplota a vlhkosť.
Predtým sme vytvorili podobný systém automatického zavlažovania rastlín, ktorý odosiela výstrahy na mobilné zariadenia, ale nie na cloud IoT. Okrem toho môže byť pri stavbe systému inteligentného zavlažovania užitočný aj dažďový alarm a obvod detektora pôdnej vlhkosti.
Pred začatím je dôležité si uvedomiť, že rôzne plodiny vyžadujú rozdielnu vlhkosť, teplotu a vlhkosť pôdy. V tomto návode teda používame takú plodinu, ktorá bude vyžadovať pôdnu vlhkosť asi 50 - 55%. Takže keď pôda stratí svoju vlhkosť na menej ako 50%, potom sa automaticky zapne motorové čerpadlo, aby pokropila vodu, a bude pokropiť vodou, kým vlhkosť nestúpne na 55% a potom sa čerpadlo nevypne. Údaje zo senzora sa budú odosielať na server ThingSpeak v stanovenom časovom intervale, aby bolo možné ich monitorovať odkiaľkoľvek na svete.
Súčasti sú povinné
- NodeMCU ESP8266
- Modul snímača pôdnej vlhkosti
- Modul vodného čerpadla
- Reléový modul
- DHT11
- Pripojenie drôtov
Môžete si kúpiť všetky komponenty potrebné pre tento projekt.
Schéma zapojenia
Schéma zapojenia tohto inteligentného zavlažovacieho systému IoT je uvedená nižšie:
Programovanie ESP8266 NodeMCU pre automatický zavlažovací systém
Na programovanie modulu ESP8266 NodeMCU sa ako externá knižnica používa iba knižnica senzorov DHT11. Senzor vlhkosti poskytuje analógový výstup, ktorý je možné načítať cez analógový pin A0 ESP8266 NodeMCU. Pretože NodeMCU nemôže dať výstupné napätie väčšie ako 3,3 V zo svojho GPIO, používame na pohon 5V motorového čerpadla reléový modul. Tiež snímač vlhkosti a snímač DHT11 sú napájané z externého zdroja napájania 5 V.
Kompletný kód s pracovným videom je uvedený na konci tohto tutoriálu, tu vysvetľujeme program, aby sme pochopili pracovný tok projektu.
Začnite zahrnutím potrebnej knižnice.
#include
Pretože používame server ThingSpeak, je na komunikáciu so serverom potrebný kľúč API. Ak sa chcete dozvedieť, ako môžeme získať kľúč API od spoločnosti ThingSpeak, navštívte predchádzajúci článok o sledovaní teploty a vlhkosti v reálnom čase na serveri ThingSpeak.
Reťazec apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Ďalším krokom je napísanie poverení Wi-Fi, ako je SSID a heslo.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definujte pin snímača DHT, kde je pripojený DHT, a zvoľte typ DHT.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Výstup snímača vlhkosti je pripojený k vývodu A0 ESP8266 NodeMCU. A pin motora je pripojený k D0 NodeMCU.
konštantná vlhkosťPin = A0; const int motorPin = D0;
Na odoslanie údajov použijeme funkciu millis () po každom definovanom časovom intervale, ktorý je 10 sekúnd. Delay () je vylúčené, pretože zastaví program po stanovenú meškanie, kedy mikrokontrolér nemôže robiť iné úlohy. Viac informácií o rozdieloch medzi delay () a millis () sa dozviete tu.
nepodpísaný dlhý interval = 10 000; bez znamienka dlho previousMillis = 0;
Nastavte pin motora na výstup a najskôr motor vypnite. Spustite čítanie snímača DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // vypnúť motor pôvodne dht.begin ();
Pokúste sa pripojiť Wi-Fi s daným SSID a heslom a počkajte, kým sa Wi-Fi pripojí, a ak je pripojené, pokračujte ďalšími krokmi.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { oneskorenie (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi pripojené"); }
Definujte aktuálny čas spustenia programu a uložte ho do premennej, aby ste ho porovnali s uplynulým časom.
nepodpísaný dlhý prúd Millis = millis ();
Prečítajte si údaje o teplote a vlhkosti a uložte ich do premenných.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Ak je pripojené DHT a ESP8266 NodeMCU je schopný čítať namerané hodnoty, pokračujte ďalším krokom alebo sa vráťte odtiaľ a skontrolujte to znova.
if (isnan (h) - isnan (t)) { Serial.println ("Nepodarilo sa načítať zo senzora DHT!"); návrat; }
Prečítajte si nameranú hodnotu vlhkosti zo senzora a vytlačte nameranú hodnotu.
vlhkostPercenta = (100,00 - ((analogRead (vlhkostPin) / 1023,00) * 100,00)); Serial.print ("Pôdna vlhkosť je ="); Serial.print (vlhkosťPercentá); Serial.println ("%");
Ak je hodnota vlhkosti v rozmedzí medzi požadovaným rozsahom vlhkosti pôdy, potom čerpadlo vypnite alebo ak prekročí požadovanú vlhkosť, zapnite čerpadlo.
if ( vlhkostPercenta <50) { digitalWrite (motorPin, VYSOKE); } ak ( vlhkostPercentage > 50 && vlhkostPocita <55) { digitalWrite (motorPin, HIGH); } if ( vlhkostPercentna > 56) { digitalWrite (motorPin, LOW); }
Teraz každých 10 sekúnd zavolajte funkciu sendThingspeak () a pošlite údaje o vlhkosti, teplote a vlhkosti na server ThingSpeak.
if ((unsigned long) (currentMillis - previousMillis)> = interval) { sendThingspeak (); previousMillis = millis (); client.stop (); }
Vo funkcii sendThingspeak () skontrolujeme, či je systém pripojený k serveru a ak áno, pripravíme reťazec, kde je zapísaná vlhkosť, teplota, vlhkosť a tento reťazec bude odoslaný na server ThingSpeak spolu s kľúčom API a adresou servera.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& pole1 ="; postStr + = String (vlhkostPercenta); postStr + = "& pole2 ="; postStr + = Reťazec (t); postStr + = "& field3 ="; postStr + = reťazec (h); postStr + = "\ r \ n \ r \ n";
Nakoniec sa dáta odošlú na server ThingSpeak pomocou funkcie client.print (), ktorá obsahuje kľúč API, adresu servera a reťazec, ktorý je pripravený v predchádzajúcom kroku.
client.print ("POST / aktualizácia HTTP / 1.1 \ n"); client.print ("Hostiteľ: api.thingspeak.com \ n"); client.print ("Pripojenie: zavrieť \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Typ obsahu: application / x-www-form-urlencoded \ n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Nakoniec takto vyzerajú údaje na informačnom paneli ThingSpeak
Týmto posledným krokom je ukončený kompletný kurz inteligentného zavlažovacieho systému založeného na IoT. Upozorňujeme, že je dôležité vypnúť motor, keď vlhkosť pôdy po postriekaní vodou dosiahne požadovanú úroveň. Môžete vytvoriť inteligentnejší systém, ktorý môže obsahovať rôzne kontroly pre rôzne plodiny.
Ak pri realizácii tohto projektu narazíte na nejaké problémy, komentujte nižšie alebo sa obráťte na naše fóra, kde nájdete relevantnejšie otázky a odpovede na ne.
Nájsť kompletný program a demonštračné video pre tento projekt nižšie.