Inhoudsopgave:

Batterij-aangedreven Water Collector Level Sensor - Ajarnpa
Batterij-aangedreven Water Collector Level Sensor - Ajarnpa

Video: Batterij-aangedreven Water Collector Level Sensor - Ajarnpa

Video: Batterij-aangedreven Water Collector Level Sensor - Ajarnpa
Video: Что может дрон Black Hornet за 195 000 долларов? 2024, November
Anonim
Batterij-aangedreven watercollector niveausensor
Batterij-aangedreven watercollector niveausensor
Batterij-aangedreven Water Collector Level Sensor
Batterij-aangedreven Water Collector Level Sensor

Ons huis heeft een watertank die wordt gevoed door de regen die op het dak valt en wordt gebruikt voor het toilet, de wasmachine en het besproeien van planten in de tuin. De afgelopen drie jaar waren de zomers erg droog, dus we hielden het waterpeil in de tank in de gaten. Tot nu toe gebruikten we een houten stok, die we in de tank stopten en het niveau markeerden. Maar hierin moet zeker verbetering mogelijk zijn!

Dit is waar dit project van pas komt. Het idee is om een ultrasone afstandssensor aan de bovenkant van de tank te bevestigen. Deze sensor werkt als een sonar die geluidsgolven uitzendt, die vervolgens worden weerkaatst door het wateroppervlak. Aan de hand van de tijd dat de golven terugkomen en de snelheid van het geluid, kun je de afstand tot het wateroppervlak berekenen en bepalen hoe vol de tank is.

Aangezien ik geen stopcontact in de buurt van de tank heb, is het essentieel dat het hele apparaat op batterijen werkt. Dit betekende dat ik me bewust moest zijn van het stroomverbruik van alle onderdelen. Om de data terug te sturen besloot ik de ingebouwde Wifi van een ESP8266 microchip te gebruiken. Hoewel de wifi behoorlijk veel stroom verbruikt, heeft het een voordeel ten opzichte van een ander type radioverbinding: je kunt rechtstreeks verbinding maken met de draadloze router van je huis zonder dat je een ander apparaat hoeft te bouwen dat als relais fungeert.

Om stroom te besparen zal ik de ESP8266 meestal in diepe slaap zetten en elk uur een meting doen. Voor mijn doel om de waterstand op te volgen is dit meer dan voldoende. De gegevens worden naar ThingSpeak gestuurd en kunnen vervolgens via een app op een smartphone worden uitgelezen.

Nog een detail! De geluidssnelheid, essentieel voor de afstandsmeting, is afhankelijk van de temperatuur en in mindere mate van de luchtvochtigheid. Voor een nauwkeurige buitenmeting over de seizoenen gooien we een BME280-sensor in, die temperatuur, vochtigheid en druk meet. Als bonus maakt dit van onze waterniveausensor ook een mini-weerstation.

Onderdelen:

  • 1x ESP8266 ESP-12F.
  • 1x ESP-12F adapterplaat.
  • 1x FT232RL FTDI: USB naar serieel adapter.
  • 1x HC-SR04-P: module voor ultrasone afstandsmeting. Merk op dat de P belangrijk is, aangezien dit de versie is met een lage minimale bedrijfsspanning van 3V.
  • 1x BME280 3.3V uitvoering: temperatuur-, druk- en vochtigheidssensor.
  • 1x IRL2203N: n-kanaals MOSFET-transistor.
  • 1x MCP1700-3302E 3.3V uitvoering: spanningsregelaar.
  • 3x oplaadbare AA-batterij, b.v. 2600mAh.
  • 1x batterijhouder voor 3 batterijen.
  • 1x broodplank.
  • Weerstanden: 1x 470K, 1x 100K, 4x 10K.
  • Condensatoren: 2x keramisch 1uF.
  • 3x tuimelschakelaar.
  • U-vormige breadboard-draden.
  • Jumper draden.
  • Kunststof soepkom 1l.
  • Bevestigingsring voor de container.

Ik heb de code beschikbaar gemaakt op GitHub.

Stap 1: De ultrasone afstandssensor leren kennen

De ultrasone afstandssensor leren kennen
De ultrasone afstandssensor leren kennen
De ultrasone afstandssensor leren kennen
De ultrasone afstandssensor leren kennen

De afstand tot het wateroppervlak meten we met een ultrasone sensor, de HC-SR04-P. Net als een vleermuis maakt deze sensor gebruik van sonar: hij zendt een geluidspuls uit met een frequentie die te hoog is voor het menselijk oor, dus ultrasoon, en wacht tot hij een voorwerp raakt, reflecteert en terugkomt. De afstand kan dan worden berekend uit de tijd die nodig is om de echo te ontvangen en de snelheid van het geluid.

Concreet, als de Trig-pin minimaal 10 μs hoog wordt getrokken, stuurt de sensor een burst van 8 pulsen met een frequentie van 40 Hz. Het antwoord wordt dan verkregen op de Echo-pin in de vorm van een puls met een duur gelijk aan de tijd tussen het verzenden en ontvangen van de ultrasone puls. Dan moeten we delen door 2, aangezien de ultrasone puls heen en weer gaat en we de reistijd in één richting nodig hebben, en vermenigvuldigen met de geluidssnelheid, dat is ongeveer 340 m/s.

Maar wacht eens even! In feite is de geluidssnelheid afhankelijk van de temperatuur en in mindere mate van de luchtvochtigheid. Ben ik aan het muggenziften of is dit relevant? Met behulp van een rekentool vinden we dat we in de winter (met -5 °C) 328,5 m/s kunnen hebben, en in de zomer (met 25 °C) 347,1 m/s. Stel dat we een enkele reistijd vinden van 3 ms. In de winter zou dit 98,55 cm betekenen en in de zomer 104,13 cm. Dat is nogal een verschil! Dus om voldoende nauwkeurigheid te verkrijgen gedurende de seizoenen en zelfs dag en nacht, moeten we een thermometer aan onze opstelling toevoegen. Ik besloot om de BME280 op te nemen, die temperatuur, vochtigheid en druk meet. In de code die ik in de functie speedOfSound heb gebruikt, een formule die de geluidssnelheid berekent in termen van alle drie de parameters, hoewel de temperatuur eigenlijk de belangrijkste factor is. De luchtvochtigheid heeft nog steeds een kleiner effect, maar de impact van de druk is verwaarloosbaar. We zouden een eenvoudigere formule kunnen gebruiken die alleen rekening houdt met de temperatuur die ik heb geïmplementeerd in speedOfSoundSimple.

Er is nog een belangrijk punt op de HC-SR04. Er zijn twee versies beschikbaar: de standaardversie werkt op 5V, terwijl de HC-SR04-P kan werken op een spanningsbereik van 3V tot 5V. Aangezien de 3 oplaadbare AA batterijen ongeveer 3x1,25V=3,75V leveren is het belangrijk om de P-versie aan te schaffen. Sommige verkopers kunnen de verkeerde sturen. Dus kijk goed naar de foto's als je er een koopt. De twee versies zien er zowel aan de achterkant als aan de voorkant anders uit zoals uitgelegd op deze pagina. Aan de achterkant van de P-versie zijn alle drie de chips horizontaal terwijl op de standaardversie één verticaal is. Aan de voorzijde heeft de standaard uitvoering een extra zilveren component.

In het elektronische circuit gebruiken we een transistor als schakelaar om de stroom naar de ultrasone sensor uit te schakelen wanneer onze opstelling in diepe slaap gaat om de levensduur van de batterij te verlengen. Anders zou het nog steeds ongeveer 2mA verbruiken. De BME280 daarentegen verbruikt slechts ongeveer 5 als hij inactief is, dus het is niet nodig om hem uit te schakelen met de transistor.

Stap 2: Keuze van het ESP8266-bord

Keuze van het ESP8266-bord
Keuze van het ESP8266-bord

Om de sensor zo lang mogelijk op een batterij te laten werken, moeten we besparen op stroomverbruik. Hoewel de wifi van de ESP8266 een zeer handige manier is om onze sensor met de cloud te verbinden, is het ook behoorlijk energieverslindend. In bedrijf verbruikt de ESP8266 ongeveer 80mA. Dus met batterijen van 2600 mAh zouden we ons apparaat maar maximaal 32 uur kunnen laten werken voordat ze leeg zijn. In de praktijk zal het minder zijn omdat we de volledige capaciteit van 2600 mAh niet kunnen gebruiken voordat de spanning tot een te laag niveau zakt.

Gelukkig heeft de ESP8266 ook een diepe slaapstand, waarin bijna alles uit staat. Het plan is dus om de ESP8266 het grootste deel van de tijd in diepe slaap te brengen en af en toe wakker te maken om een meting uit te voeren en de gegevens via wifi naar ThingSpeak te sturen. Volgens deze pagina was de maximale diepe slaaptijd ongeveer 71 minuten, maar sinds de ESP8266 Arduino core 2.4.1 is dit toegenomen tot ongeveer 3,5 uur. In mijn code rekende ik af voor een uur.

Ik heb eerst het handige NodeMCU-ontwikkelbord geprobeerd, maar jammer, in diepe slaap verbruikt het nog steeds ongeveer 9 mA, wat ons maximaal 12 dagen pure diepe slaap geeft zonder zelfs maar rekening te houden met de wekintervallen. Een belangrijke boosdoener is de AMS1117-spanningsregelaar, die stroom verbruikt, zelfs als je deze probeert te omzeilen door de batterij rechtstreeks op de 3,3V-pin aan te sluiten. Op deze pagina wordt uitgelegd hoe u de spanningsregelaar en de USB UART verwijdert. Het is me echter nooit gelukt zonder mijn bord te vernietigen. Bovendien kun je na het verwijderen van de USB UART geen verbinding meer maken met de ESP8266 om erachter te komen wat er mis is gegaan.

De meeste ESP8266-ontwikkelborden lijken de verspillende AMS1117-spanningsregelaar te gebruiken. Een uitzondering is de WEMOS D1 mini (foto links) die wordt geleverd met de zuinigere ME6211. Ik ontdekte inderdaad dat de WEMOS D1 mini ongeveer 150 μA gebruikt in diepe slaap, wat er meer op lijkt. Het meeste is waarschijnlijk te wijten aan de USB UART. Bij dit board moet je wel zelf de headers voor de pins solderen.

We kunnen echter veel beter een bare-bones board gebruiken zoals de ESP-12F (foto rechts), die geen USB UART of spanningsregelaar heeft. Bij het voeden van de 3.3V-pin vond ik een diep-slaapverbruik van slechts 22 μA!

Maar om de ESP-12F aan het werk te krijgen, bereid je voor op wat soldeerwerk en een beetje meer gedoe om hem te programmeren! Verder, tenzij de batterijen direct de juiste spanning leveren, die tussen 3V en 3,6V ligt, moeten we onze eigen spanningsregelaar leveren. In de praktijk blijkt het lastig om een accusysteem te vinden dat over zijn volledige ontlaadcyclus een spanning in dit bereik levert. Onthoud dat we ook de HC-SR04-P-sensor van stroom moeten voorzien, die theoretisch kan functioneren met een spanning van slechts 3V, maar nauwkeuriger werkt als de spanning hoger is. Bovendien wordt in mijn schema de HC-SR04-P aangezet door een transistor, wat een kleine extra spanningsval veroorzaakt. We zullen de MCP1700-3302E spanningsregelaar gebruiken. De maximale ingangsspanning is 6V, dus we voeden hem met maximaal 4 AA-batterijen. Ik besloot om 3 AA-batterijen te gebruiken.

Stap 3: Maak een ThingSpeak-kanaal

We gebruiken ThingSpeak, een IoT-cloudservice, om onze gegevens op te slaan. Ga naar https://thingspeak.com/ en maak een account aan. Nadat u bent ingelogd, klikt u op de knop Nieuw kanaal om een kanaal aan te maken. Vul in de Kanaalinstellingen de naam en beschrijving in zoals je wilt. Vervolgens geven we de kanaalvelden een naam en activeren ze door op de selectievakjes rechts te klikken. Als je mijn code ongewijzigd gebruikt, zijn de velden als volgt:

  • Veld 1: waterstand (cm)
  • Veld 2: batterijniveau (V)
  • Veld 3: temperatuur (°C)
  • Veld 4: vochtigheid (%)
  • Veld 5: druk (Pa)

Noteer voor toekomstig gebruik de kanaal-ID, de API-sleutel lezen en de API-sleutel schrijven, die u kunt vinden in het menu API-sleutels.

Met een app lees je de ThingSpeak-gegevens af op je smartphone. Op mijn Android-telefoon gebruik ik de IoT ThingSpeak Monitor-widget. Je moet het configureren met de Channel ID en de Read API Key.

Stap 4: Hoe de ESP-12F te programmeren?

Hoe de ESP-12F te programmeren
Hoe de ESP-12F te programmeren
Hoe de ESP-12F te programmeren
Hoe de ESP-12F te programmeren

We hebben een bare-bones board nodig om de batterijduur te sparen, maar het nadeel is dat het wat moeilijker te programmeren is dan een development board met ingebouwde USB UART.

We gebruiken de Arduino IDE. Er zijn andere Instructables die uitleggen hoe het te gebruiken, dus ik zal het hier kort houden. De stappen om hem klaar te maken voor de ESP8266 zijn:

  • Download de Arduino-IDE.
  • Installeer ondersteuning voor het ESP8266-bord. Voeg in het menu Bestand - Voorkeuren - Instellingen de URL https://arduino.esp8266.com/stable/package_esp8266com_index.json toe aan Extra Board Manager URL's. Vervolgens in het menu Tools - Board - Boards Manager installeer esp8266 door esp8266 community.
  • Selecteer als bord: Generieke ESP8266-module.

Voor het hanteren van de ESP-12F heb ik een adapterplaat gebruikt, die algemeen verkrijgbaar is in online winkels. Ik heb de chip op de plaat gesoldeerd en vervolgens de headers op de plaat gesoldeerd. Pas toen ontdekte ik dat de adapterplaat te breed is voor een standaard breadboard! Het laat geen vrije pinnen aan de zijkant over om uw verbindingen te maken.

De oplossing waar ik voor ging is om U-vormige draden te gebruiken en deze aan te sluiten zoals op de afbeelding rechts voordat u de ESP8266 met de adapterplaat op het breadboard plaatst. Dus GND en VCC zijn verbonden met de rails van het breadboard en de resterende pinnen worden verderop in het breadboard beschikbaar gesteld. Het nadeel is dat je breadboard behoorlijk vol zal zitten met draden als je eenmaal het volledige circuit hebt voltooid. Een andere oplossing is om twee breadboards in elkaar te passen, zoals in deze video wordt getoond.

Om vervolgens de ESP-12F via de USB-poort van uw computer te programmeren, hebben we een USB naar serieel adapter nodig. Ik gebruikte de FT232RL FTDI programmeur. De programmer heeft een jumper om te kiezen tussen 3.3V of 5V. Het moet op 3.3V worden gezet voor de ESP8266. Vergeet het niet, want 5V kan je chip braden! De installatie van de stuurprogramma's zou automatisch moeten gebeuren, maar als het programmeren niet werkt, kunt u proberen ze handmatig te installeren vanaf deze pagina.

De ESP8266 heeft een programmeermodus om nieuwe firmware naar de flash te uploaden en een flashmodus om de huidige firmware uit het flashgeheugen te laten lopen. Om tussen deze modi te kiezen, moeten sommige pinnen een bepaalde waarde hebben bij het opstarten:

  • Programmering: GPIO0: laag, CH-PD: hoog, GPIO2: hoog, GPIO15: laag
  • Flash: GPIO0: hoog, CH-PD: hoog, GPIO2: hoog, GPIO15: laag

De adapterplaat zorgt al voor het omhoog trekken van CH-PD en het naar beneden trekken van GPIO15 met 10K-weerstanden.

Dus in ons elektronische circuit moeten we GPIO2 nog optrekken. We leveren ook een schakelaar om de ESP8266 in programmeer- of flitsmodus te zetten en een schakelaar om hem te resetten, wat gedaan wordt door RST met aarde te verbinden. Zorg er verder voor dat u de TX-pin van de FT232RL verbindt met de RXD-pin van de ESP8266 en vice versa.

De programmeervolgorde is als volgt:

  • Zet GPIO2 op laag door de programmeerschakelaar te sluiten.
  • Reset de ESP8266 door de reset-schakelaar te sluiten en weer te openen. De ESP8266 start nu op in de programmeermodus.
  • Zet GPIO2 weer op hoog door de programmeerschakelaar te openen.
  • Upload de nieuwe firmware van de Arduino IDE.
  • Reset de ESP8266 opnieuw door de reset-schakelaar te sluiten en weer te openen. De ESP8266 start nu op in flash-modus en voert de nieuwe firmware uit.

Nu kun je testen of de programmering werkt door de beroemde Blink-schets te uploaden.

Als dit allemaal werkt zijn in ieder geval de GND, VCC, GPIO2, RST, TXD en RXD pinnen correct gesoldeerd en aangesloten. Wat een opluchting! Maar voordat je verder gaat, raad ik aan om ook de andere pinnen te testen met je multimeter. Ik had zelf een probleem met een van de pinnen. Je kunt deze schets gebruiken, die alle pinnen één voor één gedurende 5 seconden op hoog zet, en daarna de ESP8266 20 seconden in diepe slaap zet. Om de ESP8266 te laten ontwaken na diepe slaap, moet je RST verbinden met GPIO16, die het weksignaal geeft.

Stap 5: De schets uploaden

Ik heb de code beschikbaar gemaakt op GitHub, het is maar één bestand: Level-Sensor-Deepsleep.ino. Download het gewoon en open het in de Arduino IDE. Of u kunt Bestand - Nieuw selecteren en de code kopiëren/plakken.

Er is wat informatie die u aan het begin van het bestand moet invullen: de naam en het wachtwoord van het te gebruiken WLAN, statische IP-gegevens en de kanaal-ID en schrijf-API-sleutel van het ThingSpeak-kanaal.

In navolging van de tip op deze blog gebruiken we in plaats van DHCP waarbij de router dynamisch een IP toewijst, statisch IP, waarbij we zelf het IP-adres van de ESP8266 instellen. Dit blijkt veel sneller te gaan, waardoor we besparen op actieve tijd en dus op batterij-energie. We moeten dus een beschikbaar statisch IP-adres opgeven, evenals het IP van de router (gateway), het subnetmasker en een DNS-server. Als je niet zeker weet wat je moet invullen, lees dan over het instellen van een statisch IP-adres in de handleiding van je router. Op een Windows-computer die via wifi met uw router is verbonden, start u een shell (Windows-knop-r, cmd) en voert u ipconfig /all in. U vindt de meeste informatie die u nodig hebt onder het gedeelte Wi-Fi.

Als je de code bekijkt, zie je dat in tegenstelling tot andere Arduino-code de meeste actie plaatsvindt in de setup-functie in plaats van in de loop-functie. Dit komt omdat de ESP8266 in diepe slaap gaat nadat het de installatiefunctie heeft voltooid (tenzij we in de OTA-modus zijn begonnen). Nadat het wakker is geworden, is het als een nieuwe herstart en wordt de setup opnieuw uitgevoerd.

Dit zijn de meest opvallende kenmerken van de code:

  • Na het ontwaken stelt de code switchPin (standaard GPIO15) in op hoog. Hierdoor wordt de transistor ingeschakeld, die op zijn beurt de HC-SR04-P-sensor inschakelt. Voordat hij in diepe slaap gaat, zet hij de pin terug naar laag, waardoor de transistor en de HC-SR04-P worden uitgeschakeld, zodat hij geen kostbare batterijstroom meer verbruikt.
  • Als de modePIN (standaard GPIO14) laag is, gaat de code in de OTA-modus in plaats van in de meetmodus. Met OTA (over-the-air update) kunnen we de firmware updaten via Wifi in plaats van via de seriële poort. In ons geval is dit best handig omdat we de serieel naar USB-adapter niet meer hoeven aan te sluiten voor verdere updates. Zet gewoon GPIO14 op laag (met de OTA-schakelaar in het elektronische circuit), reset de ESP8266 (met de reset-schakelaar) en deze zou beschikbaar moeten komen in de Arduino IDE om te uploaden.
  • Op de analoge PIN (A0) meten we de spanning van de batterij. Dit stelt ons in staat om ons apparaat uit te schakelen, oftewel permanente diepe slaap, als de spanning te laag wordt, onder minVoltage, om de batterijen te beschermen tegen overmatige ontlading. De analoge meting is niet erg nauwkeurig, we doen numMeasuresBattery (standaard 10) metingen en nemen het gemiddelde om de nauwkeurigheid te verbeteren.
  • De afstandsmeting van de HC-SR04-P sensor wordt gedaan in de functie afstandsmeting. Om de nauwkeurigheid te verbeteren, wordt de meting numMeasuresDistance (standaard 3) keer herhaald.
  • Er is een functie om de speedOfSound te berekenen uit de temperatuur-, vochtigheids- en drukmeting door de BME280-sensor. Het standaard I2C-adres van de BME280 is 0x76, maar als het niet werkt, moet u het misschien wijzigen in 0x77: bool bme280Started=bme280.begin(0x77);
  • We gebruiken de BME280 in de geforceerde modus, wat betekent dat hij één meting hoeft te doen en weer in slaapstand gaat om energie te besparen.
  • Als u capaciteit (l), fullDistance (cm) en oppervlakte (m2) instelt, berekent de code het resterende volume van de watertank uit de afstandsmeting: dubbel restvolume=capaciteit+10,0*(fullDistance-distance)*area; en upload dit naar ThingSpeak. Als u de standaardwaarden behoudt, wordt de afstand tot het wateroppervlak in cm geüpload.

Stap 6: Het elektronische circuit bouwen

Het elektronische circuit bouwen
Het elektronische circuit bouwen

Hierboven ziet u het diagram van het elektronische circuit. Het is vrij groot voor één breadboard, vooral met de extra grote adapterplaat en de truc met de U-vormige draden. Op een gegeven moment wenste ik zeker dat ik het alternatief had gebruikt om twee breadboards aan te sluiten, maar uiteindelijk is het me gelukt.

Dit zijn de belangrijkste kenmerken van het circuit:

  • Er zijn twee spanningen die een rol spelen: de ingangsspanning van de accu (ongeveer 3,75V) en de 3,3V die de ESP8266 en de BME280 voedt. Ik heb de 3.3V op de linker rail van het breakboard gezet en de 3.75V op de rechter rail. De spanningsregelaar zet de 3.75V om naar 3.3V. Volgens de instructies in de datasheet heb ik 1 μF condensatoren toegevoegd aan de input en output van de spanningsregelaar om de stabiliteit te vergroten.
  • GPIO15 van de ESP8266 is verbonden met de gate van de transistor. Hierdoor kan de ESP8266 de transistor en dus de ultrasone sensor inschakelen wanneer deze actief is en uitschakelen wanneer hij in diepe slaap gaat.
  • GPIO14 is verbonden met een schakelaar, de OTA-schakelaar. Het sluiten van de schakelaar geeft het signaal aan de ESP8266 dat we vervolgens in OTA-modus willen starten, d.w.z. nadat we op de RESET-schakelaar hebben gedrukt (sluiten en openen), en een nieuwe schets over-the-air uploaden.
  • De RST- en GPIO2-pinnen zijn aangesloten zoals in het programmeerschema. De RST-pin is nu ook verbonden met GPIO16 om de ESP8266 te laten ontwaken uit diepe slaap.
  • De pinnen TRIG en ECHO van de ultrasone sensor zijn verbonden met GPIO12 en GPIO13, terwijl de pinnen SCL en SDA van de BME280 zijn verbonden met GPIO5 en GPIO4.
  • Ten slotte is de analoge pin ADC via een spanningsdeler verbonden met de ingangsspanning. Dit maakt het mogelijk om de ingangsspanning te meten om de lading van de batterijen te controleren. De ADC-pin kan spanningen meten tussen 0V en 1V. Voor de spanningsdeler hebben we gekozen voor weerstanden van 100K en 470K. Dit betekent dat de spanning op de ADC-pin wordt gegeven door: V_ADC = 100K/(100K+470K) V_in. Als we V_ADC=1V nemen, betekent dit dat we ingangsspanningen kunnen meten tot V_in=570/100 V_ADC = 5,7V. Wat het stroomverbruik betreft, lekt er ook wat stroom door de spanningsdeler. Met V_in=3.75V van de batterijen vinden we I_leak = 3.75V/570K=6.6 μA.

Zelfs als het circuit op batterijen werkt, is het mogelijk om de USB-naar-serieel-adapter aan te sluiten. Zorg ervoor dat u de VCC van de adapter loskoppelt en GND, RX en TX aansluit zoals in het programmeerschema. Dit maakt het mogelijk om de seriële monitor in de Arduino IDE te openen om de foutopsporingsberichten te lezen en ervoor te zorgen dat alles werkt zoals verwacht.

Voor het volledige circuit heb ik een stroomverbruik van 50 μA gemeten in diepe slaap bij het werken op batterijen. Dit omvat de ESP8266, de BME280, de ultrasone sensor (uitgeschakeld door de transistor) en lekkage via de spanningsdeler en misschien andere lekkages. Dus dat is niet erg!

Ik ontdekte dat de totale actieve tijd ongeveer 7 seconden is, waarvan 4,25 seconden om verbinding te maken met wifi en 1,25 seconden om de gegevens naar ThingSpeak te sturen. Dus met een actieve stroom van 80mA vond ik 160 μAh per uur voor de actieve tijd. Als we 50 μAh per uur toevoegen voor de diepe slaaptoestand, hebben we in totaal 210 μAh per uur. Dit betekent dat 2600 mAh-batterijen theoretisch 12400 uur = 515 dagen meegaan. Dit is het absolute maximum als we de volledige capaciteit van de batterijen zouden kunnen gebruiken (wat niet het geval is) en er zijn geen lekkages die ik niet heb gevonden met mijn huidige metingen. Dus ik moet nog zien of dit echt uitpakt.

Stap 7: De sensor afwerken

De sensor afmaken
De sensor afmaken
De sensor afmaken
De sensor afmaken
De sensor afmaken
De sensor afmaken

Ik heb de sensor in een plastic bak van 1 liter gedaan, waar vroeger soep in zat. Aan de onderkant heb ik twee gaten gemaakt voor de "ogen" van de HC-SR04-P sensor. Afgezien van de gaten moet de container waterdicht zijn. Het wordt vervolgens aan de wand van de watertank bevestigd met een ronde ring die normaal wordt gebruikt voor een regenwaterafvoerleiding.

Veel plezier met het project!

Aanbevolen: