Indholdsfortegnelse:
- Trin 1: Hvad skal du bruge
- Trin 2: Breadboard Prototype
- Trin 3: Softwareopsætning
- Trin 4: Forbered Solar Charging Board
- Trin 5: Byg mikrokontroller kredsløb
- Trin 6: Installer kabelforskruninger
- Trin 7: Komplet kredsløbssamling
- Trin 8: Forbered solpanel
- Trin 9: Test det
- Trin 10: Brug det udenfor
Video: Solar Soil Moisture Meter med ESP8266: 10 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
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
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
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.
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.
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
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.
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 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
Lod mikrokontrollerkortet og afbryderen til et perma-proto-kort.
Slut solcelleladerens udgang til indgangen på din switch, som skal vurderes til mindst 1 amp.
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
For at lave vejrbestandige indgangspunkter til solpanelkablet og sensorkablet installerer vi to kabelforskruninger i siden af det vejrbestandige kabinet.
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.
Trin 7: 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 -).
Indsæt jordsensoren gennem den anden kirtel, og tilslut den til perma-proto ifølge kredsløbsdiagrammet.
Tape termistorsonden til batteriet. Dette vil begrænse opladningen til et sikkert temperaturområde, mens projektet efterlades uden opsyn udenfor.
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.
Spænd kabelforskruninger for at lave en vejrbestandig tætning omkring deres respektive kabler.
Trin 8: 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
Tilslut batteriet, og tænd for kredsløbet ved at trykke på afbryderen.
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.
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
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:
Brug Soil Moisture Sensor With Magicbit [Magicblocks]: 5 trin
Brug Soil Moisture Sensor With Magicbit [Magicblocks]: Denne vejledning lærer dig at bruge Soil Moisture Sensor med din Magicbit ved hjælp af Magicblocks. Vi bruger magicbit som udviklingstavle i dette projekt, der er baseret på ESP32. Derfor kan ethvert ESP32 -udviklingsbord bruges i dette projekt
Arduino Soil Moisture Monitoring Stick - Glem aldrig at vande dine planter: 4 trin (med billeder)
Arduino Soil Moisture Monitoring Stick - Glem aldrig at vande dine planter: Glemmer du ofte at vande dine indendørs planter? Eller måske giver du dem for meget opmærksomhed og overvand dem? Hvis du gør det, skal du gøre dig selv til en batteridrevet jordfugtighedsovervågningspind. Denne skærm bruger en kapacitiv jordfugtighed
IOT WiFi Flower Moisture Sensor (batteridrevet): 8 trin (med billeder)
IOT WiFi Flower Moisture Sensor (batteridrevet): I denne instruktør præsenterer vi, hvordan du opbygger WiFi -fugt-/vandsensor med en batteriniveauovervågning på mindre end 30 minutter. Enheden overvåger et fugtniveau og sender data til en smartphone over internettet (MQTT) med et valgt tidsinterval. U
Arduino Soil Moisture Project: 4 trin
Arduino Soil Moisture Project: Hej fyre I dag præsenterer jeg mit første projekt for instruktører. Det handler om måling af jordfugtighed med Arduino og kun en sensor. Dette projekt er meget let at lave, og alle, der ønsker at begynde at lære at arbejde med Arduino -platform, skal
Soil Moisture Sensing - SF: 4 trin (med billeder)
Soil Moisture Sensing - SF: For at starte testplanen startede vi med vores mål, som var at designe en enhed, der ville være i stand til at registrere, om en jordprøve er våd fra regn eller ej. For at udføre denne plan var vi nødt til at lære at bruge og opsætte en jordfugtighed korrekt