- Nepieciešamās sastāvdaļas
- Ķēdes shēma
- ESP8266 NodeMCU programmēšana automātiskai apūdeņošanas sistēmai
Lielākā daļa lauksaimnieku izmanto lielas lauksaimniecības zemes daļas, un ir ļoti grūti sasniegt un izsekot katram lielo zemju stūrim. Dažreiz ir iespējama nevienmērīga ūdens kaisīšana. Tā rezultātā rodas sliktas kvalitātes kultūraugi, kas vēl vairāk rada finansiālus zaudējumus. Šajā scenārijā viedā apūdeņošanas sistēma, kas izmanto jaunāko IoT tehnoloģiju, ir noderīga un atvieglo lauksaimniecības darbu.
Smart apūdeņošanas sistēma, ir plašas iespējas automatizēt pilnīgu apūdeņošanas sistēmu. Šeit mēs veidojam IoT balstītu apūdeņošanas sistēmu, izmantojot ESP8266 NodeMCU moduli un DHT11 sensoru. Tas ne tikai automātiski apūdeņos ūdeni, pamatojoties uz mitruma līmeni augsnē, bet arī nosūtīs datus uz ThingSpeak Server, lai sekotu zemes stāvoklim. Sistēma sastāv no ūdens sūkņa, ko izmantos, lai apkaisītu ūdeni uz zemes atkarībā no zemes vides stāvokļa, piemēram, mitruma, temperatūras un mitruma.
Iepriekš mēs izveidojām līdzīgu automātisko augu apūdeņošanas sistēmu, kas brīdinājumus sūta mobilajā ierīcē, bet ne uz IoT mākoņu. Papildus tam lietus trauksme un augsnes mitruma detektora shēma var būt noderīga arī viedās apūdeņošanas sistēmas izveidē.
Pirms sākšanas ir svarīgi atzīmēt, ka dažādām kultūrām ir nepieciešams atšķirīgs augsnes mitruma, temperatūras un mitruma stāvoklis. Tāpēc šajā apmācībā mēs izmantojam tādu kultūru, kurai augsnes mitrums būs vajadzīgs aptuveni 50–55%. Tātad, kad augsne zaudē mitrumu līdz mazāk nekā 50%, motora sūknis automātiski ieslēgsies, lai apsmidzinātu ūdeni, un tas turpina kaisīt ūdeni, līdz mitrums pieaugs līdz 55%, un pēc tam sūknis tiks izslēgts. Sensora dati tiks nosūtīti uz ThingSpeak Server noteiktā laika intervālā, lai tos varētu uzraudzīt no jebkuras vietas pasaulē.
Nepieciešamās sastāvdaļas
- MezglsMCU ESP8266
- Augsnes mitruma sensora modulis
- Ūdens sūkņa modulis
- Releja modulis
- DHT11
- Vadu savienošana
Jūs varat iegādāties visas šim projektam nepieciešamās sastāvdaļas.
Ķēdes shēma
Šīs IoT viedās apūdeņošanas sistēmas shēma ir norādīta zemāk:
ESP8266 NodeMCU programmēšana automātiskai apūdeņošanas sistēmai
Lai ieprogrammētu moduli ESP8266 NodeMCU, kā ārējo bibliotēku tiek izmantota tikai sensoru bibliotēka DHT11. Mitruma sensors nodrošina analogo izeju, kuru var nolasīt caur ESP8266 NodeMCU analogo tapu A0. Tā kā NodeMCU no GPIO nevar nodrošināt izejas spriegumu, kas lielāks par 3,3 V, tāpēc 5 V motora sūkņa darbināšanai mēs izmantojam releja moduli. Arī mitruma sensors un DHT11 sensors tiek darbināti no ārējā 5 V barošanas avota.
Šīs apmācības beigās ir norādīts pilns kods ar darba video, šeit mēs izskaidrojam programmu, lai izprastu projekta darba plūsmu.
Sāciet ar nepieciešamās bibliotēkas iekļaušanu.
# iekļaut
Tā kā mēs izmantojam ThingSpeak serveri, API atslēga ir nepieciešama, lai sazinātos ar serveri. Lai uzzinātu, kā mēs varam iegūt API atslēgu no ThingSpeak, varat apmeklēt iepriekšējo rakstu par dzīvās temperatūras un mitruma uzraudzību vietnē ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * serveris =" api.thingspeak.com ";
Nākamais solis ir rakstīt Wi-Fi akreditācijas datus, piemēram, SSID un Parole.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definējiet DHT sensora tapu, kur ir pievienots DHT, un izvēlieties DHT tipu.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Mitruma sensora izeja ir savienota ar ESP8266 NodeMCU tapu A0. Un motora tapa ir savienota ar NodeMCU D0.
const int mitrumsPin = A0; const int motorPin = D0;
Mēs izmantosim funkciju milis (), lai nosūtītu datus pēc katra noteiktā laika intervāla, kad tas ir 10 sekundes. Aizture () ir jāizvairās, jo tas apstājas programmu noteiktā termiņā, ja mikrokontrolleru nevar darīt citus uzdevumus. Uzziniet vairāk par atšķirību starp kavēšanos () un milis () šeit.
neparakstīts garš intervāls = 10000; neparakstīts garš iepriekšējaisMillis = 0;
Iestatiet motora tapu kā izeju un sākotnēji izslēdziet motoru. Sāciet DHT11 sensora rādījumu.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // turēt motoru izslēgtu sākotnēji dht.begin ();
Mēģiniet savienot Wi-Fi ar norādīto SSID un paroli un pagaidiet, līdz tiks izveidots savienojums ar Wi-Fi, un, ja ir izveidots savienojums, pārejiet pie nākamajām darbībām.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { aizkave (500); Sērijas.druka ("."); } Serial.println (""); Serial.println ("savienots ar WiFi"); }
Definējiet pašreizējo programmas palaišanas laiku un saglabājiet to mainīgajā, lai salīdzinātu to ar pagājušo laiku.
neparakstīta garā strāvaMillis = milis ();
Izlasiet temperatūras un mitruma datus un saglabājiet tos mainīgajos.
pludiņš h = dht.lasītMitrums (); pludiņš t = dht.lasītTemperatūra ();
Ja DHT ir pievienots un ESP8266 NodeMCU spēj nolasīt rādījumus, pārejiet pie nākamā soļa vai atgriezieties no šejienes, lai pārbaudītu vēlreiz.
if (isnan (h) - isnan (t)) { Serial.println ("Neizdevās nolasīt no DHT sensora!"); atgriešanās; }
Izlasiet sensora mitruma rādījumus un izdrukājiet rādījumus.
moisturPercentage = (100.00 - ((analogRead (moisturPin) / 1023.00) * 100.00)); Serial.print ("Augsnes mitrums ir ="); Serial.print (mitrumaProcentūra); Serial.println ("%");
Ja mitruma rādījums ir starp vajadzīgo augsnes mitruma diapazonu, turiet sūkni izslēgtu vai, ja tas pārsniedz nepieciešamo mitrumu, ieslēdziet sūkni.
if (mitruma procents <50) { digitalWrite (motorPin, HIGH); } if (mitruma procents > 50 un& mitruma procents <55) { digitalWrite (motorPin, HIGH); } if (mitruma procents > 56) { digitalWrite (motorPin, LOW); }
Tagad pēc katrām 10 sekundēm izsauciet funkciju sendThingspeak (), lai mitruma, temperatūras un mitruma datus nosūtītu uz ThingSpeak serveri.
if ((neparakstīts garš) (currentMillis - previousMillis)> = intervāls) { sendThingspeak (); iepriekšējaisMillis = milis (); klients.stop (); }
Jo sendThingspeak () funkciju, mēs pārbaudām, vai sistēma ir savienota ar serveri, un, ja jā, tad mēs sagatavot virkni, kur mitrums, temperatūra, mitrums lasīšana ir rakstīts, un šī virkne tiks nosūtīta ThingSpeak serveri kopā ar API atslēgu un servera adresi.
if (klient.connect (serveris, 80)) { String postStr = apiKey; postStr + = "& lauks1 ="; postStr + = virkne (mitruma procents); postStr + = "& field2 ="; postStr + = virkne (t); postStr + = "& field3 ="; postStr + = virkne (h); postStr + = "\ r \ n \ r \ n";
Visbeidzot, dati tiek nosūtīti uz ThingSpeak serveri, izmantojot funkciju client.print (), kas satur API atslēgu, servera adresi un virkni, kas sagatavota iepriekšējā solī.
client.print ("POST / atjaunināt HTTP / 1.1 \ n"); client.print ("resursdators: api.thingspeak.com \ n"); client.print ("Savienojums: aizvērt \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded \ n"); client.print ("Content-Length:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Visbeidzot, šādi dati izskatās ThingSpeak informācijas panelī
Šis pēdējais solis pabeidz pilnu apmācību par IoT balstītu viedo apūdeņošanas sistēmu. Ņemiet vērā, ka ir svarīgi izslēgt motoru, kad augsnes mitrums ir sasniedzis vajadzīgo līmeni pēc ūdens apkaisīšanas. Jūs varat izveidot viedāku sistēmu, kas var saturēt atšķirīgu kontroli dažādām kultūrām.
Ja, veicot šo projektu, rodas kādas problēmas, komentējiet tālāk vai sazinieties ar mūsu forumiem, lai iegūtu vairāk atbilstošu jautājumu un viņu atbildes.
Zemāk atrodiet pilnu šī projekta programmu un demonstrācijas video.