Innholdsfortegnelse:

Solar Soil Fuktmåler med ESP8266: 10 trinn (med bilder)
Solar Soil Fuktmåler med ESP8266: 10 trinn (med bilder)

Video: Solar Soil Fuktmåler med ESP8266: 10 trinn (med bilder)

Video: Solar Soil Fuktmåler med ESP8266: 10 trinn (med bilder)
Video: 4 in 1 Soil Tester 2024, Juli
Anonim

I denne instruksjonsboken lager vi en solcelledrevet jordfuktighetsmonitor. Den bruker en ESP8266 wifi -mikrokontroller med lav strømkode, og alt er vanntett slik at den kan stå ute. Du kan følge denne oppskriften nøyaktig, eller ta fra den nyttige teknikker for dine egne prosjekter.

Hvis du er ny i programmering av mikrokontroller, vennligst sjekk min Arduino Class og Internet of Things Class for å bli kjent med det grunnleggende om ledninger, koding og tilkobling til internett.

Dette prosjektet er en del av min gratis solklasse, hvor du kan lære flere måter å utnytte solens energi gjennom gravering og solcellepaneler.

For å holde tritt med det jeg jobber med, følg meg på YouTube, Instagram, Twitter, Pinterest og abonner på nyhetsbrevet mitt.

Trinn 1: Hva du trenger

Hva du trenger
Hva du trenger

Du trenger et ladebord for solbatteri og ESP8266 breakout, for eksempel NodeMCU ESP8266 eller Huzzah, samt en jordføler, batteri, strømbryter, litt ledning og et kabinett for å sette kretsen inne.

Her er komponentene og materialene som brukes til jordfuktighetsmonitor:

  • ESP8266 NodeMCU mikrokontroller (eller lignende, Vin må tåle opptil 6V)
  • Adafruit solar ladekort med valgfri termistor og 2,2K ohm motstand
  • 2200mAh li-ion batteri
  • Perma-proto bord
  • Jordfuktighet/temperatursensor
  • 2 kabelforskruninger
  • Vanntett kabinett
  • Vanntett likestrømkabelpar
  • Krympeslange
  • 3,5 W solcellepanel
  • Trykknapp av / på -bryter
  • Skumbånd med dobbel pinne

Her er verktøyene du trenger:

  • Loddejern og loddetinn
  • Helping hands verktøy
  • Wire strippere
  • Skyll snips
  • Pincett (valgfritt)
  • Varmepistol eller lighter
  • Multimeter (valgfritt, men praktisk for feilsøking)
  • USB A-mikroB-kabel
  • Saks
  • Trinnøvelse

Du trenger gratis kontoer på nettskydatasider io.adafruit.com og IFTTT.

Som Amazon Associate tjener jeg på kvalifiserte kjøp du gjør ved hjelp av tilknyttede lenker.

Trinn 2: Brødbrettsprototype

Brødbrett Prototype
Brødbrett Prototype

Det er viktig å lage en loddefri brødbrettsprototype for prosjekter som dette, slik at du kan forsikre deg om at sensoren og koden fungerer før du foretar permanente tilkoblinger.

Bilde
Bilde
Bilde
Bilde
Bilde
Bilde
Bilde
Bilde

I dette tilfellet har jordsensoren strandet ledninger til det var nødvendig å midlertidig feste solide hoder til endene på sensortrådene ved hjelp av loddetinn, hjelpende hender og noe varmekrympeslange.

Bilde
Bilde

Følg kretsdiagrammet for å koble til sensorens strøm, jord, klokke og datapinner (data får også en 10K opptrekksmotstand som følger med jordsensoren).

  • Sensor grønn 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 opptrekksmotstand mellom blå datapinne og 3,3V

Du kan oversette dette til din foretrukne mikrokontroller. Hvis du bruker en Arduino Uno eller lignende, støttes brettet ditt allerede av Arduino -programvaren. Hvis du bruker ESP8266, kan du sjekke min Internet of Things-klasse for trinnvis hjelp til å konfigurere ESP8266 i Arduino (ved å legge til tilleggsadresser i feltet Extra Boards Manager URLs i Arduinos preferanser, deretter søke etter og velge nye tavler fra styrelederen). Jeg pleier å bruke Adafruit ESP8266 Huzzah -korttype for å programmere NodeMCU ESP8266 -kortet, men du kan også installere og bruke den generiske ESP8266 -kortstøtten. Du trenger også SiLabs USB -kommunikasjonsbrikke -driver (tilgjengelig for Mac/Windows/Linux).

For å få sensoren i gang med mitt Arduino-kompatible kort, lastet jeg ned SHT1x Arduino-biblioteket fra Practical Arduinos github-side, pakket deretter ut filen og flyttet biblioteksmappen til min Arduino/biblioteker-mappen, og omdøpte den deretter til SHT1x. Åpne eksempelskissen ReadSHT1xValues og endre pin -tallene til 12 (dataPin) og 14 (clockPin), eller kopier den endrede skissen her:

#inkludere

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // Instant SHT1x objekt void setup () {Serial.begin (38400); // Åpne seriell tilkobling for å rapportere verdier til verten Serial.println ("Oppstart"); } void loop () {float temp_c; flyt temp_f; flyte fuktighet; temp_c = sht1x.readTemperatureC (); // Les verdier fra sensoren temp_f = sht1x.readTemperatureF (); fuktighet = sht1x.readHumidity (); Serial.print ("Temperatur:"); // Skriv ut verdiene til den serielle porten Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Fuktighet:"); Serial.print (fuktighet); Serial.println ("%"); forsinkelse (2000); }

Last opp denne koden til brettet ditt og åpne den serielle skjermen for å se sensordatastrømmen inn.

Hvis koden din ikke vil kompilere og klager over at SHT1x.h ikke blir funnet, har du ikke det nødvendige sensorbiblioteket installert riktig. Sjekk Arduino/biblioteker -mappen din for en som heter SHT1x, og hvis den er et annet sted, for eksempel nedlastingsmappen, flytter du den til mappen Arduino biblioteker, og gir nytt navn hvis det er nødvendig.

Hvis koden din kompilerer, men ikke vil laste opp til brettet ditt, må du dobbeltsjekke brettinnstillingene, kontrollere at kortet er plugget inn og velge riktig port fra Verktøy -menyen.

Hvis koden din lastes opp, men den serielle skjerminngangen ikke er til å kjenne igjen, må du dobbeltsjekke overføringshastigheten som er angitt i skissen (38400 i dette tilfellet).

Hvis seriell skjerminngang ikke virker korrekt, dobbeltsjekk ledningene mot kretsdiagrammet. Er din 10K pull-up-motstand på plass mellom datapinnen og 3,3V? Er data og klokke koblet til riktige pinner? Er strøm og jord tilkoblet slik de skal være i hele kretsen? Ikke fortsett før denne enkle skissen fungerer!

Det neste trinnet er spesifikt for ESP8266 og konfigurerer valgfri trådløs sensorrapporteringsdel av prøveprosjektet. Hvis du bruker en standard (ikke-trådløs) Arduino-kompatibel mikrokontroller, fortsett å utvikle den siste Arduino-skissen din og gå til Prepare Solar Charging Board.

Trinn 3: Programvareoppsett

Programvareoppsett
Programvareoppsett

For å kompilere koden for dette prosjektet med ESP8266, må du installere noen flere Arduino -biblioteker (tilgjengelig via biblioteksjefen):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Last ned koden som er vedlagt dette trinnet, pakk ut filen og åpne Solar_Powered_Soil_Moisture_Monitor_Tutorial i Arduino -programvaren.

#inkludere

#include #include #include #include // Spesifiser data og klokkeforbindelser og instantier SHT1x -objektet #define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // sette opp feedet AdafruitIO_Feed *fuktighet = io.feed ("fuktighet"); AdafruitIO_Feed *temperatur = io.feed ("temperatur"); const int sleepTime = 15; // 15 minutter

ugyldig oppsett ()

{Serial.begin (115200); // Åpne seriell tilkobling for å rapportere verdier til verten Serial.println ("Oppstart"); // koble til io.adafruit.com Serial.print ("Koble til Adafruit IO"); io.connect (); // vent på en tilkobling mens (io.status () <AIO_CONNECTED) {Serial.print ("."); forsinkelse (500); } // vi er tilkoblet Serial.println (); Serial.println (io.statusText ()); }

hulrom ()

{io.run (); // io.run (); holder klienten tilkoblet og er nødvendig for alle skisser. flyt temp_c; flyt temp_f; flyte fuktighet; temp_c = sht1x.readTemperatureC (); // Les verdier fra sensoren temp_f = sht1x.readTemperatureF (); fuktighet = sht1x.readHumidity (); Serial.print ("Temperatur:"); // Skriv ut verdiene til den serielle porten Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Fuktighet:"); Serial.print (fuktighet); Serial.println ("%"); fuktighet-> spare (fuktighet); temperatur-> lagre (temp_f); Serial.println ("ESP8266 sover …"); ESP.deepSleep (sleepTime * 1000000 * 60); // Søvn }

Denne koden er en sammensetning av sensorkoden fra tidligere i denne opplæringen og et grunnleggende eksempel fra skytatatjenesten Adafruit IO. Programmet går over i laveffektmodus og sover mesteparten av tiden, men våkner hvert 15. minutt for å lese temperaturen og fuktigheten i jorda, og rapporterer dataene til Adafruit IO. Naviger til config.h -fanen og fyll ut ditt Adafruit IO brukernavn og nøkkel, så vel som ditt lokale wifi -nettverksnavn og passord, og last deretter opp koden til din ESP8266 mikrokontroller.

Bilde
Bilde

Du må gjøre litt forberedelser på io.adafruit.com. Etter at du har opprettet feeder for temperatur og fuktighet, kan du lage et dashbord for skjermen din med en graf over sensorverdiene og begge innkommende feeds data. Hvis du trenger en oppfriskning for å komme i gang med Adafruit IO, kan du sjekke ut denne leksjonen i min Internet of Things -klasse.

Trinn 4: Forbered Solar Charging Board

Forbered Solar Charging Board
Forbered Solar Charging Board

Forbered solpanelet ved å lodde på kondensatoren og noen ledninger til lastutgangsputene. Jeg tilpasser min til å lade opp raskere med en tilleggsmotstand (valgfritt 2.2K loddet på tvers av PROG) og gjør det tryggere å forlate uten tilsyn ved å erstatte overflatemonteringsmotstanden med en 10K termistor festet til selve batteriet. Dette vil begrense lading til et trygt temperaturområde. Jeg dekket disse endringene mer detaljert i mitt Solar USB Charger -prosjekt.

Trinn 5: Bygg en mikrokontrollerkrets

Bygg en mikrokontrollerkrets
Bygg en mikrokontrollerkrets
Bilde
Bilde
Bilde
Bilde

Lodd opp mikrokontrollerkortet og strømbryteren til et perma-proto-kort.

Bilde
Bilde

Koble solstrømladerens utgang til inngangen til bryteren, som bør være vurdert til minst 1 amp.

Bilde
Bilde

Opprett og lodd brødbrettledningstilkoblingene beskrevet i kretsdiagrammet ovenfor (eller i henhold til spesifikasjonene til din personlige versjon), inkludert 10K pull-up-motstand på sensorens datalinje.

Solladerens lastestifter gir 3,7V batteristrøm når det ikke finnes solenergi, men blir drevet direkte fra solcellepanelet hvis det er tilkoblet og solfylt. Derfor må mikrokontrolleren kunne tåle en rekke spenninger, så lave som 3,7V og opptil 6V DC. For de som krever 5V, kan en PowerBoost (500 eller 1000, avhengig av nødvendig strøm) brukes til å modulere lastespenningen til 5V (som vist i Solar USB Charger -prosjektet). Her er noen vanlige tavler og deres inngangsspenningsområder:

  • NodeMCU ESP8266 (brukt 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 å oppnå lengst mulig batterilevetid, bør du ta deg tid til å vurdere og optimalisere den totale strømmen din nåværende trekker. ESP8266 har en dyp søvnfunksjon som vi brukte i Arduino -skissen for å redusere strømforbruket dramatisk. Den våkner for å lese sensoren og trekker mer strøm mens den kobler seg til nettverket for å rapportere sensorens verdi, og går deretter i dvale i en bestemt tid. Hvis mikrokontrolleren din trekker mye strøm og ikke lett kan få sove, bør du vurdere å overføre prosjektet til et kompatibelt kort som trekker mindre strøm. Still et spørsmål i kommentarene nedenfor hvis du trenger hjelp til å identifisere hvilket brett som kan passe for prosjektet ditt.

Trinn 6: Installer kabelforskruninger

Bilde
Bilde

For å lage værbestandige inngangspunkter for solcellepanelkabelen og sensorkabelen, installerer vi to kabelgjennomføringer på siden av det værbestandige kabinettet.

Bilde
Bilde
Bilde
Bilde

Test tilpass komponentene dine for å identifisere den ideelle plasseringen, og merk og bor hull i et vanntett kabinett med en trinnbor. Installer de to kabelgjennomføringene.

Bilde
Bilde

Trinn 7: Fullfør kretsmontering

Komplett kretsmontering
Komplett kretsmontering

Sett babord side av en vanntett strømkabel i en og lodd den til solcelleladerens DC -inngang (rød til + og svart til -).

Bilde
Bilde

Sett jordsensoren gjennom den andre kjertelen, og koble den til perma-proto i henhold til kretsdiagrammet.

Bilde
Bilde

Tape termistorsonden til batteriet. Dette vil begrense lading til et trygt temperaturområde mens prosjektet står uten tilsyn utenfor.

Bilde
Bilde

Lading mens den er for varm eller for kald, kan skade batteriet eller starte en brann. Eksponering for ekstreme temperaturer kan forårsake skade og forkorte batteriets levetid, så ta det med deg innvendig hvis det er under frysepunktet eller over 45 ℃/113F.

Bilde
Bilde

Stram kabelgjennomføringene for å lage en værbestandig tetning rundt de respektive kablene.

Trinn 8: Forbered solcellepanel

Forbered solcellepanel
Forbered solcellepanel

Følg instruksjonene mine for å skjøte kabelen til solcellepanelet ditt med pluggsiden av det vanntette likestrømkabelsettet.

Trinn 9: Test den

Test den
Test den

Koble til batteriet og slå på kretsen ved å trykke på strømbryteren.

Bilde
Bilde

Test det ut og vær sikker på at det rapporterer til internett før du lukker kabinettet og installerer sensoren i urtehagen din, dyrebare potteplanter eller annen jord innenfor signalområdet til wifi -nettverket ditt.

Bilde
Bilde

Når dataene fra sensoren er logget på nettet, er det enkelt å sette opp en oppskrift på e -post eller tekstvarsler på API -gateway -området If This Then That. Jeg konfigurerte min til å sende meg en e -post hvis jordens fuktighetsnivå faller under 50.

For å teste den uten å vente på at planten min tørket ut, skrev jeg manuelt inn et datapunkt i fuktighetsfôret mitt på Adafruit IO som falt under terskelen. Noen øyeblikk senere kommer e -posten! Hvis jordens nivåer faller under det angitte nivået, får jeg en e -post hver gang feedet oppdateres til jeg vanner jorda. For min fornuft oppdaterte jeg koden min for å prøve jorda mye sjeldnere enn hvert 15. minutt.

Trinn 10: Bruk den utenfor

Bruk den utenfor!
Bruk den utenfor!
Bruk den utenfor!
Bruk den utenfor!

Dette er et morsomt prosjekt å tilpasse basert på anleggets hydratiseringsbehov, og det er enkelt å bytte ut eller legge til sensorer eller integrere solenergifunksjonene i dine andre Arduino -prosjekter.

Takk for at du følger med! Jeg vil gjerne høre hva du synes; vennligst legg ut i kommentarene. Dette prosjektet er en del av min gratis Solar Class, hvor du kan finne enkle bakgårdsprosjekter og flere leksjoner om å jobbe med solcellepaneler. Sjekk det og meld deg på!

Hvis du liker dette prosjektet, kan du være interessert i noen av mine andre:

  • gratis tingenes internett
  • YouTube -abonnentteller med ESP8266
  • Sosial statistikk -sporingsskjerm med ESP8266
  • WiFi værvisning med ESP8266
  • Internett Valentine

For å holde tritt med det jeg jobber med, følg meg på YouTube, Instagram, Twitter, Pinterest og Snapchat.

Anbefalt: