Indholdsfortegnelse:

Solar Soil Moisture Meter med ESP8266: 10 trin (med billeder)
Solar Soil Moisture Meter med ESP8266: 10 trin (med billeder)

Video: Solar Soil Moisture Meter med ESP8266: 10 trin (med billeder)

Video: Solar Soil Moisture Meter med ESP8266: 10 trin (med billeder)
Video: SoilSense: wireless soil moisture sensor system 2024, December
Anonim

I denne instruktør laver vi en soldrevet jordfugtighedsmonitor. Den bruger en ESP8266 wifi -mikrokontroller med lav strømkode, og alt er vandtæt, så det kan efterlades udenfor. Du kan følge denne opskrift nøjagtigt eller tage de nyttige teknikker til dine egne projekter fra den.

Hvis du er ny inden for programmering af mikrokontroller, kan du tjekke min Arduino Class og Internet of Things Class for at blive fanget af det grundlæggende om ledninger, kodning og forbindelse til internettet.

Dette projekt er en del af min gratis solklasse, hvor du kan lære flere måder at udnytte solens energi gennem gravering og solpaneler.

For at følge med i det, jeg arbejder på, skal du følge mig på YouTube, Instagram, Twitter, Pinterest og abonnere på mit nyhedsbrev.

Trin 1: Hvad skal du bruge

Hvad du skal bruge
Hvad du skal bruge

Du skal bruge et opladningskort til solbatteri og ESP8266 -udbrud, såsom NodeMCU ESP8266 eller Huzzah, samt en jordføler, batteri, afbryder, noget ledning og et kabinet for at sætte dit kredsløb inde.

Her er de komponenter og materialer, der bruges til jordfugtighedsovervågning:

  • ESP8266 NodeMCU mikrokontroller (eller lignende, Vin skal tåle op til 6V)
  • Adafruit solopladningstavle med valgfri termistor og 2,2K ohm modstand
  • 2200mAh li-ion batteri
  • Perma-proto bord
  • Jordfugtigheds-/temperatursensor
  • 2 kabelforskruninger
  • Vandtæt kabinet
  • Vandtæt DC -strømkabelpar
  • Krympeslange
  • 3,5 W solpanel
  • Tænd / sluk -knap
  • Skumbånd med dobbelt stick

Her er de værktøjer, du skal bruge:

  • Loddejern og loddetin
  • Hjælpende hænder værktøj
  • Wire strippere
  • Skyl snips
  • Pincet (valgfrit)
  • Varmepistol eller lighter
  • Multimeter (valgfrit, men praktisk til fejlfinding)
  • USB A-microB-kabel
  • Saks
  • Trinbor

Du skal bruge gratis konti på clouddatasider io.adafruit.com og IFTTT.

Som Amazon Associate tjener jeg på kvalificerede køb, du foretager ved hjælp af mine affiliate links.

Trin 2: Breadboard Prototype

Brødbræt Prototype
Brødbræt Prototype

Det er vigtigt at oprette en loddefri brødbræt -prototype til projekter som dette, så du kan sikre dig, at din sensor og kode fungerer, før du foretager permanente forbindelser.

Billede
Billede
Billede
Billede
Billede
Billede
Billede
Billede

I dette tilfælde har jordsensoren strandet ledninger til det var nødvendigt midlertidigt at fastgøre solide hoveder til enderne af sensortråde ved hjælp af lodde, hjælpende hænder og nogle varmekrympeslanger.

Billede
Billede

Følg kredsløbsdiagrammet for at tilslutte sensorens strøm, jord, ur og datapinde (data får også en 10K pull-up-modstand, der følger med jordføleren).

  • Sensor grøn ledning til GND
  • Sensor rød ledning til 3,3V
  • Sensor gul ledning til NodeMCU pin D5 (GPIO 14)
  • Sensor blå ledning til NodeMCU pin D6 (GPIO 12)
  • 10K pull-up modstand mellem blå datastift og 3,3V

Du kan oversætte dette til din foretrukne mikrokontroller. Hvis du bruger en Arduino Uno eller lignende, understøttes dit bord allerede af Arduino -softwaren. Hvis du bruger ESP8266, kan du tjekke min Internet of Things-klasse for trin-for-trin hjælp til at blive konfigureret med ESP8266 i Arduino (ved at tilføje supplerende webadresser til feltet Extra Boards Manager URLs i Arduinos præferencer, derefter søge efter og valg af nye bestyrelser fra bestyrelseschefen). Jeg plejer at bruge Adafruit ESP8266 Huzzah -korttypen til at programmere NodeMCU ESP8266 -kortet, men du kan også installere og bruge den generiske ESP8266 -kortstøtte. Du skal også bruge SiLabs USB -kommunikationschipdriver (tilgængelig til Mac/Windows/Linux).

For at få sensoren til at køre med mit Arduino-kompatible bord, downloadede jeg SHT1x Arduino-biblioteket fra Practical Arduinos github-side, derefter pakket filen ud og flyttede biblioteksmappen til min Arduino/biblioteksmappe og omdøbte den derefter til SHT1x. Åbn eksempelskitsen ReadSHT1xValues, og skift pin -numrene til 12 (dataPin) og 14 (clockPin), eller kopier den ændrede skitse her:

#omfatte

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // Instant SHT1x objekt void setup () {Serial.begin (38400); // Åbn seriel forbindelse for at rapportere værdier til vært Serial.println ("Start"); } void loop () {float temp_c; flyde temp_f; flyde fugtighed; temp_c = sht1x.readTemperatureC (); // Læs værdier fra sensoren temp_f = sht1x.readTemperatureF (); fugtighed = sht1x.readHumidity (); Serial.print ("Temperatur:"); // Udskriv værdierne til den serielle port Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Fugtighed:"); Serielt tryk (fugtighed); Serial.println ("%"); forsinkelse (2000); }

Upload denne kode til dit kort, og åbn den serielle skærm for at se sensordatastrømmen.

Hvis din kode ikke kompileres og klager over, at SHT1x.h ikke findes, har du ikke installeret det nødvendige sensorbibliotek korrekt. Kontroller din Arduino/biblioteks -mappe for en, der hedder SHT1x, og hvis den er et andet sted, f.eks. Din downloads -mappe, skal du flytte den til din Arduino -biblioteksmappe og omdøbe, hvis det er nødvendigt.

Hvis din kode kompilerer, men ikke uploader til dit board, skal du kontrollere dine boardindstillinger, kontrollere at dit board er tilsluttet og vælge den korrekte port i menuen Tools.

Hvis din kode uploades, men din serielle skærmindgang ikke er genkendelig, skal du kontrollere dine baudhastighedsmatcher, der er angivet i din skitse (38400 i dette tilfælde).

Hvis din serielle monitorindgang ikke virker korrekt, skal du kontrollere din ledning i forhold til kredsløbsdiagrammet. Er din 10K pull-up modstand på plads mellem datapinden og 3,3V? Er data og ur forbundet med de korrekte ben? Er strøm og jord forbundet som de skal være i hele kredsløbet? Fortsæt ikke, før denne enkle skitse virker!

Det næste trin er specifikt for ESP8266 og konfigurerer den valgfri trådløse sensorrapporteringsdel af prøveprojektet. Hvis du bruger en standard (ikke-trådløs) Arduino-kompatibel mikrokontroller, skal du fortsætte med at udvikle din sidste Arduino-skitse og springe til Prepare Solar Charging Board.

Trin 3: Softwareopsætning

Opsætning af software
Opsætning af software

For at kompilere koden til dette projekt med ESP8266 skal du installere et par flere Arduino -biblioteker (tilgængelige via biblioteksadministratoren):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Download koden, der er knyttet til dette trin, og pak derefter filen ud, og åbn Solar_Powered_Soil_Moisture_Monitor_Tutorial i din Arduino -software.

#omfatte

#include #include #include #include // Angiv data og urforbindelser, og instantier SHT1x -objektet #definer dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // konfigurer feedet AdafruitIO_Feed *luftfugtighed = io.feed ("luftfugtighed"); AdafruitIO_Feed *temperatur = io.feed ("temperatur"); const int sleepTime = 15; // 15 minutter

ugyldig opsætning ()

{Serial.begin (115200); // Åbn seriel forbindelse for at rapportere værdier til vært Serial.println ("Start"); // oprette forbindelse til io.adafruit.com Serial.print ("Opretter forbindelse til Adafruit IO"); io.connect (); // vent på en forbindelse, mens (io.status () <AIO_CONNECTED) {Serial.print ("."); forsinkelse (500); } // vi er forbundet Serial.println (); Serial.println (io.statusText ()); }

hulrum ()

{io.run (); // io.run (); holder klienten tilsluttet og er påkrævet for alle skitser. flyde temp_c; flyde temp_f; flyde fugt; temp_c = sht1x.readTemperatureC (); // Læs værdier fra sensoren temp_f = sht1x.readTemperatureF (); fugt = sht1x.readHumidity (); Serial.print ("Temperatur:"); // Udskriv værdierne til den serielle port Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Fugtighed:"); Seriel.print (fugt); Serial.println ("%"); fugtighed-> spare (fugt); temperatur-> gem (temp_f); Serial.println ("ESP8266 sover …"); ESP.deepSleep (sleepTime * 1000000 * 60); // Søvn }

Denne kode er en sammenblanding af sensorkoden fra tidligere i denne vejledning og et grundlæggende eksempel fra cloud -datatjenesten Adafruit IO. Programmet går i laveffekttilstand og sover det meste af tiden, men vågner hvert 15. minut for at aflæse jordens temperatur og fugtighed og rapporterer sine data til Adafruit IO. Naviger til fanen config.h, og udfyld dit Adafruit IO -brugernavn og -nøgle samt dit lokale wifi -netværksnavn og adgangskode, og upload derefter koden til din ESP8266 mikrokontroller.

Billede
Billede

Du bliver nødt til at lave lidt forberedelse på io.adafruit.com. Når du har oprettet feeds til temperatur og fugtighed, kan du oprette et dashboard til din skærm med en graf over sensorværdierne og begge indgående feeds data. Hvis du har brug for en opdatering om at komme i gang med Adafruit IO, kan du tjekke denne lektion i min Internet of Things -klasse.

Trin 4: Forbered Solar Charging Board

Forbered Solar Charging Board
Forbered Solar Charging Board

Forbered solopladningspladen ved at lodde på dens kondensator og nogle ledninger til belastningsudgangspuderne. Jeg tilpasser min til at oplade hurtigere med en valgfri tilføjelsesmodstand (2,2K loddet på tværs af PROG) og gør det mere sikkert at forlade uden opsyn ved at udskifte overflademonteringsmodstanden med en 10K termistor fastgjort til selve batteriet. Dette vil begrænse opladningen til et sikkert temperaturområde. Jeg dækkede disse ændringer mere detaljeret i mit Solar USB Charger -projekt.

Trin 5: Byg mikrokontroller kredsløb

Byg mikrokontroller kredsløb
Byg mikrokontroller kredsløb
Billede
Billede
Billede
Billede

Lod mikrokontrollerkortet og afbryderen til et perma-proto-kort.

Billede
Billede

Slut solcelleladerens udgang til indgangen på din switch, som skal vurderes til mindst 1 amp.

Billede
Billede

Opret og lod lodbrødsforbindelserne, der er beskrevet i kredsløbsdiagrammet ovenfor (eller i henhold til dine personlige versioners specifikationer), herunder 10K pull-up-modstanden på sensorens datalinje.

Solopladerens Load pins vil levere 3,7V batteristrøm, når der ikke findes solenergi, men vil blive drevet direkte fra solpanelet, hvis det er tilsluttet og solrigt. Derfor skal mikrokontrolleren være i stand til at tolerere en række spændinger, så lave som 3,7V og op til 6V DC. For dem, der kræver 5V, kan en PowerBoost (500 eller 1000, afhængigt af den nødvendige strøm) bruges til at modulere belastningsspændingen til 5V (som vist i Solar USB Charger -projektet). Her er nogle almindelige tavler og deres indgangsspændingsområder:

  • NodeMCU ESP8266 (brugt her): 5V USB eller 3.7V-10V Vin
  • Arduino Uno: 5V USB eller 7-12V Vin
  • Adafruit Huzzah ESP8266 Breakout: 5V USB eller 3.4-6V VBat

For at opnå den længst mulige batterilevetid, bør du tage dig tid til at overveje og optimere den samlede strøm, din nuværende trækker. ESP8266 har en dyb søvnfunktion, som vi brugte i Arduino -skitsen til at reducere strømforbruget dramatisk. Den vågner for at læse sensoren og trækker mere strøm, mens den opretter forbindelse til netværket for at rapportere sensorens værdi, og går derefter i dvale i et bestemt tidsrum. Hvis din mikrokontroller trækker meget strøm og ikke let kan få den til at sove, kan du overveje at overføre dit projekt til et kompatibelt kort, der trækker mindre strøm. Stil et spørgsmål i kommentarerne herunder, hvis du har brug for hjælp til at identificere, hvilket board der kunne passe til dit projekt.

Trin 6: Installer kabelforskruninger

Billede
Billede

For at lave vejrbestandige indgangspunkter til solpanelkablet og sensorkablet installerer vi to kabelforskruninger i siden af det vejrbestandige kabinet.

Billede
Billede
Billede
Billede

Test dine komponenter for at identificere den ideelle placering, og afmærk derefter og bor huller i et vandtæt kabinet ved hjælp af en trinbor. Installer de to kabelforskruninger.

Billede
Billede

Trin 7: Komplet kredsløbssamling

Komplet kredsløbssamling
Komplet kredsløbssamling

Sæt babord side af et vandtæt strømkabel i et og lod det til solcelleladerens DC -indgang (rød til + og sort til -).

Billede
Billede

Indsæt jordsensoren gennem den anden kirtel, og tilslut den til perma-proto ifølge kredsløbsdiagrammet.

Billede
Billede

Tape termistorsonden til batteriet. Dette vil begrænse opladningen til et sikkert temperaturområde, mens projektet efterlades uden opsyn udenfor.

Billede
Billede

Opladning, mens den er for varm eller for kold, kan beskadige batteriet eller starte en brand. Udsættelse for ekstreme temperaturer kan forårsage skade og forkorte batteriets levetid, så tag det indeni, hvis det er under frysepunktet eller over 45 ℃/113F.

Billede
Billede

Spænd kabelforskruninger for at lave en vejrbestandig tætning omkring deres respektive kabler.

Trin 8: Forbered solpanel

Forbered solpanel
Forbered solpanel

Følg min instruktion for at splejse kablet til dit solpanel med stikket på det vandtætte DC -strømkabelsæt.

Trin 9: Test det

Test det
Test det

Tilslut batteriet, og tænd for kredsløbet ved at trykke på afbryderen.

Billede
Billede

Test det og vær sikker på, at det rapporterer til internettet, før du lukker kabinettet og installerer sensoren i din urtehave, dyrebare potteplante eller anden jord inden for signalområdet for dit wifi -netværk.

Billede
Billede

Når dataene fra sensoren er logget online, er det let at oprette en opskrift på e -mail eller tekstadvarsler på API -gateway -stedet If This Then That. Jeg konfigurerede min til at sende mig en e -mail, hvis jordens fugtighedsniveau falder til under 50.

For at teste det uden at vente på, at mit anlæg tørrer ud, indtastede jeg manuelt et datapunkt til mit fugtighedsfoder på Adafruit IO, der faldt under tærsklen. Et øjeblik efter kommer mailen! Hvis jordens niveauer falder under mit angivne niveau, får jeg en e -mail hver gang foderet opdateres, indtil jeg vander jorden. For min fornuft opdaterede jeg min kode for at prøve jorden meget sjældnere end hvert 15. minut.

Trin 10: Brug det udenfor

Brug det udenfor!
Brug det udenfor!
Brug det udenfor!
Brug det udenfor!

Dette er et sjovt projekt at tilpasse baseret på dit anlægs hydratiseringsbehov, og det er let at skifte eller tilføje sensorer eller integrere solenergifunktionerne i dine andre Arduino -projekter.

Tak fordi du følger med! Jeg ville elske at høre, hvad du synes; post venligst i kommentarerne. Dette projekt er en del af min gratis Solar Class, hvor du kan finde lette baggårdsprojekter og flere lektioner om arbejde med solpaneler. Tjek det ud og tilmeld dig!

Hvis du kan lide dette projekt, kan du være interesseret i nogle af mine andre:

  • gratis tingenes internetklasse
  • YouTube -abonnenttæller med ESP8266
  • Social Stats Tracker Display med ESP8266
  • WiFi vejrvisning med ESP8266
  • Internet Valentine

For at følge med i det, jeg arbejder på, skal du følge mig på YouTube, Instagram, Twitter, Pinterest og Snapchat.

Anbefalede: