De fleste av bøndene bruker store deler av jordbruksmark, og det blir veldig vanskelig å nå og spore hvert hjørne av store land. En gang er det en mulighet for ujevn vannsprut. Dette resulterer i avlinger av dårlig kvalitet som ytterligere fører til økonomiske tap. I dette scenariet er Smart Irrigation System som bruker nyeste IoT-teknologi nyttig og fører til enkel oppdrett.
Den smarte vanningssystem har stort omfang for å automatisere hele vanningssystemet. Her bygger vi et IoT-basert vanningssystem ved hjelp av ESP8266 NodeMCU-modul og DHT11-sensor. Det vil ikke bare vanne vannet automatisk basert på fuktighetsnivået i jorden, men også sende dataene til ThingSpeak Server for å holde rede på landtilstanden. Systemet vil bestå av en vannpumpe som vil brukes til å drysse vann på landet, avhengig av landets miljøtilstand som fuktighet, temperatur og fuktighet.
Vi har tidligere laget lignende automatiske anleggsvanningssystem som sender varsler på mobil, men ikke på IoT-skyen. Bortsett fra dette, kan regnalarm og jordfuktighetsdetektorkrets også være nyttig for å bygge Smart Irrigation System.
Før du starter, er det viktig å merke seg at de forskjellige avlingene krever forskjellig jordfuktighet, temperatur og fuktighet. Så i denne opplæringen bruker vi en slik avling som vil kreve en jordfuktighet på ca 50-55%. Så når jorden mister fuktigheten til mindre enn 50%, vil motorpumpen slå seg på automatisk for å drysse vannet, og den vil fortsette å drysse vannet til fuktigheten går opp til 55%, og deretter vil pumpen bli slått av. Sensordataene vil bli sendt til ThingSpeak Server i et definert tidsintervall, slik at de kan overvåkes hvor som helst i verden.
Komponenter kreves
- NodeMCU ESP8266
- Jordfuktighetssensormodul
- Vannpumpemodul
- Relémodul
- DHT11
- Koble ledninger
Du kan kjøpe alle komponentene som kreves for dette prosjektet.
Kretsdiagram
Kretsskjema for dette IoT Smart Irrigation System er gitt nedenfor:
Programmering ESP8266 NodeMCU for automatisk vanningsanlegg
For programmering av ESP8266 NodeMCU-modulen brukes bare DHT11-sensorbiblioteket som eksternt bibliotek. Fuktsensoren gir analog utgang som kan leses gjennom ESP8266 NodeMCU analog pin A0. Siden NodeMCU ikke kan gi utgangsspenning større enn 3,3 V fra GPIO, bruker vi en relémodul for å drive 5V-motorpumpen. Fuktighetssensoren og DHT11-sensoren får også strøm fra ekstern 5V strømforsyning.
Komplett kode med en arbeidsvideo er gitt på slutten av denne veiledningen, her forklarer vi programmet for å forstå arbeidsflyten til prosjektet.
Start med å inkludere nødvendig bibliotek.
#inkludere
Siden vi bruker ThingSpeak Server, er API-nøkkelen nødvendig for å kommunisere med serveren. For å vite hvordan vi kan få API-nøkkel fra ThingSpeak, kan du gå til forrige artikkel om overvåking av temperatur og fuktighet på ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Neste trinn er å skrive Wi-Fi-legitimasjonen som SSID og passord.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Definer DHT-sensorpinnen der DHT er koblet til, og velg DHT-typen.
#definer DHTPIN D3 DHT dht (DHTPIN, DHT11);
Fuktighetssensorutgangen er koblet til pin A0 på ESP8266 NodeMCU. Og motorstiftet er koblet til D0 i NodeMCU.
const int moistPin = A0; const int motorPin = D0;
Vi bruker millis () -funksjonen til å sende dataene etter hvert definert tidsintervall her, det er 10 sekunder. Den forsinkelse () unngås siden det stopper programmet for en definert forsinkelse der microcontroller ikke kan gjøre andre oppgaver. Lær mer om forskjellen mellom forsinkelse () og millis () her.
usignert langt intervall = 10000; usignert lang forrige Millis = 0;
Sett motorpinnen som utgang, og slå av motoren først. Start DHT11-sensoravlesningen.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // hold motoren i utgangspunktet dht.begin ();
Prøv å koble til Wi-Fi med gitt SSID og passord, og vent til Wi-Fi skal kobles til, og hvis du er tilkoblet, gå til neste trinn.
WiFi.begin (ssid, pass); mens (WiFi.status ()! = WL_CONNECTED) { forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.println ("WiFi-tilkoblet"); }
Definer gjeldende tidspunkt for start av programmet og lagre det i en variabel for å sammenligne det med forløpt tid.
usignert langstrømMillis = millis ();
Les temperatur- og fuktighetsdata og lagre dem i variabler.
flyte h = dht.readHumidity (); flyte t = dht.readTemperature ();
Hvis DHT er koblet til og ESP8266 NodeMCU er i stand til å lese målingene, fortsett til neste trinn eller gå tilbake herfra for å sjekke igjen.
hvis (isnan (h) - isnan (t)) { Serial.println ("Kunne ikke lese fra DHT-sensor!"); komme tilbake; }
Les fuktavlesningen fra sensoren og skriv ut lesingen.
moistPercentage = (100,00 - ((analogRead (moistPin) / 1023,00) * 100,00)); Serial.print ("Soil Moisture is ="); Serial.print (fuktprosent); Serial.println ("%");
Hvis fuktavlesningen er mellom det nødvendige fuktighetsområdet for jorda, må du holde pumpen av eller hvis den går utover den nødvendige fuktigheten, og deretter slå pumpen PÅ.
hvis ( moistPercentage <50) { digitalWrite (motorPin, HIGH); } hvis ( moistPercentage > 50 && fuktPercentage <55) { digitalWrite (motorPin, HIGH); } if ( moistPercentage > 56) { digitalWrite (motorPin, LOW); }
Nå, hvert 10. sekund, ring sendThingspeak () -funksjonen for å sende data om fuktighet, temperatur og fuktighet til ThingSpeak-serveren.
hvis ((usignert lang) (currentMillis - previousMillis)> = intervall) { sendThingspeak (); previousMillis = millis (); client.stop (); }
I sendThingspeak () -funksjonen sjekker vi om systemet er koblet til serveren og hvis ja så forbereder vi en streng der fuktighet, temperatur, fuktighetsavlesning skrives og denne strengen vil bli sendt til ThingSpeak server sammen med API-nøkkel og serveradresse.
hvis (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& felt1 ="; postStr + = String (fuktighetsprosent); postStr + = "& field2 ="; postStr + = streng (t); postStr + = "& field3 ="; postStr + = streng (h); postStr + = "\ r \ n \ r \ n";
Til slutt blir dataene sendt til ThingSpeak-serveren ved hjelp av client.print () -funksjonen som inneholder API-nøkkel, serveradresse og strengen som ble utarbeidet i forrige trinn.
client.print ("POST / oppdater HTTP / 1.1 \ n"); client.print ("Vert: api.thingspeak.com \ n"); client.print ("Connection: close \ 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);
Endelig er dette hvordan dataene ser ut på ThingSpeak Dashboard
Dette siste trinnet fullfører den komplette opplæringen om IoT-basert Smart Irrigation System. Merk at det er viktig å slå av motoren når jordfuktigheten har nådd ønsket nivå etter vannsprut. Du kan lage et mer smart system som kan inneholde forskjellig kontroll for forskjellige avlinger.
Hvis du møter noen problemer mens du gjør dette prosjektet, kan du kommentere nedenfor eller kontakte forumene våre for mer relevante spørsmål og svarene deres.
Finn hele programmet og demonstrasjonsvideoen for dette prosjektet nedenfor.