Inhoudsopgave:

Getijden- en weerklok: 9 stappen (met afbeeldingen)
Getijden- en weerklok: 9 stappen (met afbeeldingen)

Video: Getijden- en weerklok: 9 stappen (met afbeeldingen)

Video: Getijden- en weerklok: 9 stappen (met afbeeldingen)
Video: Vrouw zwemt door drijvende vulkaanstenen in Japan 2024, November
Anonim
Getijden- en weerklok
Getijden- en weerklok

Hoewel je analoge getijdenklokken kunt kopen die een enkele wijzer hebben die aangeeft of het tij hoog of laag is of ergens daar tussenin, wat ik wilde was iets dat me zou vertellen hoe laat het eb zal zijn. Ik wilde iets waar ik snel naar kon kijken zonder het aan te zetten, op een knop te drukken of te wachten. En ik wilde iets met een lange batterijduur. Dus ik gebruikte een TTGO T5-bord, een op ESP32 gebaseerd bord met een 2,13 e-paper display, aangesloten op een TTL5110-chip. De TPL5110 schakelt de T5 elke 2,5 uur in en eenmaal per dag downloadt de T5 getijdengegevens van NOAA en weergegevens van OpenWeatherMap geven de gegevens weer op de e-paper en vertellen de TPL5110 om de T5 uit te schakelen.

UPDATE (25 feb. 2020) De getijdenklok loopt nu een jaar en de batterij staat op 4,00 volt, dus de klok kan mogelijk nog vele jaren lopen.

Stap 1: Hardwarelijst

TTGO T5-bord $ 17

Adafruit TPL5110 bord $5

Adafruit Perma-Proto Kwartformaat bord (optioneel) $ 0,71 (minimale bestelling $ 8,50)

Li-Poly-batterij 1200 mAh $ 10 (of een andere geschikte stroombron)

JST PH 2-pins kabel - mannelijke kop $ 0,75

220 uF condensator

Stap 2: Gereedschap

Soldeerbout

Draadstrippers

Li-Po acculader, zoals deze.

Stap 3: monteer hardware

Hardware monteren
Hardware monteren
Hardware monteren
Hardware monteren
Hardware monteren
Hardware monteren

Het monteren van de hardware is vrij eenvoudig, zoals het schema laat zien. Ik heb een Adafruit Perma-proto-board gebruikt dat lijkt op een normaal protoboard, behalve dat het is ingedeeld als een breadboard, met dezelfde elektrische aansluitingen als een breadboard, wat leuk is. Omdat ik maar een paar verbindingen nodig had en het hele geheel in een kleine doos wilde passen, sneed ik een van de planken in vieren met een Dremel-doorslijpschijf.

De condensator van 220 uF is erg belangrijk. Zonder dit zal de TPL5110 de T5 nooit inschakelen. Het is een beetje onduidelijk waarom, maar andere mensen die de TPL5110 gebruiken, hebben hetzelfde probleem gehad. Misschien trekt de ESP32 meer stroom bij het opstarten dan de TTL5110 kan leveren?

Sluit de batterij niet vast aan. Gebruik de JST-PH-kabel zodat u de batterij kunt loskoppelen om deze op te laden. Er is misschien een manier om de batterij van de T5 terug op te laden via de TPL5110 als de TPL5110 "aan" is, maar ik kan niet instaan voor die techniek.

Ik heb een houten kist gemaakt als behuizing, maar alles met minimale binnenafmetingen van 1,5 "x 2,75" x 1" zou werken.

Stap 4: Stem de timing af

Het TPL5110-bord heeft een trimpotentiometer die het tijdsinterval instelt waarop de TPL5110 wakker wordt. Gebruik een kleine schroevendraaier om dit helemaal tegen de klok in te draaien. Op mijn bord stelde dit het interval in op 145 minuten, wat eigenlijk meer is dan het gespecificeerde maximum van 120 minuten, maar het werkt en was consistent en zal zelfs meer energie besparen dan elke 120 minuten wakker te worden, dus ik gebruikte het. U hoeft het interval niet precies te weten, aangezien het doel is om ongeveer één keer per dag, ongeveer rond 4 uur 's ochtends, gegevens te downloaden. U kunt het interval (bijv. 145 minuten) en de wektijd (bijv. 4 uur) specificeren in env_config.h.

(Als je de timing voor een ander project beter wilt controleren, heeft het TPL5110-bord een spoor op de achterkant dat je kunt knippen om de potentiometer uit te schakelen. Vervolgens bevestig je een weerstand aan de vertragingspin en de weerstand bepaalt het interval, volgens deze grafiek.)

Stap 5: De software

Je hebt de Arduino IDE nodig met het ESP32-pakket. Stel in de IDE uw bord in op "ESP32 Dev Module".

De schets is beschikbaar op https://github.com/jasonful/Tides en vereist 3 bibliotheken:

  1. "ESP8266 Weather Station", verkrijgbaar bij de Arduino Library Manager (of hier). U hebt alleen deze 6 bestanden nodig: ESPHTTPClient.h, ESPWiFi.h, OpenWeatherMapCurrent.cpp, OpenWeatherMapCurrent.h, OpenWeatherMapForecast.cpp, OpenWeatherMapForecast.h en u kunt de rest verwijderen.
  2. "Json Streaming Parser" verkrijgbaar bij de Arduino Library Manager (of hier)
  3. https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo Ook al is de code niet verpakt als een echte bibliotheek, je kunt hem gewoon naar je bibliothekenmap kopiëren en opnemen het.

Stap 6: Configureer de software

Er zijn verschillende parameters die u moet instellen (en een paar die u misschien wilt instellen) in het bestand env_config.h, waaronder:

  • WiFi SSID en wachtwoord
  • NOAA-station-ID (met andere woorden, waar ben je)
  • OpenWeatherMap AppID, waarvoor u zich moet registreren (het is gemakkelijk en gratis)
  • OpenWeatherMap LocationID (nogmaals, waar ben je)
  • CONFIG_USE_TPL5110, waarmee u een T5 kunt gebruiken zonder een TPL5110. In plaats daarvan gaat de software naar de diepe slaapmodus. Het T5-bord trekt ongeveer 8 ma in diepe slaap, dus ik zou verwachten dat de batterij maar een paar dagen meegaat.

Stap 7: Hoe de software werkt

(Je kunt dit deel overslaan als het je niet kan schelen.)

Het doel is om eenmaal per dag wakker te worden, maar aangezien het maximale interval van de TPL5110 slechts 2 uur is, moet de T5 vaker wakker worden. Dus nadat het getijden- en weergegevens heeft gedownload, berekent het hoeveel van deze intervallen van 2 uur er zijn tussen nu en 04:00 uur morgenochtend. Dit wordt enigszins gecompliceerd door het feit dat de TPL5110 de stroom naar de T5 volledig onderbreekt, wat goed is voor de batterij, maar het betekent dat we RAM en de realtime klok verliezen. Het is alsof je elke ochtend wakker wordt met geheugenverlies. Dus om erachter te komen hoe laat het nu is, haalt het het uit de HTTP-header van NOAA. En om te onthouden hoeveel intervallen van 2 uur er nog zijn, schrijft het dat tegen niet-vluchtige opslag (flash). Elke keer dat het wakker wordt, controleert het die teller, verlaagt het, slaat het op en als het groter is dan nul, stuurt het onmiddellijk een signaal naar de TPL51110 ("Klaar") om hem te vertellen hem in de slaapstand te zetten. Wanneer de teller op nul staat, downloadt de code nieuwe gegevens en herberekent en reset de teller.

Stap 8: Voer het uit

Voer het uit
Voer het uit

Zorg ervoor dat de schakelaar aan de linkerkant van de T5 omhoog (aan) staat, upload de schets naar de T5 en binnen een paar seconden moet het scherm worden bijgewerkt met informatie over het getij en het weer.

Als u de software moet debuggen, wijzigt u de "#define DEBUG 0" bovenaan Tides.ino in "#define DEBUG 1". Hierdoor wordt de uitvoer van seriële foutopsporing ingeschakeld en wordt onder aan de e-paper ook het aantal resterende herstarts weergegeven voordat nieuwe gegevens worden gedownload en de tijd waarop de laatste gegevens zijn gedownload.

Stap 9: Toekomstige richtingen

  1. Het gebruik van de TPL5110 in combinatie met een e-paper display is een geweldige manier om gegevens weer te geven die niet vaak veranderen, met een uitstekende batterijduur.
  2. Toen ik dit aan het ontwerpen was, overwoog ik het TrigBoard te gebruiken, een ESP8266-bord met een TPL5111 aan boord. Het zou nodig zijn geweest om een apart e-paper display en e-paper driver board zoals dit of dit te krijgen. Of een driver+board combo zoals deze of deze. Om de code naar ESP8266 te porteren, denk ik dat de SSL-code vingerafdrukken moet gebruiken in plaats van certificaten, en dat de niet-vluchtige opslagcode EEPROM- of RTC-geheugen moet gebruiken.
  3. Ik heb onlangs gehoord dat het Lolin32-bord behoorlijk goed is in de diepe slaapmodus: ongeveer 100uA. Niet zo goed als het TPL51110-bord (20uA volgens Adafruit) maar goed genoeg.
  4. OpenWeatherMap retourneert veel meer weergegevens dan ik weergeef. Inclusief pictogram-ID's, waarvoor u ergens monochrome pictogrammen zou moeten vinden.

Aanbevolen: