- Tarvittavat komponentit
- Piirikaavio
- ESP8266 NodeMCU: n ohjelmointi automaattista kastelujärjestelmää varten
Suurin osa maanviljelijöistä käyttää suuria osia viljelysmaata, ja suurten maa-alueiden kulmien saavuttaminen ja seuraaminen on erittäin vaikeaa. Joskus voi olla epätasaista vesiroisketta. Tämä johtaa huonolaatuisiin satoihin, mikä johtaa edelleen taloudellisiin menetyksiin. Tässä skenaariossa uusinta IoT-tekniikkaa käyttävä älykäs kastelujärjestelmä on hyödyllinen ja johtaa maatalouden helppouteen.
Smart kastelujärjestelmä on laaja automatisoida koko kastelujärjestelmä. Täällä rakennamme IoT-pohjaista kastelujärjestelmää käyttäen ESP8266 NodeMCU -moduulia ja DHT11-anturia. Se ei vain kastele vettä maaperän kosteustason perusteella, vaan myös lähettää tiedot ThingSpeak-palvelimelle seuraamaan maan tilaa. Järjestelmä koostuu vesipumpusta, jota käytetään veden ripottamiseen maahan riippuen maan ympäristöolosuhteista, kuten kosteudesta, lämpötilasta ja kosteudesta.
Olemme aiemmin rakentaneet samanlaisen automaattisen laitoksen kastelujärjestelmän, joka lähettää hälytykset mobiililaitteilla, mutta ei IoT-pilvellä. Tämän lisäksi sadehälytys ja maaperän kosteudenilmaisupiiri voivat olla hyödyllisiä myös älykkäiden kastelujärjestelmien rakentamisessa.
Ennen aloittamista on tärkeää huomata, että eri viljelykasvit vaativat erilaisen maaperän kosteuden, lämpötilan ja kosteuden. Joten tässä opetusohjelmassa käytämme sellaista satoa, joka vaatii maaperän kosteuden noin 50-55%. Joten kun maaperä menettää kosteutensa alle 50 prosenttiin, moottoripumppu käynnistyy automaattisesti veden ripottamiseksi ja se jatkaa veden ripottamista, kunnes kosteus nousee 55 prosenttiin ja sen jälkeen pumppu sammutetaan. Anturitiedot lähetetään ThingSpeak-palvelimelle määritetyllä aikavälillä, jotta niitä voidaan tarkkailla mistä päin maailmaa tahansa.
Tarvittavat komponentit
- SolmuMCU ESP8266
- Maaperän kosteusanturimoduuli
- Vesipumppumoduuli
- Releyksikkö
- DHT11
- Johtojen liittäminen
Voit ostaa kaikki tähän projektiin tarvittavat komponentit.
Piirikaavio
Tämän IoT Smart-kastelujärjestelmän kytkentäkaavio on annettu alla:
ESP8266 NodeMCU: n ohjelmointi automaattista kastelujärjestelmää varten
ESP8266 NodeMCU -moduulin ohjelmoinnissa vain DHT11-anturikirjastoa käytetään ulkoisena kirjastona. Kosteusanturi antaa analogilähdön, joka voidaan lukea ESP8266 NodeMCU -nastanapin A0 kautta. Koska NodeMCU ei pysty antamaan GPIO: sta suurempaa lähtöjännitettä kuin 3,3 V. Myös kosteusanturi ja DHT11-anturi saavat virtaa ulkoisesta 5 V: n virtalähteestä.
Täydellinen koodi ja toimiva video annetaan tämän opetusohjelman lopussa, tässä selitämme ohjelmaa ymmärtämään projektin työskentelyvirtaa.
Aloita sisällyttämällä tarvittava kirjasto.
#sisältää
Koska käytämme ThingSpeak-palvelinta, API-avain on välttämätön kommunikoimiseksi palvelimen kanssa. Jos haluat tietää, miten voimme saada API-avaimen ThingSpeakilta, voit lukea edellisen artikkelin ThingSpeakin elävän lämpötilan ja kosteuden valvonnasta.
Merkkijono apiKey = "X5AQ445IKMBYW31H const char * server =" api.thingspeak.com ";
Seuraava vaihe on kirjoittaa Wi-Fi-tunnistetiedot, kuten SSID ja salasana.
const char * ssid = "CircuitDigest"; const char * pass = "xxxxxxxxxxx";
Määritä DHT-anturin tappi, johon DHT on kytketty, ja valitse DHT-tyyppi.
#define DHTPIN D3 DHT dht (DHTPIN, DHT11);
Kosteusanturin lähtö on kytketty ESP8266 NodeMCU: n tapaan A0. Ja moottorin tappi on kytketty NodeMCU: n D0: een.
const int kosteusPin = A0; const int moottoriPin = D0;
Käytämme millis () -funktiota tietojen lähettämiseen jokaisen määritetyn ajanjakson jälkeen, kun se on 10 sekuntia. Viive () on vältettävä, sillä se pysäyttää ohjelman määritellyn viiveen jossa mikro voi tehdä muita tehtäviä. Lisätietoja viiveen () ja millien () välisestä erosta on täällä.
allekirjoittamaton pitkä väli = 10000; allekirjoittamaton pitkä edellinenMillis = 0;
Aseta moottorin tappi lähtöön ja sammuta moottori ensin. Aloita DHT11-anturin lukema.
pinMode (motorPin, OUTPUT); digitalWrite (motorPin, LOW); // pidä moottori pois päältä dht.begin ();
Yritä muodostaa yhteys Wi-Fi-verkkoon annetulla SSID-tunnuksella ja salasanalla ja odota, että Wi-Fi-yhteys on muodostettu, ja siirry seuraaviin vaiheisiin, jos yhteys on muodostettu.
WiFi.begin (ssid, pass); while (WiFi.status ()! = WL_CONNECTED) { viive (500); Sarjaprintti ("."); } Sarja.println (""); Serial.println ("WiFi kytketty"); }
Määritä ohjelman käynnistyksen nykyinen aika ja tallenna se muuttujaan verrataksesi sitä kuluneeseen aikaan.
allekirjoittamaton pitkä virtaMillis = millis ();
Lue lämpötila- ja kosteustiedot ja tallenna ne muuttujiin.
uimuri h = dht. lukea kosteus (); kelluva t = dht. lukulämpötila ();
Jos DHT on kytketty ja ESP8266 NodeMCU pystyy lukemaan lukemia, siirry seuraavaan vaiheeseen tai palaa täältä tarkistamaan uudelleen.
if (isnan (h) - isnan (t)) { Serial.println ("Lukeminen epäonnistui DHT-anturista!"); palata; }
Lue anturin kosteuslukema ja tulosta lukema.
kosteuden prosenttiosuus = (100,00 - ((analoginenLue (kosteusastia) / 1023,00) * 100,00)); Sarja.tulos ("Maaperän kosteus on ="); Sarjaprintti (kosteusprosentti); Serial.println ("%");
Jos kosteuslukema on vaaditun maaperän kosteusalueen välillä, pidä pumppu pois päältä tai jos se ylittää vaaditun kosteuden, kytke pumppu päälle.
if (kosteusosuus <50) { digitalWrite (motorPin, HIGH); } if (kosteusprosentti> 50 && kosteusprosentti <55) { digitalWrite (motorPin, HIGH); } if (kosteusosuus> 56) { digitalWrite (motorPin, LOW); }
Kutsu nyt sendThingspeak () -toiminto 10 sekunnin välein lähettääksesi kosteus-, lämpötila- ja kosteustiedot ThingSpeak-palvelimelle.
if ((allekirjoittamaton pitkä) (currentMillis - edellinenMillis)> = intervalli) { sendThingspeak (); edellinenMillis = millis (); asiakas.stop (); }
Vuonna sendThingspeak () funktio voimme tarkistaa, jos järjestelmä on liitetty palvelimeen ja jos kyllä sitten valmistaa merkkijono, jossa kosteus, lämpötila, kosteus lukema on kirjoitettu ja tämä merkkijono lähetetään ThingSpeak palvelimelle yhdessä API-avainta, ja palvelimen osoite.
if (asiakas.yhteys (palvelin, 80)) { String postStr = apiKey; postStr + = "& kenttä1 ="; postStr + = merkkijono (kosteusprosentti); postStr + = "& kenttä2 ="; postStr + = merkkijono (t); postStr + = "& kenttä3 ="; postStr + = merkkijono (h); postStr + = "\ r \ n \ r \ n";
Lopuksi data lähetetään ThingSpeak palvelimelle käyttäen client.print () funktio, joka sisältää API-avain, palvelimen osoite ja merkkijono, joka on valmistettu edellisessä vaiheessa.
client.print ("POST / päivitä HTTP / 1.1 \ n"); client.print ("Isäntä: api.thingspeak.com \ n"); client.print ("Yhteys: sulje \ n"); client.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded \ n"); client.print ("Sisällön pituus:"); client.print (postStr.length ()); client.print ("\ n \ n"); client.print (postStr);
Lopuksi näin tiedot näyttävät ThingSpeak-kojelaudalta
Tämä viimeinen vaihe viimeistelee IoT-pohjaisen älykkään kastelujärjestelmän täydellisen opetusohjelman. Huomaa, että on tärkeää sammuttaa moottori, kun maaperän kosteus on saavuttanut vaaditun tason vesiroiskeen jälkeen. Voit tehdä älykkäämmän järjestelmän, joka voi sisältää erilaista hallintaa eri viljelykasveille.
Jos kohtaat ongelmia tehdessäsi tätä projektia, kommentoi alla tai ota yhteyttä foorumeihimme, jos tarvitset osuvampia kysymyksiä ja vastauksia.
Löydät tämän projektin koko ohjelman ja esittelyvideon alla.