- Požadované komponenty
- Kruhový diagram
- Programování ESP8266 NodeMCU pro automatický zavlažovací systém
Většina zemědělců využívá velké části zemědělské půdy a je velmi obtížné dosáhnout a sledovat každý roh velkých pozemků. Někdy existuje možnost nerovnoměrného rozstřikování vody. Výsledkem jsou nekvalitní plodiny, které dále vedou k finančním ztrátám. V tomto scénáři je užitečný inteligentní zavlažovací systém využívající nejnovější technologii IoT, který vede ke snadnému zemědělství.
Inteligentní zavlažovací systém má široké pole působnosti pro automatizaci celý zavlažovací systém. Zde stavíme zavlažovací systém založený na IoT pomocí modulu ESP8266 NodeMCU a snímače DHT11. Nejen, že automaticky zavlažuje vodu na základě úrovně vlhkosti v půdě, ale také odesílá data na server ThingSpeak, aby sledoval stav půdy. Systém bude sestávat z vodního čerpadla, které bude používáno k rozstřikování vody na pevninu v závislosti na podmínkách prostředí, jako je vlhkost, teplota a vlhkost.
Dříve jsme stavěli podobný systém automatického zavlažování rostlin, který odesílá upozornění na mobilní zařízení, ale ne na cloud IoT. Kromě toho může být při budování systému inteligentního zavlažování užitečný také alarm deště a obvod detektoru půdní vlhkosti.
Před spuštěním je důležité si uvědomit, že různé plodiny vyžadují různé podmínky vlhkosti, teploty a vlhkosti půdy. V tomto tutoriálu tedy používáme takovou plodinu, která bude vyžadovat vlhkost půdy asi 50-55%. Když tedy půda ztratí vlhkost na méně než 50%, pak se motorové čerpadlo automaticky zapne, aby pokropilo vodu, a bude pokropit vodu, dokud vlhkost nezvýší na 55% a poté se čerpadlo vypne. Data ze senzoru budou odeslána na server ThingSpeak ve stanoveném časovém intervalu, aby je bylo možné sledovat odkudkoli na světě.
Požadované komponenty
- NodeMCU ESP8266
- Modul snímače vlhkosti půdy
- Modul vodního čerpadla
- Reléový modul
- DHT11
- Připojení vodičů
Můžete si koupit všechny komponenty potřebné pro tento projekt.
Kruhový diagram
Schéma zapojení tohoto inteligentního zavlažovacího systému IoT je uvedeno níže:
Programování ESP8266 NodeMCU pro automatický zavlažovací systém
Pro programování modulu ESP8266 NodeMCU se jako externí knihovna používá pouze knihovna senzorů DHT11. Senzor vlhkosti poskytuje analogový výstup, který lze číst přes analogový pin A0 ESP8266 NodeMCU. Vzhledem k tomu, že NodeMCU nemůže poskytnout výstupní napětí větší než 3,3 V ze svého GPIO, používáme k ovládání 5V motorového čerpadla reléový modul. Také čidlo vlhkosti a čidlo DHT11 jsou napájeny z externího zdroje 5V.
Kompletní kód s pracovním videem je uveden na konci tohoto tutoriálu, zde vysvětlujeme program, abychom porozuměli pracovnímu toku projektu.
Začněte včetně potřebné knihovny.
#zahrnout
Protože používáme server ThingSpeak, je klíč API nezbytný pro komunikaci se serverem. Chcete-li vědět, jak můžeme získat klíč API od společnosti ThingSpeak, můžete navštívit předchozí článek o monitorování živé teploty a vlhkosti na webu ThingSpeak.
Řetězec apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Dalším krokem je napsání pověření Wi-Fi, jako je SSID a heslo.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definujte kolík snímače DHT, kde je připojen DHT, a vyberte typ DHT.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Výstup snímače vlhkosti je připojen k pinu A0 ESP8266 NodeMCU. A pin motoru je připojen k D0 NodeMCU.
const int vlhkostPin = A0; const int motorPin = D0;
Budeme používat funkci millis () k odesílání dat po každém definovaném časovém intervalu, zde je to 10 sekund. Delay () je vyloučeno, protože zastaví program po stanovenou zpoždění, kdy mikrokontrolér nemůže dělat jiné úkoly. Další informace o rozdílech mezi delay () a millis () naleznete zde.
dlouhý interval bez znaménka = 10 000; bez znaménka long previousMillis = 0;
Nastavte kolík motoru jako výstup a nejprve motor vypněte. Spusťte odečet snímače DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // nechat motor vypnutý původně dht.begin ();
Zkuste připojit Wi-Fi s daným SSID a heslem a počkejte, až bude Wi-Fi připojeno, a pokud je připojeno, pokračujte dalšími kroky.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { zpoždění (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi připojeno"); }
Definujte aktuální čas spuštění programu a uložte jej do proměnné pro porovnání s uplynulým časem.
nepodepsaný dlouhý proud Millis = millis ();
Přečtěte si údaje o teplotě a vlhkosti a uložte je do proměnných.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Pokud je připojeno DHT a ESP8266 NodeMCU je schopen číst hodnoty, pokračujte dalším krokem nebo se vraťte odsud a zkontrolujte znovu.
if (isnan (h) - isnan (t)) { Serial.println ("Nepodařilo se přečíst ze snímače DHT!"); vrátit se; }
Odečtěte odečet vlhkosti ze senzoru a vytiskněte odečet.
vlhkostPercentní = (100,00 - ((analogRead (vlhkostPin) / 1023,00) * 100,00)); Serial.print ("Půdní vlhkost je ="); Serial.print (vlhkostPercentní); Serial.println ("%");
Pokud je hodnota vlhkosti mezi požadovaným rozsahem vlhkosti půdy, nechte čerpadlo vypnuté nebo pokud překročí požadovanou vlhkost, zapněte čerpadlo.
if ( vlhkostPercentage <50) { digitalWrite (motorPin, HIGH); } if ( vlhkostPercentage > 50 && vlhkostPercentage <55) { digitalWrite (motorPin, HIGH); } if ( vlhkostPercentage > 56) { digitalWrite (motorPin, LOW); }
Nyní po každých 10 sekundách zavolejte funkci sendThingspeak () a odešlete data o vlhkosti, teplotě a vlhkosti na server ThingSpeak.
if ((unsigned long) (currentMillis - previousMillis)> = interval) { sendThingspeak (); previousMillis = millis (); client.stop (); }
Ve funkci sendThingspeak () zkontrolujeme, zda je systém připojen k serveru, a pokud ano, připravíme řetězec, kde je zapsána vlhkost, teplota, vlhkost a tento řetězec bude odeslán na server ThingSpeak spolu s klíčem API a adresou serveru.
if (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& pole1 ="; postStr + = String (vlhkostPercenta); postStr + = "& pole2 ="; postStr + = Řetězec (t); postStr + = "& field3 ="; postStr + = řetězec (h); postStr + = "\ r \ n \ r \ n";
Nakonec jsou data odeslána na server ThingSpeak pomocí funkce client.print (), která obsahuje klíč API, adresu serveru a řetězec, který je připraven v předchozím kroku.
client.print ("POST / aktualizace HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Připojení: zavřít \ 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);
Nakonec takhle vypadají data na ThingSpeak Dashboard
Tímto posledním krokem je dokončen kompletní kurz inteligentního zavlažovacího systému založeného na IoT. Je důležité vypnout motor, jakmile vlhkost půdy dosáhne po postřiku vodou požadované úrovně. Můžete vytvořit chytřejší systém, který může obsahovat různé kontroly pro různé plodiny.
Pokud se při provádění tohoto projektu setkáte s jakýmikoli problémy, komentujte níže nebo přejděte na naše fóra, kde najdete další relevantní otázky a jejich odpovědi.
Najít kompletní program a demonstrační video pro tento projekt níže.