Turinys:

Saulės dirvožemio drėgmės matuoklis su ESP8266: 10 žingsnių (su nuotraukomis)
Saulės dirvožemio drėgmės matuoklis su ESP8266: 10 žingsnių (su nuotraukomis)

Video: Saulės dirvožemio drėgmės matuoklis su ESP8266: 10 žingsnių (su nuotraukomis)

Video: Saulės dirvožemio drėgmės matuoklis su ESP8266: 10 žingsnių (su nuotraukomis)
Video: Automatinė dirvožemio drėgmės kontrolės sistema 2024, Liepa
Anonim

Šioje instrukcijoje mes gaminame saulės energija varomą dirvožemio drėgmės monitorių. Jis naudoja ESP8266 „Wi -Fi“mikrovaldiklį, veikiantį mažos galios kodu, ir viskas yra atspari vandeniui, todėl jį galima palikti lauke. Galite tiksliai sekti šį receptą arba pasinaudoti jo naudingomis technikomis savo projektams.

Jei nesate susipažinę su mikrovaldiklių programavimu, peržiūrėkite mano „Arduino“klasę ir daiktų interneto klasę, kad sužinotumėte apie laidų, kodavimo ir prisijungimo prie interneto pagrindus.

Šis projektas yra mano nemokamos saulės klasės dalis, kurioje galite sužinoti daugiau būdų, kaip panaudoti saulės energiją graviravimu ir saulės baterijomis.

Norėdami neatsilikti nuo to, ką dirbu, sekite mane „YouTube“, „Instagram“, „Twitter“, „Pinterest“ir užsiprenumeruokite mano naujienlaiškį.

1 žingsnis: ko jums reikės

Ko jums reikės
Ko jums reikės

Jums reikės saulės baterijų įkrovimo plokštės ir ESP8266, pvz., „NodeMCU ESP8266“arba „Huzzah“, taip pat dirvožemio jutiklio, akumuliatoriaus, maitinimo jungiklio, šiek tiek laido ir gaubto, kad galėtumėte įjungti grandinę.

Čia yra sudedamosios dalys ir medžiagos, naudojamos dirvožemio drėgmės monitoriui:

  • ESP8266 „NodeMCU“mikrovaldiklis (arba panašus, „Vin“turi toleruoti iki 6 V)
  • „Adafruit“saulės įkrovimo plokštė su papildomu termistoriumi ir 2,2 K omo rezistoriumi
  • 2200 mAh ličio jonų baterija
  • „Perma-proto“lenta
  • Dirvožemio drėgmės/temperatūros jutiklis
  • 2 kabelių sandarikliai
  • Neperšlampamas gaubtas
  • Vandeniui atspari nuolatinės srovės maitinimo kabelių pora
  • Termiškai susitraukiantis vamzdis
  • 3,5 W saulės kolektorius
  • Mygtuko maitinimo jungiklis
  • Dviguba lipni putplasčio juosta

Štai įrankiai, kurių jums reikės:

  • Lituoklis ir lituoklis
  • Pagalbos rankų įrankis
  • Vielos nuėmikliai
  • Flush snips
  • Pincetai (neprivaloma)
  • Šilumos pistoletas arba žiebtuvėlis
  • Multimetras (pasirenkamas, bet patogus trikčių šalinimui)
  • USB A-microB kabelis
  • Žirklės
  • Žingsnis gręžtuvas

Jums reikės nemokamų paskyrų debesų duomenų svetainėse io.adafruit.com ir IFTTT.

Kaip „Amazon“asocijuotas asmuo uždirbu iš kvalifikuotų pirkinių, kuriuos atliekate naudodami mano filialų nuorodas.

2 žingsnis: „Breadboard“prototipas

Duonos lentos prototipas
Duonos lentos prototipas

Tokiems projektams svarbu sukurti prototipą be litavimo duonos lentos, todėl prieš užmezgdami nuolatinius ryšius galite įsitikinti, kad jutiklis ir kodas veikia.

Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas
Vaizdas

Šiuo atveju dirvožemio jutiklis turi įstrigusius laidus, todėl prie jutiklio laidų galų reikia laikinai pritvirtinti tvirtas antraštes, naudojant lydmetalį, pagalbos rankas ir kai kuriuos termiškai susitraukiančius vamzdžius.

Vaizdas
Vaizdas

Sekite grandinės schemą, kad prijungtumėte jutiklio galią, įžeminimą, laikrodį ir duomenų kaiščius (duomenys taip pat gauna 10K ištraukimo rezistorių, gautą kartu su dirvožemio jutikliu).

  • Jutiklio žalia viela prie GND
  • Raudonas jutiklis iki 3.3V
  • Jutiklis geltona viela prie „NodeMCU“kaiščio D5 (GPIO 14)
  • Jutiklis mėlynas laidas prie „NodeMCU“kaiščio D6 (GPIO 12)
  • 10K ištraukiamas rezistorius tarp mėlyno duomenų kaiščio ir 3.3V

Tai galite išversti į pageidaujamą mikrovaldiklį. Jei naudojate „Arduino Uno“ar panašų, jūsų plokštę jau palaiko „Arduino“programinė įranga. Jei naudojate ESP8266, peržiūrėkite mano daiktų interneto klasę, kur žingsnis po žingsnio padedama nustatyti ESP8266 „Arduino“(pridėjus papildomų URL prie „Arduino“nuostatų lauko „Papildomų lentų tvarkyklės URL“, tada ieškant ir naujų lentų parinkimas iš lentų valdytojo). Aš linkęs naudoti „Adafruit ESP8266 Huzzah“plokštės tipą programuoti „NodeMCU ESP8266“plokštę, tačiau taip pat galite įdiegti ir naudoti bendrąjį ESP8266 plokštės palaikymą. Jums taip pat reikės „SiLabs“USB ryšio mikroschemų tvarkyklės (galima „Mac“/„Windows“/„Linux“).

Norėdami, kad jutiklis pradėtų veikti su „Arduino“suderinama plokšte, aš atsisiunčiau „SHT1x Arduino“biblioteką iš „Praktinio„ Arduino “„ github “puslapio, tada išpakavau failą ir perkėliau bibliotekos aplanką į savo„ Arduino “/bibliotekų aplanką, tada pervadinau jį į SHT1x. Atidarykite eskizo „ReadSHT1xValues“pavyzdį ir pakeiskite kaiščio numerius į 12 („dataPin“) ir 14 („clockPin“) arba nukopijuokite modifikuotą eskizą čia:

#įtraukti

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // momentinis SHT1x objekto void setup () {Serial.begin (38400); // Atidarykite nuoseklųjį ryšį, kad praneštų reikšmes prieglobai Serial.println ("Paleidimas"); } void loop () {float temp_c; plūdė temp_f; plūdės drėgmė; temp_c = sht1x.readTemperatureC (); // Skaitykite reikšmes iš jutiklio temp_f = sht1x.readTemperatureF (); drėgmė = sht1x.readHumidity (); Serial.print ("Temperatūra:"); // Spausdinkite reikšmes į nuoseklųjį prievadą Serial.print (temp_c, DEC); Serial.print („C /“); Serial.print (temp_f, DEC); Serial.print ("F. Drėgmė:"); Serijinis atspaudas (drėgmė); Serial.println ("%"); vėlavimas (2000 m.); }

Įkelkite šį kodą į savo plokštę ir atidarykite serijinį monitorių, kad pamatytumėte jutiklio duomenų srautą.

Jei jūsų kodas nebus sukompiliuotas ir skundžiasi, kad SHT1x.h nerastas, reikiama jutiklių biblioteka nėra tinkamai įdiegta. Patikrinkite, ar Arduino/bibliotekų aplanke nėra SHT1x, o jei jis yra kažkur kitur, pvz., Atsisiuntimų aplanke, perkelkite jį į savo „Arduino“bibliotekų aplanką ir, jei reikia, pervardykite.

Jei jūsų kodas sukompiliuotas, bet neįkeltas į lentą, dar kartą patikrinkite plokštės nustatymus, įsitikinkite, kad plokštė prijungta prie tinklo, ir pasirinkite tinkamą prievadą meniu Įrankiai.

Jei jūsų kodas įkeliamas, bet serijinio monitoriaus įvestis neatpažįstama, dar kartą patikrinkite, ar jūsų duomenų perdavimo greitis atitinka jūsų eskizą (šiuo atveju 38400).

Jei serijinio monitoriaus įvestis neatrodo teisinga, dar kartą patikrinkite laidus pagal grandinės schemą. Ar jūsų 10K ištraukimo rezistorius yra tarp duomenų kaiščio ir 3,3 V? Ar duomenys ir laikrodis prijungti prie tinkamų kaiščių? Ar maitinimas ir žemė yra prijungti taip, kaip turėtų būti visoje grandinėje? Negalima tęsti, kol šis paprastas eskizas neveikia!

Kitas žingsnis yra būdingas ESP8266 ir sukonfigūruoja pasirenkamą belaidžio jutiklio ataskaitų teikimo pavyzdžio projektą. Jei naudojate standartinį (belaidį) „Arduino“suderinamą mikrovaldiklį, toliau kurkite paskutinį „Arduino“eskizą ir pereikite prie „Saulės įkrovimo plokštės paruošimo“.

3 veiksmas: programinės įrangos sąranka

Programinės įrangos sąranka
Programinės įrangos sąranka

Norėdami surinkti šio projekto kodą naudodami ESP8266, turėsite įdiegti dar kelias „Arduino“bibliotekas (jas galima rasti per bibliotekos tvarkyklę):

  • „Adafruit IO Arduino“
  • Adafruit MQTT
  • „ArduinoHttpClient“

Atsisiųskite prie šio veiksmo pridėtą kodą, tada išpakuokite failą ir atidarykite „Solar_Powered_Soil_Moisture_Monitor_Tutorial“savo „Arduino“programinėje įrangoje.

#įtraukti

#include #include #include #include // Nurodykite duomenis ir laikrodžio jungtis ir parodykite SHT1x objektą #define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // nustatyti kanalą AdafruitIO_Feed *drėgmė = io.feed ("drėgmė"); AdafruitIO_Feed *temperatūra = io.feed ("temperatūra"); const int sleepTime = 15; // 15 minučių

negaliojanti sąranka ()

{Serial.begin (115200); // Atidarykite nuoseklųjį ryšį, kad praneštų reikšmes prieglobai Serial.println ("Paleidimas"); // prisijungti prie io.adafruit.com Serial.print („Prisijungimas prie„ Adafruit IO ““); io.connect (); // laukti ryšio, kol (io.status () <AIO_CONNECTED) {Serial.print ("."); vėlavimas (500); } // mes prisijungę Serial.println (); Serial.println (io.statusText ()); }

tuštumos kilpa ()

{io.run (); // io.run (); palaiko ryšį su klientu ir yra reikalingas visiems eskizams. plūdė temp_c; plūdė temp_f; plaukiojanti drėgmė; temp_c = sht1x.readTemperatureC (); // Skaitykite reikšmes iš jutiklio temp_f = sht1x.readTemperatureF (); drėgmė = sht1x.readHumidity (); Serial.print ("Temperatūra:"); // Spausdinkite reikšmes į nuoseklųjį prievadą Serial.print (temp_c, DEC); Serial.print („C /“); Serial.print (temp_f, DEC); Serial.print ("F. Drėgmė:"); Serijinis atspaudas (drėgmė); Serial.println ("%"); drėgmė-> taupyti (drėgmė); temperatūra-> taupyti (temp_f); Serial.println ("ESP8266 miega …"); ESP.deepSleep (sleepTime * 1000000 * 60); // Miegas}

Šis kodas yra ankstesnio šio vadovo jutiklio kodo mišinys ir pagrindinis pavyzdys iš debesų duomenų tarnybos „Adafruit IO“. Programa įjungia mažos galios režimą ir didžiąją laiko dalį miega, tačiau pabunda kas 15 minučių, kad nuskaitytų dirvožemio temperatūrą ir drėgmę, ir praneša savo duomenis „Adafruit IO“. Eikite į skirtuką config.h ir įveskite „Adafruit IO“vartotojo vardą ir raktą, taip pat vietinio „Wi -Fi“tinklo pavadinimą ir slaptažodį, tada įkelkite kodą į savo ESP8266 mikrovaldiklį.

Vaizdas
Vaizdas

Turėsite šiek tiek pasiruošti svetainėje io.adafruit.com. Sukūrę temperatūros ir drėgmės kanalus, galite sukurti monitoriaus prietaisų skydelį su jutiklių verčių grafiku ir abiejų gaunamų sklaidos kanalų duomenimis. Jei jums reikia atnaujinimo pradedant „Adafruit IO“, peržiūrėkite šią pamoką mano daiktų interneto klasėje.

4 žingsnis: Paruoškite saulės įkrovimo plokštę

Paruoškite saulės įkrovimo plokštę
Paruoškite saulės įkrovimo plokštę

Paruoškite saulės energijos įkrovimo plokštę, lituodami ant jo kondensatoriaus ir kai kurių laidų prie apkrovos išvesties pagalvėlių. Aš pritaikau savo akumuliatorių, kad jis būtų įkraunamas greičiau naudojant papildomą papildomą rezistorių (2,2 tūkst. Lituojamą per PROG) ir kad būtų saugiau palikti be priežiūros, ant paviršiaus tvirtinamą rezistorių pakeičiant 10K termistoriumi, pritvirtintu prie pačios baterijos. Tai apribos įkrovimą iki saugaus temperatūros diapazono. Šiuos pakeitimus išsamiau aptariau savo „Solar USB Charger“projekte.

5 žingsnis: sukurkite mikrovaldiklio grandinę

Sukurkite mikrovaldiklio grandinę
Sukurkite mikrovaldiklio grandinę
Vaizdas
Vaizdas
Vaizdas
Vaizdas

Lituokite mikrovaldiklio plokštę ir maitinimo jungiklį į „perma-proto“plokštę.

Vaizdas
Vaizdas

Prijunkite saulės energijos įkroviklio išvestį prie savo jungiklio įvesties, kuri turi būti įvertinta bent 1 amperu.

Vaizdas
Vaizdas

Sukurkite ir lituokite duonos lentos laidų jungtis, aprašytas aukščiau esančioje schemoje (arba pagal jūsų asmeninės versijos specifikacijas), įskaitant 10K ištraukimo rezistorių jutiklio duomenų linijoje.

Saulės įkroviklio įkrovimo kaiščiai suteiks 3,7 V akumuliatoriaus energiją, kai nėra saulės energijos, tačiau bus maitinama tiesiai iš saulės kolektoriaus, jei jis yra prijungtas ir saulėtas. Todėl mikrovaldiklis turi atlaikyti įvairias įtampas - nuo 3,7 V iki 6 V DC. Tiems, kuriems reikalinga 5 V įtampa, „PowerBoost“(500 arba 1000, priklausomai nuo reikalingos srovės) gali būti naudojama apkrovos įtampai modifikuoti iki 5 V (kaip parodyta „Solar USB Charger“projekte). Štai keletas bendrų plokščių ir jų įėjimo įtampos diapazonų:

  • „NodeMCU ESP8266“(čia naudojamas): 5 V USB arba 3,7–10 V „Vin“
  • „Arduino Uno“: 5 V USB arba 7–12 V „Vin“
  • Adafruit Huzzah ESP8266 Breakout: 5V USB arba 3.4-6V VBat

Jei norite, kad baterija veiktų kuo ilgiau, turėtumėte šiek tiek laiko apsvarstyti ir optimizuoti bendrą dabartinę energijos srovę. ESP8266 turi gilaus miego funkciją, kurią panaudojome „Arduino“eskize, kad dramatiškai sumažintume jo energijos suvartojimą. Jis atsibunda skaityti jutiklį ir, prisijungdamas prie tinklo, pritraukia daugiau srovės, kad praneštų apie jutiklio vertę, tada vėl užmiega tam tikrą laiką. Jei jūsų mikrovaldiklis sunaudoja daug energijos ir negali būti lengvai užmigdomas, apsvarstykite galimybę perkelti projektą į suderinamą plokštę, kuri sunaudoja mažiau energijos. Jei reikia pagalbos nustatant, kuri lenta galėtų būti tinkama jūsų projektui, užduokite klausimą toliau pateiktose pastabose.

6 žingsnis: sumontuokite kabelio riebokšlius

Vaizdas
Vaizdas

Norėdami, kad saulės kolektoriaus kabelio ir jutiklio kabelio įėjimo taškai būtų atsparūs oro sąlygoms, į oro nepraleidžiančio gaubto šoną sumontuosime du kabelio sandariklius.

Vaizdas
Vaizdas
Vaizdas
Vaizdas

Išbandykite savo komponentų pritaikymą, kad nustatytumėte idealią vietą, tada pažymėkite ir gręžkite skyles vandeniui atspariame korpuse, naudodami pakopinį grąžtą. Sumontuokite du kabelių sandariklius.

Vaizdas
Vaizdas

7 žingsnis: Užbaikite grandinės surinkimą

Užbaikite grandinės surinkimą
Užbaikite grandinės surinkimą

Įkiškite vandeniui atsparaus maitinimo kabelio prievado pusę į vieną ir prilituokite prie saulės įkroviklio nuolatinės įvesties (raudona iki +, o juoda - -).

Vaizdas
Vaizdas

Įkiškite dirvožemio jutiklį per kitą liauką ir prijunkite jį prie „perma-proto“pagal schemą.

Vaizdas
Vaizdas

Užklijuokite termistoriaus zondą prie akumuliatoriaus. Tai apribos įkrovimą iki saugaus temperatūros diapazono, kol projektas bus paliktas be priežiūros lauke.

Vaizdas
Vaizdas

Įkrovimas per karštas ar per šaltas gali sugadinti akumuliatorių arba sukelti gaisrą. Esant ekstremalioms temperatūroms, galite sugadinti ir sutrumpinti baterijos tarnavimo laiką, todėl įkelkite ją į vidų, jei ji yra žemiau šalčio arba virš 45 ℃.

Vaizdas
Vaizdas

Priveržkite kabelių sandariklius, kad aplink jų kabelius būtų sandari oro sąlygoms.

8 žingsnis: Paruoškite saulės kolektorių

Paruoškite saulės kolektorių
Paruoškite saulės kolektorių

Vykdykite mano nurodymus, kad sujungtumėte saulės kolektoriaus kabelį su vandeniui atsparios nuolatinės srovės kabelių rinkinio kištuko puse.

9 žingsnis: išbandykite

Išbandykite
Išbandykite

Įjunkite akumuliatorių ir įjunkite grandinę paspausdami maitinimo jungiklį.

Vaizdas
Vaizdas

Išbandykite ir įsitikinkite, kad apie tai praneša internetas prieš uždarydami gaubtą ir įrengdami jutiklį savo žolelių sode, brangiame vazoniniame augale ar kitame dirvožemyje, esančiame jūsų „Wi -Fi“tinklo signalo diapazone.

Vaizdas
Vaizdas

Kai jutiklio duomenys bus registruojami internete, API vartų svetainėje „If This Then That“nesunku nustatyti el. Pašto ar teksto įspėjimų receptą. Aš sukonfigūravau savo el. Laišką, jei dirvožemio drėgmės lygis nukris žemiau 50.

Norėdami tai išbandyti nelaukdamas, kol augalas išdžius, rankiniu būdu įvedžiau duomenų tašką į savo drėgmės tiekimą „Adafruit IO“, kuris nukrito žemiau slenksčio. Po kelių akimirkų el. Laiškas ateina! Jei dirvožemio lygis nukrenta žemiau mano nurodyto lygio, kiekvieną kartą atnaujinus pašarą gausiu el. Laišką, kol laistysiu dirvą. Dėl sveiko proto atnaujinau savo kodą, kad dirvožemio mėginiai būtų imami daug rečiau nei kas 15 minučių.

10 žingsnis: naudokite jį lauke

Naudokite jį lauke!
Naudokite jį lauke!
Naudokite jį lauke!
Naudokite jį lauke!

Tai įdomus projektas, kurį galima pritaikyti atsižvelgiant į jūsų augalo drėkinimo poreikius, ir jį lengva pakeisti arba pridėti jutiklius arba integruoti saulės energijos funkcijas į kitus „Arduino“projektus.

Ačiū, kad sekate! Norėčiau išgirsti, ką manote; prašau paskelbti komentaruose. Šis projektas yra mano nemokamos saulės klasės dalis, kurioje galite rasti paprastų kiemo projektų ir daugiau darbo su saulės kolektoriais pamokų. Patikrinkite ir užsiregistruokite!

Jei jums patinka šis projektas, jus gali sudominti kai kurie kiti mano darbai:

  • Nemokama daiktų interneto klasė
  • „YouTube“prenumeratorių skaitiklis su ESP8266
  • Socialinės statistikos sekimo ekranas su ESP8266
  • „WiFi“orų ekranas su ESP8266
  • Valentino internetas

Norėdami neatsilikti nuo to, ką dirbu, sekite mane „YouTube“, „Instagram“, „Twitter“, „Pinterest“ir „Snapchat“.

Rekomenduojamas: