Drucken
Kategorie: Wetterstation
Zugriffe: 431

In den bisherigen Beiträgen habe ich den Grund für den Bau sowie einen Überblick über die Station gegeben. Diesmal geht es um die Elektronik und Programmierung der Station.

Alle Pläne und Codes sind in meinem Github Repository zu finden.

Im inneren der Station werkeln insgesamt vier Mikrocontroller. Das Herzstück bildet ein ESP8266 Modul, genauer ein WEMOS D1 Mini pro. Hierbei handelt es sich um einen Mikrocontroller, der neben den üblichen Funktionen (ähnliche einem Arduino) ein WLAN und Bluetooth Modul bietet. Da die Station autark und ohne Kabel auskommen soll, sendet das Modul folglich die gesammelten Messdaten als MQTT Protokoll über WLAN.

Einer der Hauptnachteile von ESP8266 Modulen ist deren hoher Energiebedarf, besonders während der WLAN Übertragung. Würde das Modul kontinuierlich arbeiten, wäre der Akku in wenigen Stunden leer (zum Einsatz kommen 3 NimH Akkusim AA Format). Natürlich muss das Modul nicht permanent Arbeiten und kann in den Tiefschlaf versetzt werden. Während der Controller schläft, treten Ereignisse, etwa Wind oder Regen auf, die gezählt werden wollen. Zudem verfügt das ESP8266 Modul nur über einen analogen Eingang zur z.B. Spannungsmessung der Batterie. Da ich auch die Spannung der Solarzelle messen möchte und der WEMOS zu wenige Pins für alle Funktionen bietet, hat er drei sparsame Kollegen, welche ihm die Arbeit abnehmen.

Zum einen gibt es einen ATTINY85, welcher die Impulse des Regenmessers und Windsensors erfasst. Dieser Controller arbeitet dabei ebenfalls im Tiefschlaf, wird aber durch Interrupts (Wind oder Regen) sowie bei I²C Kommunikation geweckt. Ein weiterer ATTINY85 erfasst die Spannung der Solarzelle und schläft ebenfalls die meiste Zeit. Aufgeweckt wird er ebenfalls bei I²C Kommunikation.

Der dritte im Bunde ist ein ATTINY24, welcher die Windrichtung ausliest. Dieser Controller verfügt über ausreichend Pins, um die insgesamt 8 Reed Kontakte der Wetterfahne auszulesen. Auch dieser schläft die meiste Zeit und wird durch I²C Kommunikation geweckt.

Der Ablauf ist wie folgt.

1. alle Controller befinden sich im Tiefschlaf
2. Sobald Wind oder Regen erfasst wird (durch Reed Kontakt und Interrupt am ATTINY85), wacht dieser kurz auf, zählt einen internen Zähler hoch und schläft weiter
3. Nach einer voreingestellten Zeit (z.B. 5 Minuten) wird der ESP8266 durch seinen internen Timer geweckt. Nun liest er per I²C Schnittstelle die Daten der drei ATTINY aus. Ebenfalls werden die Daten des BME280 Sensors gelesen (Temperatur, Luftdruck und Luftfeuchtigkeit).
4. Die gesammelten Daten werden per WLAN an einen MQTT Broker übertragen. Dies kann etwa www.Thingspeak.com oder ein eigener  Broker (in meinem Falle Node-RED) sein.
5. Der ESP8266 und alle ATTINY treten wieder in den Tiefschlaf

Somit ist der Energieverbrauch der gesamten Station recht gering. Lediglich für einige Sekunden pro Stunde ist der Verbrauch deutlich höher, nämlich immer dann, wenn der ESP8266 aufwacht und Daten sendet.

Damit die Station auch wirklich autark arbeitet, verfügt sie über ein Solarmodul, mit dem die drei in Serie geschalteten NiMh Akkus geladen werden (Trickle charge)

Einen Schaltplan der Station befindet sich wie Eingangs erwähnt im Git Repository. Ebenfalls findet sich hier der Programmcode für jeden der vier Controller.