- Kinakailangan ang Mga Bahagi
- Diagram ng Circuit
- Pagprogram ng ESP8266 NodeMCU para sa Awtomatikong Irrigation System
Karamihan sa mga magsasaka ay gumagamit ng malaking bahagi ng lupang pagsasaka at napakahirap abutin at subaybayan ang bawat sulok ng malalaking lupain. Minsan may posibilidad na hindi pantay na tubig na iwiwisik. Nagreresulta ito sa hindi magandang kalidad na mga pananim na higit na humantong sa pagkalugi sa pananalapi. Sa senaryong ito ang Smart Irrigation System na gumagamit ng Pinakabagong teknolohiya ng IoT ay kapaki-pakinabang at hahantong sa kadalian ng pagsasaka.
Ang Smart irrigation System ay may malawak na saklaw upang i-automate ang kumpletong sistema ng irigasyon. Dito nagtatayo kami ng isang IoT based Irrigation System na gumagamit ng ESP8266 NodeMCU Module at DHT11 Sensor. Hindi lamang ito awtomatikong patubig ng tubig batay sa antas ng kahalumigmigan sa lupa ngunit magpapadala din ng Data sa ThingSpeak Server upang subaybayan ang kondisyon ng lupa. Ang System ay bubuo ng isang pump ng tubig na gagamitin upang iwisik ang tubig sa lupa depende sa kalagayang pangkapaligiran tulad ng Moisture, Temperatura at Humidity.
Gumagawa kami dati ng katulad na Awtomatikong Plant ng Irrigation System na nagpapadala ng mga alerto sa mobile ngunit hindi sa IoT cloud. Maliban dito, ang alarma ng ulan at circuit ng detektor ng kahalumigmigan sa lupa ay maaari ding maging kapaki-pakinabang sa pagbuo ng sistema ng Smart Irrigation.
Bago simulan, mahalagang tandaan na ang magkakaibang mga pananim ay nangangailangan ng iba't ibang Kalimasan sa Kalusugan, Temperatura at Kalagayan ng Humidity. Kaya sa tutorial na ito gumagamit kami ng tulad ng isang ani na mangangailangan ng isang kahalumigmigan sa lupa ng tungkol sa 50-55%. Kaya't kapag nawala ang kahalumigmigan ng lupa sa mas mababa sa 50% pagkatapos ay ang Motor pump ay awtomatikong bubukas upang iwisik ang tubig at ito ay magpapatuloy na iwisik ang tubig hanggang sa umakyat ang kahalumigmigan hanggang 55% at pagkatapos nito ay mapapatay ang bomba. Ipapadala ang data ng sensor sa ThingSpeak Server sa tinukoy na agwat ng oras upang maaari itong subaybayan mula sa kahit saan sa mundo.
Kinakailangan ang Mga Bahagi
- NodeMCU ESP8266
- Module ng Sensor ng Moisture ng Lupa
- Modyul ng Pump ng Tubig
- Relay Module
- DHT11
- Mga Koneksyon sa Mga Wires
Maaari kang bumili ng lahat ng mga sangkap na kinakailangan para sa proyektong ito.
Diagram ng Circuit
Ang diagram ng circuit para sa IoT Smart Irrigation System na ito ay ibinibigay sa ibaba:
Pagprogram ng ESP8266 NodeMCU para sa Awtomatikong Irrigation System
Para sa pagprograma ng module ng ESP8266 NodeMCU, tanging ang library ng sensor ng DHT11 ang ginagamit bilang panlabas na silid-aklatan. Nagbibigay ang sensor ng kahalumigmigan ng analog output na maaaring mabasa sa pamamagitan ng ESP8266 NodeMCU analog pin A0. Dahil ang NodeMCU ay hindi maaaring magbigay ng boltahe ng output na higit sa 3.3V mula sa GPIO nito kaya gumagamit kami ng isang relay module upang himukin ang 5V motor pump. Gayundin ang sensor ng Moisture at DHT11 sensor ay pinalakas mula sa panlabas na 5V power supply.
Ang kumpletong code na may isang gumaganang video ay ibinibigay sa pagtatapos ng tutorial na ito, narito ipinapaliwanag namin ang programa upang maunawaan ang gumaganang daloy ng proyekto.
Magsimula sa kasama ang kinakailangang library.
# isama
Dahil ginagamit namin ang ThingSpeak Server, kinakailangan ang API Key upang makipag-usap sa server. Upang malaman kung paano kami makakakuha ng API Key mula sa ThingSpeak maaari mong bisitahin ang nakaraang artikulo sa Live Temperature at Humidity Monitoring sa ThingSpeak.
String apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Ang susunod na Hakbang ay upang isulat ang mga kredensyal ng Wi-Fi tulad ng SSID at Password.
const char * ssid = "CircuitDigest"; Const char * pass = "xxxxxxxxxxx";
Tukuyin ang DHT Sensor Pin kung saan nakakonekta ang DHT at Piliin ang uri ng DHT.
# tukuyin ang DHTPIN D3 DHT dht (DHTPIN, DHT11);
Ang output ng sensor ng kahalumigmigan ay konektado sa Pin A0 ng ESP8266 NodeMCU. At ang motor pin ay konektado sa D0 ng NodeMCU.
const int moisturePin = A0; Const int motorPin = D0;
Gagamitin namin ang millis () na pagpapaandar upang maipadala ang data pagkatapos ng bawat tinukoy na agwat ng oras dito 10 segundo. Ang pagkaantala () ay naiwasan dahil pinahinto nito ang programa para sa isang tinukoy na pagkaantala kung saan ang microcontroller ay hindi maaaring gumawa ng iba pang mga gawain. Matuto nang higit pa tungkol sa pagkakaiba sa pagitan ng pagkaantala () at millis () dito.
unsigned mahabang agwat = 10000; unsigned matagal na nakaraangMillis = 0;
Itakda ang motor pin bilang output, at patayin ang motor nang una. Simulan ang pagbabasa ng sensor ng DHT11.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // panatilihin ang motor off initally dht.begin ();
Subukang ikonekta ang Wi-Fi sa ibinigay na SSID at Password at hintaying makakonekta ang Wi-Fi at kung nakakonekta pagkatapos ay pumunta sa mga susunod na hakbang.
WiFi.begin (ssid, pass); habang (WiFi.status ()! = WL_CONNected) { pagkaantala (500); Serial.print ("."); } Serial.println (""); Serial.println ("Konektado sa WiFi"); }
Tukuyin ang kasalukuyang oras ng pagsisimula ng programa at i-save ito sa isang variable upang ihambing ito sa lumipas na oras.
unsigned long currentMillis = millis ();
Basahin ang data ng temperatura at kahalumigmigan at i-save ang mga ito sa mga variable.
float h = dht.readHumidity (); float t = dht.readTemperature ();
Kung ang DHT ay konektado at ang ESP8266 NodeMCU ay maaaring basahin ang mga pagbasa pagkatapos ay magpatuloy sa susunod na hakbang o bumalik mula dito upang suriin muli.
kung (isnan (h) - isnan (t)) { Serial.println ("Nabigong basahin mula sa sensor ng DHT!"); bumalik; }
Basahin ang pagbabasa ng kahalumigmigan mula sa sensor at i-print ang pagbabasa.
moisturePercentage = (100.00 - ((analogRead (moisturePin) / 1023.00) * 100.00)); Serial.print ("Soil Moisture ay ="); Serial.print (moisturePercentage); Serial.println ("%");
Kung ang pagbabasa ng kahalumigmigan ay nasa pagitan ng kinakailangang saklaw ng kahalumigmigan sa lupa pagkatapos ay panatilihin ang bomba o kung lumampas ito sa kinakailangang kahalumigmigan pagkatapos ay buksan ang bomba.
kung (moisturePercentage <50) { digitalWrite (motorPin, HIGH); } kung (moisturePercentage> 50 && moisturePercentage <55) { digitalWrite (motorPin, HIGH); } kung (moisturePercentage> 56) { digitalWrite (motorPin, LOW); }
Ngayon pagkatapos ng bawat 10 segundo tawagan ang sendThingspeak () na pagpapaandar upang maipadala ang data ng kahalumigmigan, temperatura at halumigmig sa ThingSpeak server.
if ((unsigned long) (currentMillis - nakaraangMillis)> = agwat) { sendThingspeak (); nakaraangMillis = millis (); client.stop (); }
Sa pagpapaandar na sendThingspeak () sinusuri namin kung ang system ay konektado sa server at kung oo pagkatapos ay naghahanda kami ng isang string kung saan nakasulat ang kahalumigmigan, temperatura, pagbabasa ng kahalumigmigan at ipapadala ang string na ito sa ThingSpeak server kasama ang key ng API at address ng server.
kung (client.connect (server, 80)) { String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (moisturePercentage); postStr + = "& field2 ="; postStr + = String (t); postStr + = "& field3 ="; postStr + = String (h); postStr + = "\ r \ n \ r \ n";
Sa wakas ang data ay ipinadala sa ThingSpeak server gamit ang client.print () function na naglalaman ng API key, server address at ang string na inihanda sa nakaraang hakbang.
client.print ("POST / update HTTP / 1.1 \ n"); client.print ("Host: api.thingspeak.com \ n"); client.print ("Koneksyon: isara \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Uri ng Nilalaman: application / x-www-form-urlencoded \ n"); client.print ("Haba ng Nilalaman:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Panghuli ganito ang hitsura ng data sa ThingSpeak Dashboard
Tinatapos ng huling hakbang na ito ang kumpletong tutorial sa IoT batay sa Smart Irrigation System. Tandaan na mahalaga na patayin ang motor kapag ang kahalumigmigan sa lupa ay umabot sa kinakailangang antas pagkatapos ng pagwiwisik ng tubig. Maaari kang gumawa ng isang mas matalinong sistema na maaaring maglaman ng iba't ibang kontrol para sa iba't ibang mga pananim.
Kung nahaharap ka sa anumang mga isyu habang ginagawa ang proyektong ito pagkatapos ay magkomento sa ibaba o umabot sa aming mga forum para sa mas may-katuturang mga katanungan at kanilang mga sagot.
Hanapin ang kumpletong programa at pagpapakita ng Video para sa proyektong ito sa ibaba.