Inhoudsopgave:

Bodemvochtmeter op zonne-energie met ESP8266 - Ajarnpa
Bodemvochtmeter op zonne-energie met ESP8266 - Ajarnpa

Video: Bodemvochtmeter op zonne-energie met ESP8266 - Ajarnpa

Video: Bodemvochtmeter op zonne-energie met ESP8266 - Ajarnpa
Video: Webinar Praktijkgids Monitoring Blue Deal 2024, Juli-
Anonim

In deze Instructable maken we een bodemvochtmonitor op zonne-energie. Het maakt gebruik van een ESP8266 wifi-microcontroller met een laag stroomverbruik, en alles is waterdicht, zodat het buiten kan worden gelaten. Je kunt dit recept precies volgen, of er de handige technieken uithalen voor je eigen projecten.

Als je nieuw bent in het programmeren van microcontrollers, bekijk dan mijn Arduino Class en Internet of Things Class om de basisprincipes van bedrading, codering en verbinding met internet te leren kennen.

Dit project maakt deel uit van mijn gratis Solar Class, waar je meer manieren kunt leren om de energie van de zon te benutten door middel van graveren en zonnepanelen.

Om op de hoogte te blijven van waar ik aan werk, volg me op YouTube, Instagram, Twitter, Pinterest en abonneer je op mijn nieuwsbrief.

Stap 1: Wat heb je nodig

Wat je nodig hebt
Wat je nodig hebt

Je hebt een oplaadkaart voor zonne-energie en een ESP8266-uitbraak nodig, zoals de NodeMCU ESP8266 of Huzzah, evenals een bodemsensor, batterij, aan / uit-schakelaar, wat draad en een behuizing om je circuit erin te plaatsen.

Dit zijn de componenten en materialen die zijn gebruikt voor de bodemvochtmonitor:

  • ESP8266 NodeMCU-microcontroller (of vergelijkbaar, Vin moet tot 6V verdragen)
  • Adafruit solar laadbord met optionele thermistor en 2.2K ohm weerstand
  • 2200mAh li-ion batterij
  • Perma-proto bord
  • Bodemvocht/temperatuursensor
  • 2 kabelwartels
  • Waterdichte behuizing
  • Waterdicht gelijkstroomkabelpaar
  • Krimpkous
  • 3,5 W zonnepaneel
  • Aan/uit-schakelaar met drukknop
  • Dubbel stok schuimtape

Dit zijn de tools die je nodig hebt:

  • Soldeerbout en soldeer
  • Hulpmiddel voor helpende handen
  • Draadstrippers
  • Spoel knipt
  • Pincet (optioneel)
  • Heteluchtpistool of aansteker
  • Multimeter (optioneel maar handig voor het oplossen van problemen)
  • USB A-microB-kabel
  • Schaar
  • Stap boor

U hebt gratis accounts nodig op cloudgegevenssites io.adafruit.com en IFTTT.

Als Amazon Associate verdien ik met kwalificerende aankopen die je doet via mijn gelieerde links.

Stap 2: Breadboard-prototype

Breadboard-prototype
Breadboard-prototype

Het is belangrijk om voor dit soort projecten een soldeerloos breadboard-prototype te maken, zodat je zeker weet dat je sensor en code werken voordat je een permanente verbinding maakt.

Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding
Afbeelding

In dit geval heeft de bodemsensor gevlochten draden, het was nodig om tijdelijk vaste headers aan de uiteinden van de sensordraden te bevestigen met soldeer, helpende handen en wat krimpkous.

Afbeelding
Afbeelding

Volg het schakelschema om de stroom-, grond-, klok- en datapinnen van de sensor aan te sluiten (gegevens krijgen ook een 10K pull-up-weerstand die bij de bodemsensor wordt geleverd).

  • Sensor groene draad naar GND
  • Sensor rode draad naar 3.3V
  • Sensor gele draad naar NodeMCU pin D5 (GPIO 14)
  • Sensor blauwe draad naar NodeMCU pin D6 (GPIO 12)
  • 10K pull-up weerstand tussen blauwe datapin en 3.3V

U kunt dit vertalen naar uw favoriete microcontroller. Als je een Arduino Uno of iets dergelijks gebruikt, wordt je bord al ondersteund door de Arduino-software. Als je de ESP8266 gebruikt, bekijk dan mijn Internet of Things-klasse voor stapsgewijze hulp bij het instellen van ESP8266 in Arduino (door aanvullende URL's toe te voegen aan het veld Extra Boards Manager-URL's in de voorkeuren van Arduino en vervolgens te zoeken naar en het selecteren van nieuwe boards van de boardmanager). Ik gebruik meestal het Adafruit ESP8266 Huzzah-bordtype om het NodeMCU ESP8266-bord te programmeren, maar je kunt ook de generieke ESP8266-bordondersteuning installeren en gebruiken. U hebt ook het SiLabs USB-communicatiechipstuurprogramma nodig (beschikbaar voor Mac/Windows/Linux).

Om de sensor aan de gang te krijgen met mijn Arduino-compatibele bord, heb ik de SHT1x Arduino-bibliotheek gedownload van de github-pagina van Practical Arduino, vervolgens het bestand uitgepakt en de bibliotheekmap naar mijn Arduino/bibliothekenmap verplaatst en deze vervolgens hernoemd tot SHT1x. Open de voorbeeldschets ReadSHT1xValues en verander de pinnummers in 12 (dataPin) en 14 (clockPin), of kopieer de aangepaste schets hier:

#erbij betrekken

#define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x(dataPin, clockPin); // instantiëren SHT1x object void setup () { Serial.begin (38400); // Open seriële verbinding om waarden door te geven aan host Serial.println ("Bezig met opstarten"); } void loop() { float temp_c; zweven temp_f; vlotter vochtigheid; temp_c = sht1x.readTemperatureC(); // Lees waarden van de sensor temp_f = sht1x.readTemperatureF (); vochtigheid = sht1x.readHumidity(); Serial.print("Temperatuur: "); // Print de waarden naar de seriële poort Serial.print(temp_c, DEC); Serial.print("C / "); Serial.print(temp_f, DEC); Serial.print ("F. Vochtigheid: "); Seriële.afdruk (vochtigheid); Serieel.println("%"); vertraging (2000); }

Upload deze code naar uw bord en open de seriële monitor om de sensorgegevensstroom binnen te zien.

Als je code niet compileert en klaagt dat SHT1x.h niet wordt gevonden, heb je de vereiste sensorbibliotheek niet goed geïnstalleerd. Controleer uw Arduino/bibliothekenmap op een map met de naam SHT1x, en als deze ergens anders is, zoals uw downloadmap, verplaats deze dan naar uw Arduino-bibliothekenmap en hernoem deze indien nodig.

Als je code wordt gecompileerd maar niet naar je bord wordt geüpload, controleer dan je bordinstellingen, zorg ervoor dat je bord is aangesloten en selecteer de juiste poort in het menu Extra.

Als uw code wordt geüpload maar uw seriële monitorinvoer onherkenbaar is, controleer dan nogmaals of uw baudrate overeenkomt met die in uw schets (38400 in dit geval).

Als uw seriële monitorinvoer niet correct lijkt, controleer dan uw bedrading nogmaals aan de hand van het schakelschema. Zit je 10K pull-up weerstand tussen de datapin en 3,3V? Zijn data en klok aangesloten op de juiste pinnen? Zijn stroom en aarde aangesloten zoals ze zouden moeten zijn in het hele circuit? Ga niet verder totdat deze eenvoudige schets werkt!

De volgende stap is specifiek voor de ESP8266 en configureert het optionele draadloze sensorrapportagegedeelte van het voorbeeldproject. Als je een standaard (niet-draadloze) Arduino-compatibele microcontroller gebruikt, ga dan door met het ontwikkelen van je definitieve Arduino-schets en ga verder met Solar Charging Board voorbereiden.

Stap 3: Software-installatie

Software-installatie
Software-installatie

Om de code voor dit project met de ESP8266 te compileren, moet je nog een paar Arduino-bibliotheken installeren (beschikbaar via de bibliotheekbeheerder):

  • Adafruit IO Arduino
  • Adafruit MQTT
  • ArduinoHttpClient

Download de code die bij deze stap is bijgevoegd, pak het bestand uit en open Solar_Powered_Soil_Moisture_Monitor_Tutorial in uw Arduino-software.

#erbij betrekken

#include #include #include #include // Specificeer data- en klokverbindingen en instantiëer SHT1x-object #define dataPin 12 // NodeMCU pin D6 #define clockPin 14 // NodeMCU pin D5 SHT1x sht1x(dataPin, clockPin); // stel de feed in AdafruitIO_Feed *humidity = io.feed ("humidity"); AdafruitIO_Feed *temperatuur = io.feed ("temperatuur"); const int sleepTime = 15; // 15 minuten

ongeldige setup()

{ Serieel.begin(115200); // Open seriële verbinding om waarden door te geven aan host Serial.println ("Bezig met opstarten"); // maak verbinding met io.adafruit.com Serial.print ("Verbinding maken met Adafruit IO"); io.connect(); // wacht op een verbinding while(io.status() <AIO_CONNECTED) {Serial.print("."); vertraging (500); } // we zijn verbonden Serial.println(); Serial.println(io.statusText()); }

lege lus()

{ io.run(); // io.run(); houdt de klant verbonden en is vereist voor alle schetsen. zweven temp_c; zweven temp_f; drijvend vocht; temp_c = sht1x.readTemperatureC(); // Lees waarden van de sensor temp_f = sht1x.readTemperatureF (); vochtigheid = sht1x.readHumidity(); Serial.print("Temperatuur: "); // Print de waarden naar de seriële poort Serial.print(temp_c, DEC); Serieel.print("C / "); Serial.print(temp_f, DEC); Serial.print ("F. Vochtigheid: "); Serial.print(vocht); Serieel.println("%"); vochtigheid -> opslaan (vocht); temperatuur->opslaan(temp_f); Serial.println ("ESP8266 slaapt…"); ESP.deepSleep (slaaptijd * 1000000 * 60); // Slaap }

Deze code is een mashup van de sensorcode van eerder in deze tutorial en een basisvoorbeeld van de clouddataservice Adafruit IO. Het programma gaat naar de energiebesparende modus en slaapt het grootste deel van de tijd, maar wordt elke 15 minuten wakker om de temperatuur en vochtigheid van de grond te lezen en rapporteert de gegevens aan Adafruit IO. Navigeer naar het tabblad config.h en vul uw Adafruit IO-gebruikersnaam en -sleutel in, evenals uw lokale wifi-netwerknaam en wachtwoord, en upload de code vervolgens naar uw ESP8266-microcontroller.

Afbeelding
Afbeelding

Je zult een beetje voorbereiding moeten doen op io.adafruit.com. Nadat u feeds voor temperatuur en vochtigheid hebt gemaakt, kunt u een dashboard voor uw monitor maken met een grafiek van de sensorwaarden en de gegevens van beide inkomende feeds. Als je een opfriscursus nodig hebt om aan de slag te gaan met Adafruit IO, bekijk dan deze les in mijn Internet of Things-klas.

Stap 4: Bereid zonne-oplaadbord voor

Bereid zonne-oplaadbord voor!
Bereid zonne-oplaadbord voor!

Bereid het zonnelaadbord voor door op de condensator en enkele draden op de laaduitgangspads te solderen. Ik pas de mijne aan om sneller op te laden met een optionele add-on-weerstand (2.2K gesoldeerd over PROG) en maak het veiliger om onbeheerd achter te laten door de oppervlaktemontageweerstand te vervangen door een 10K-thermistor die aan de batterij zelf is bevestigd. Dit beperkt het opladen om een temperatuurbereik te behouden. Ik heb deze wijzigingen in meer detail besproken in mijn Solar USB Charger-project.

Stap 5: Bouw een microcontrollercircuit

Microcontrollercircuit bouwen
Microcontrollercircuit bouwen
Afbeelding
Afbeelding
Afbeelding
Afbeelding

Soldeer het microcontroller-bord en de aan/uit-schakelaar op een perma-proto-bord.

Afbeelding
Afbeelding

Sluit het uitgangsvermogen van de zonnelader aan op de ingang van uw schakelaar, die minimaal 1 ampère moet hebben.

Afbeelding
Afbeelding

Maak en soldeer de breadboard-draadverbindingen zoals beschreven in het bovenstaande schakelschema (of volgens de specificaties van uw persoonlijke versie), inclusief de 10K pull-up-weerstand op de datalijn van de sensor.

De laadpinnen van de zonnelader leveren 3,7 V batterijvermogen als er geen zonne-energie is, maar worden rechtstreeks van het zonnepaneel gevoed als het is aangesloten en zonnig is. Daarom moet de microcontroller een verscheidenheid aan spanningen kunnen verdragen, zo laag als 3,7 V en tot 6 V DC. Voor degenen die 5V nodig hebben, kan een PowerBoost (500 of 1000, afhankelijk van de benodigde stroom) worden gebruikt om de laadspanning te moduleren naar 5V (zoals getoond in het Solar USB Charger-project). Hier zijn enkele veelvoorkomende borden en hun ingangsspanningsbereiken:

  • NodeMCU ESP8266 (hier gebruikt): 5V USB of 3.7V-10V Vin
  • Arduino Uno: 5V USB of 7-12V Vin
  • Adafruit Huzzah ESP8266 Breakout: 5V USB of 3,4-6V VBat

Om de langst mogelijke levensduur van de batterij te bereiken, moet u enige tijd nemen om de totale stroom die uw huidige trekt te overwegen en te optimaliseren. De ESP8266 heeft een diepe slaapfunctie die we in de Arduino-schets hebben gebruikt om het stroomverbruik drastisch te verminderen. Het wordt wakker om de sensor te lezen en trekt meer stroom terwijl het verbinding maakt met het netwerk om de waarde van de sensor te melden, en gaat dan voor een bepaalde tijd weer slapen. Als je microcontroller veel stroom trekt en niet gemakkelijk in slaapstand kan worden gebracht, overweeg dan om je project over te zetten naar een compatibel bord dat minder stroom verbruikt. Stel een vraag in de opmerkingen hieronder als u hulp nodig heeft bij het bepalen welk bord geschikt is voor uw project.

Stap 6: Kabelwartels installeren

Afbeelding
Afbeelding

Om weerbestendige toegangspunten voor de zonnepaneelkabel en sensorkabel te maken, installeren we twee kabelwartels in de zijkant van de weerbestendige behuizing.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Test uw componenten om de ideale plaatsing te bepalen, markeer en boor vervolgens gaten in een waterdichte behuizing met behulp van een stappenboor. Installeer de twee kabelwartels.

Afbeelding
Afbeelding

Stap 7: Circuitassemblage voltooien

Complete circuitassemblage
Complete circuitassemblage

Steek de bakboordzijde van een waterdichte voedingskabel in een en soldeer deze aan de DC-ingang van de zonnelader (rood naar + en zwart naar -).

Afbeelding
Afbeelding

Steek de bodemsensor door de andere wartel en sluit deze aan op de perma-proto volgens het schakelschema.

Afbeelding
Afbeelding

Plak de thermistorsonde op de batterij. Dit beperkt het opladen tot een veilig temperatuurbereik terwijl het project onbeheerd buiten wordt gelaten.

Afbeelding
Afbeelding

Opladen terwijl het te warm of te koud is, kan de batterij beschadigen of brand veroorzaken. Blootstelling aan extreme temperaturen kan schade veroorzaken en de levensduur van de batterij verkorten, dus breng hem naar binnen als het onder het vriespunt of boven 45℃/113F is.

Afbeelding
Afbeelding

Draai de kabelwartels vast om een weerbestendige afdichting rond hun respectievelijke kabels te maken.

Stap 8: Zonnepaneel voorbereiden

Zonnepaneel voorbereiden
Zonnepaneel voorbereiden

Volg mijn Instructable om de kabel voor uw zonnepaneel te splitsen met de stekkerzijde van de waterdichte gelijkstroomkabelset.

Stap 9: Test het

Test het
Test het

Sluit uw batterij aan en schakel het circuit in door op de aan / uit-schakelaar te drukken.

Afbeelding
Afbeelding

Test het uit en zorg ervoor dat het rapporteert aan internet voordat u de behuizing sluit en de sensor installeert in uw kruidentuin, kostbare potplant of andere grond binnen het signaalbereik van uw wifi-netwerk.

Afbeelding
Afbeelding

Zodra de gegevens van de sensor online zijn gelogd, is het eenvoudig om een recept voor e-mail- of sms-waarschuwingen in te stellen op de API-gatewaysite If This Then That. Ik heb de mijne geconfigureerd om me te e-mailen als het bodemvochtgehalte onder de 50 daalt.

Om het te testen zonder te wachten tot mijn plant uitdroogt, heb ik handmatig een datapunt ingevoerd in mijn vochtigheidsfeed op Adafruit IO dat onder de drempel viel. Even later komt de e-mail binnen! Als het bodemniveau onder het door mij gespecificeerde niveau zakt, ontvang ik een e-mail telkens wanneer het voer wordt bijgewerkt totdat ik de grond water geef. Voor mijn gezond verstand heb ik mijn code bijgewerkt om de grond veel minder vaak dan elke 15 minuten te bemonsteren.

Stap 10: Gebruik het buiten

Gebruik het buiten!
Gebruik het buiten!
Gebruik het buiten!
Gebruik het buiten!

Dit is een leuk project om aan te passen op basis van de hydratatiebehoeften van je plant, en het is gemakkelijk om sensoren uit te wisselen of toe te voegen of de zonne-energiefuncties te integreren in je andere Arduino-projecten.

Bedankt voor het volgen! Ik hoor graag wat je ervan vindt; post het alsjeblieft in de reacties. Dit project maakt deel uit van mijn gratis Solar Class, waar je eenvoudige achtertuinprojecten kunt vinden en meer lessen over het werken met zonnepanelen. Bekijk het en schrijf je in!

Als je dit project leuk vindt, ben je misschien geïnteresseerd in enkele van mijn andere:

  • gratis Internet of Things-klasse
  • YouTube-abonneeteller met ESP8266
  • Social Stats Tracker Display met ESP8266
  • WiFi-weerweergave met ESP8266
  • Internet Valentijn

Volg mij op YouTube, Instagram, Twitter, Pinterest en Snapchat om bij te blijven waar ik aan werk.

Aanbevolen: