Innehållsförteckning:

Solar Soil Moisture Meter med ESP8266: 10 steg (med bilder)
Solar Soil Moisture Meter med ESP8266: 10 steg (med bilder)

Video: Solar Soil Moisture Meter med ESP8266: 10 steg (med bilder)

Video: Solar Soil Moisture Meter med ESP8266: 10 steg (med bilder)
Video: Solar Soil Moisture Meter // Becky Stern 2024, November
Anonim

I denna instruktör gör vi en soldriven jordfuktighetsmonitor. Den använder en ESP8266 wifi -mikrokontroller med låg effektkod, och allt är vattentätt så att det kan lämnas utanför. Du kan följa detta recept exakt, eller ta därifrån användbara tekniker för dina egna projekt.

Om du är ny på programmering av mikrokontroller, kolla in min Arduino -klass och Internet of Things -klass för att komma in på grunderna för kabeldragning, kodning och anslutning till internet.

Detta projekt är en del av min gratis solklass, där du kan lära dig fler sätt att utnyttja solens energi genom gravyr och solpaneler.

För att hänga med i det jag jobbar med, följ mig på YouTube, Instagram, Twitter, Pinterest och prenumerera på mitt nyhetsbrev.

Steg 1: Vad du behöver

Vad du behöver
Vad du behöver

Du behöver ett laddningsbräda för solbatterier och ESP8266 -utbrott, till exempel NodeMCU ESP8266 eller Huzzah, samt en jordsensor, batteri, strömbrytare, lite tråd och ett hölje för att sätta in kretsen inuti.

Här är komponenterna och materialen som används för markfuktmätaren:

  • ESP8266 NodeMCU mikrokontroller (eller liknande, Vin måste tåla upp till 6V)
  • Adafruit solar laddningskort med valfri termistor och 2,2K ohm motstånd
  • 2200mAh li-ion batteri
  • Perma-proto tavla
  • Jordfuktighet/temperaturgivare
  • 2 kabelförskruvningar
  • Vattentät kapsling
  • Vattentätt DC -strömkabelpar
  • Krympslang
  • 3,5 W solpanel
  • Tryckknapp strömbrytare
  • Dubbelstickad skumtejp

Här är de verktyg du behöver:

  • Lödkolv och löd
  • Hjälpande händer verktyg
  • Wire strippers
  • Spola klipp
  • Pincett (valfritt)
  • Värmepistol eller tändare
  • Multimeter (valfritt men praktiskt för felsökning)
  • USB A-microB-kabel
  • Sax
  • Stegborr

Du behöver gratis konton på molndatasidor io.adafruit.com och IFTTT.

Som Amazon Associate tjänar jag på kvalificerade köp som du gör med mina länkar.

Steg 2: Brödbräda -prototyp

Brödbräda Prototyp
Brödbräda Prototyp

Det är viktigt att skapa en lödlös prototyp för brödbräda för sådana här projekt, så att du kan se till att din sensor och kod fungerar innan du gör permanenta anslutningar.

Bild
Bild
Bild
Bild
Bild
Bild
Bild
Bild

I detta fall har jordsensorn strängade trådar till det var nödvändigt att tillfälligt fästa fasta huvuden till sensortrådarnas ändar med lödning, hjälpande händer och lite värmekrympslang.

Bild
Bild

Följ kretsschemat för att koppla upp sensorns effekt, jord, klocka och datapinnar (data får också ett 10K uppdragningsmotstånd som följer med jordsensorn).

  • Sensor grön tråd till GND
  • Sensor röd tråd till 3,3V
  • Sensor gul tråd till NodeMCU -stift D5 (GPIO 14)
  • Sensor blå kabel till NodeMCU -stift D6 (GPIO 12)
  • 10K uppdragningsmotstånd mellan blå datastift och 3,3V

Du kan översätta detta till din föredragna mikrokontroller. Om du använder en Arduino Uno eller liknande stöds ditt kort redan av Arduino -programvaran. Om du använder ESP8266, kolla in min Internet of Things-klass för steg-för-steg-hjälp med att konfigurera ESP8266 i Arduino (genom att lägga till ytterligare URL: er i fältet Extra Boards Manager URLs i Arduinos inställningar, sedan söka efter och välja nya styrelser från styrelsechefen). Jag brukar använda Adafruit ESP8266 Huzzah -korttyp för att programmera NodeMCU ESP8266 -kortet, men du kan också installera och använda det generiska ESP8266 -kortstödet. Du behöver också SiLabs USB -kommunikationschip -drivrutin (tillgänglig för Mac/Windows/Linux).

För att få sensorn igång med mitt Arduino-kompatibla kort laddade jag ner SHT1x Arduino-biblioteket från Practical Arduinos github-sida, packade sedan upp filen och flyttade biblioteksmappen till min Arduino/bibliotek-mapp och döpte om den till SHT1x. Öppna exempelskissen ReadSHT1xValues och ändra stiftnumren till 12 (dataPin) och 14 (clockPin), eller kopiera den modifierade skissen här:

#omfatta

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // instansera SHT1x objekt void setup () {Serial.begin (38400); // Öppna seriell anslutning för att rapportera värden till värden Serial.println ("Starta upp"); } void loop () {float temp_c; float temp_f; flytande luftfuktighet; temp_c = sht1x.readTemperatureC (); // Läs värden från sensorn temp_f = sht1x.readTemperatureF (); fuktighet = sht1x.readHumidity (); Serial.print ("Temperatur:"); // Skriv ut värdena till serieporten Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Luftfuktighet:"); Seriellt tryck (luftfuktighet); Serial.println ("%"); fördröjning (2000); }

Ladda upp den här koden till ditt kort och öppna den seriella bildskärmen för att se sensordataströmmen.

Om din kod inte kommer att kompileras och klagar över att SHT1x.h inte hittas har du inte det nödvändiga sensorbiblioteket installerat korrekt. Kontrollera din Arduino/biblioteksmapp för en som heter SHT1x, och om det är någon annanstans, som din nedladdningsmapp, flytta den till din Arduino biblioteksmapp och byt namn om det behövs.

Om din kod kompilerar men inte laddar upp till ditt kort, dubbelkolla dina kortinställningar, se till att kortet är anslutet och välj rätt port på menyn Verktyg.

Om din kod laddas upp men din seriella bildskärmsingång inte känns igen, dubbelkolla dina överföringshastigheter som anges i din skiss (38400 i det här fallet).

Om din seriella bildskärmsingång inte verkar stämma, dubbelkolla kabeldragningen mot kretsschemat. Är ditt 10K uppdragningsmotstånd på plats mellan datapinnen och 3,3V? Är data och klocka anslutna till rätt stift? Är ström och jord anslutna som de ska vara i hela kretsen? Fortsätt inte förrän den här enkla skissen fungerar!

Nästa steg är specifikt för ESP8266 och konfigurerar den valfria trådlösa sensorrapporteringsdelen av provprojektet. Om du använder en standard (icke-trådlös) Arduino-kompatibel mikrokontroller, fortsätt att utveckla din sista Arduino-skiss och hoppa till Preparera solcellsladdningskort.

Steg 3: Programinstallation

Programvaruinstallation
Programvaruinstallation

För att kompilera koden för detta projekt med ESP8266 måste du installera några fler Arduino -bibliotek (tillgängliga via bibliotekshanteraren):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Ladda ner koden som bifogas detta steg, packa upp filen och öppna Solar_Powered_Soil_Moisture_Monitor_Tutorial i din Arduino -programvara.

#omfatta

#include #include #include #include // Ange data och klockanslutningar och instansera SHT1x -objektet #define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x (dataPin, clockPin); // ställ in flödet AdafruitIO_Feed *fuktighet = io.feed ("fuktighet"); AdafruitIO_Feed *temperatur = io.feed ("temperatur"); const int sleepTime = 15; // 15 minuter

void setup ()

{Serial.begin (115200); // Öppna seriell anslutning för att rapportera värden till värden Serial.println ("Starta upp"); // ansluta till io.adafruit.com Serial.print ("Ansluter till Adafruit IO"); io.connect (); // vänta på en anslutning medan (io.status () <AIO_CONNECTED) {Serial.print ("."); fördröjning (500); } // vi är anslutna Serial.println (); Serial.println (io.statusText ()); }

void loop ()

{io.run (); // io.run (); håller klienten ansluten och krävs för alla skisser. float temp_c; float temp_f; flyta fukt; temp_c = sht1x.readTemperatureC (); // Läs värden från sensorn temp_f = sht1x.readTemperatureF (); fukt = sht1x.readHumidity (); Serial.print ("Temperatur:"); // Skriv ut värdena till serieporten Serial.print (temp_c, DEC); Serial.print ("C /"); Serial.print (temp_f, DEC); Serial.print ("F. Luftfuktighet:"); Serial.print (fukt); Serial.println ("%"); fukt-> spara (fukt); temperatur-> spara (temp_f); Serial.println ("ESP8266 sover …"); ESP.deepSleep (sleepTime * 1000000 * 60); // Sömn }

Denna kod är en sammanställning av sensorkoden från tidigare i den här självstudien och ett grundläggande exempel från molndatatjänsten Adafruit IO. Programmet går in i lågeffektläge och sover för det mesta, men vaknar var 15: e minut för att läsa av temperaturen och fuktigheten i jorden och rapporterar sina data till Adafruit IO. Navigera till fliken config.h och fyll i ditt Adafruit IO -användarnamn och nyckel, samt ditt lokala wifi -nätverksnamn och lösenord, ladda sedan upp koden till din ESP8266 mikrokontroller.

Bild
Bild

Du måste göra lite förberedelser på io.adafruit.com. När du har skapat flöden för temperatur och luftfuktighet kan du skapa en instrumentpanel för din bildskärm med en graf över sensorvärdena och båda inkommande flödesdata. Om du behöver en uppdatering för att komma igång med Adafruit IO, kolla in den här lektionen i min Internet of Things -klass.

Steg 4: Förbered Solar Charging Board

Förbered Solar Charging Board
Förbered Solar Charging Board

Förbered solcells laddningskortet genom att lödda på dess kondensator och några ledningar till lastutmatningsdynorna. Jag anpassar min för att ladda snabbare med ett tilläggsmotstånd (2.2K lödt över PROG) som tillval och gör det säkrare att lämna obevakad genom att ersätta ytmonteringsmotståndet med en 10K termistor ansluten till själva batteriet. Detta kommer att begränsa laddningen till ett säkert temperaturintervall. Jag täckte mer om dessa ändringar i mitt Solar USB -laddarprojekt.

Steg 5: Bygg en mikrokontrollkrets

Bygg Microcontroller Circuit
Bygg Microcontroller Circuit
Bild
Bild
Bild
Bild

Löd upp mikrokontrollerkortet och strömbrytaren till ett perma-proto-kort.

Bild
Bild

Anslut solcellsladdarens uteffekt till ingången på din switch, som bör ha en effekt på minst 1 ampere.

Bild
Bild

Skapa och löd brödbrädans trådanslutningar som beskrivs i kretsschemat ovan (eller enligt din personliga version), inklusive 10K uppdragningsmotstånd på sensorns datalinje.

Solladdarens laddningsstift kommer att ge 3,7 V batteri när det inte finns någon solenergi, men kommer att drivas direkt från solpanelen om den är inkopplad och solig. Därför måste mikrokontrollern kunna tolerera en mängd olika spänningar, så låga som 3,7V och upp till 6V DC. För dem som kräver 5V kan en PowerBoost (500 eller 1000, beroende på den aktuella strömmen) användas för att modulera lastspänningen till 5V (som visas i Solar USB Charger -projektet). Här är några vanliga kort och deras ingångsspänningsområden:

  • NodeMCU ESP8266 (används här): 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

För att uppnå den längsta möjliga batteritiden bör du ta dig tid att överväga och optimera den totala strömmen som din nuvarande drar. ESP8266 har en djup sömnfunktion som vi använde i Arduino -skissen för att minska dess strömförbrukning dramatiskt. Den vaknar för att läsa sensorn och drar mer ström medan den ansluter till nätverket för att rapportera sensorns värde och går sedan tillbaka till viloläge under en viss tid. Om din mikrokontroller drar mycket ström och inte lätt kan få vila, överväg att porta ditt projekt till ett kompatibelt kort som drar mindre ström. Ställ en fråga i kommentarerna nedan om du behöver hjälp med att identifiera vilken tavla som kan vara rätt för ditt projekt.

Steg 6: Installera kabelförskruvningar

Bild
Bild

För att göra väderbeständiga ingångspunkter för solpanelkabeln och sensorkabel installerar vi två kabelgenomföringar på sidan av det väderbeständiga höljet.

Bild
Bild
Bild
Bild

Testa dina komponenter för att identifiera den perfekta placeringen, markera och borra sedan hål i ett vattentätt hölje med en stegborr. Installera de två kabelförskruvningarna.

Bild
Bild

Steg 7: Komplett kretsmontering

Komplett kretsmontering
Komplett kretsmontering

Sätt i babordssidan på en vattentät strömkabel i en och löd den till solcellsladdarens DC -ingång (röd till + och svart till -).

Bild
Bild

För in jordsensorn genom den andra körteln och anslut den till perma-proto enligt kretsschemat.

Bild
Bild

Tejpa termistorsonden till batteriet. Detta kommer att begränsa laddningen till ett säkert temperaturintervall medan projektet lämnas utan uppsikt utanför.

Bild
Bild

Laddning när den är för varm eller för kall kan skada batteriet eller starta en brand. Exponering för extrema temperaturer kan orsaka skador och förkorta batteriets livslängd, så ta med det inuti om det är under fryspunkten eller över 45 ℃/113F.

Bild
Bild

Dra åt kabelförskruvningarna för att göra en väderbeständig tätning runt sina respektive kablar.

Steg 8: Förbered solpanel

Förbered solpanel
Förbered solpanel

Följ min instruktionsbok för att skarva kabeln till din solpanel med pluggsidan på det vattentäta likströmssatsen.

Steg 9: Testa det

Testa det
Testa det

Anslut batteriet och slå på kretsen genom att trycka på strömbrytaren.

Bild
Bild

Testa det och se till att det rapporterar till internet innan du stänger höljet och installerar sensorn i din örtagård, dyrbara krukväxt eller annan jord inom signalområdet för ditt wifi -nätverk.

Bild
Bild

När data från sensorn loggas online är det enkelt att skapa ett recept för e -post eller textvarningar på API -gateway -webbplatsen If This Then That. Jag konfigurerade min för att mejla mig om markfuktigheten sjunker under 50.

För att testa det utan att vänta på att min anläggning ska torka ut skrev jag in en datapunkt manuellt i mitt fuktighetsmatning på Adafruit IO som föll under tröskeln. Några ögonblick senare kommer mejlet! Om jordens nivåer faller under min angivna nivå får jag ett mejl varje gång fodret uppdateras tills jag vattnar jorden. För min förnuft uppdaterade jag min kod för att prova jorden mycket mindre ofta än var 15: e minut.

Steg 10: Använd den utanför

Använd det utanför!
Använd det utanför!
Använd det utanför!
Använd det utanför!

Detta är ett roligt projekt att anpassa baserat på din anläggnings hydratiseringsbehov, och det är lätt att byta ut eller lägga till sensorer eller integrera solenergifunktionerna i dina andra Arduino -projekt.

Tack för att du följer med! Jag vill gärna höra vad du tycker; skriv gärna i kommentarerna. Detta projekt är en del av min kostnadsfria solklass, där du kan hitta enkla bakgårdsprojekt och fler lektioner om att arbeta med solpaneler. Kolla in det och anmäl dig!

Om du gillar det här projektet kan du vara intresserad av några av mina andra:

  • gratis Internet of Things Class
  • YouTubes prenumerationsräknare med ESP8266
  • Social Stats Tracker Display med ESP8266
  • WiFi -väderskärm med ESP8266
  • Internet Valentine

Följ mig på YouTube, Instagram, Twitter, Pinterest och Snapchat för att hålla koll på vad jag arbetar med.

Rekommenderad: