Zugegebenermaßen behandelt dieser Artikel kein Amateurfunkthema per sé, dennoch werden einige vielleicht interessante funk-technische Themen gestreift.
Doch starten wir von vorne: Ich habe seit etlichen Jahren eine Wetterstation der Marke Bresser im Einsatz. Die Auswahl war damals schwierig, denn es sollte etwas mehr sein als bloß Temperatur und Luftfeuchtigkeit, ein Profigerät mit Wind- und Regensensor kann ich jedoch aufgrund meiner Wohnsituation nicht sinnvoll einsetzen.
Grundsätzlich bin ich mit der Wetterstation zufrieden, jedoch haben die Außensensoren leider eine relativ begrenzte Lebensdauer. Entweder sie stellen den Betrieb komplett ein oder sie senden – wohl aufgrund der anfälligen Sensorik – offensichtlich falsche Werte.
Anlass zur Idee des Selbstbaus war letztendlich, dass ein Ersatzsensor inklusive Versandkosten fast so viel kostet wie die gesamte Wetterstation – ein Totalschaden sozusagen.
Am Anfang stand die Recherche nach bereits verfügbaren Lösungen oder Ideen. So bin ich auf die Software rtl_433 1) gestoßen, welche als Plugin in SDRsharp 2) zusammen mit meinem AirSpy R2 SDR Empfänger arbeitet.
rtl_433 kann eine unzählige Menge an Funkprotokollen im 70cm ISM Band dekodieren, und zum Glück auch die Daten meiner Wettersensoren.
Aus dem Quellcode von rtl_433 kann man dann auch die entsprechende Logik entnehmen, welche ich in unterschiedlichen Varianten auf Arduino bzw. ATmega Plattformen portiert habe.
Gleichzeitig wollte ich die Gunst der Stunde nutzen und einen modernen Mikrocontroller einsetzen, daher fiel die Wahl auf den ATtiny816 von Microchip 3). Die Firma Adafruit stellt kleine, einfach gehaltene Boards 4) mit diesem Controller her, welche auch bei uns zu einem günstigen Preis (ca. €5,-) erhältlich sind. Dazu gibt es eine Reihe an Sensoren, welche über den I2C Bus bequem mit Steckverbinder angeschlossen werden können. Daher fiel die Wahl des Temperatur-/Luftfeuchtigkeitssensors auf den AHT20 5). Zusätzlicher Vorteil bei der Verwendung von Boards von Adafruit ist, dass es entsprechende quelloffene Bibliotheken für Arduino gibt, welche recht schnell auf andere ATmega oder ATtiny Controller portierbar sind.
Mechanisch hat der Aufbau leicht im Originalgehäuse Platz, welches ich daher wiederverwenden kann. Die Stromversorgung erfolgt wie bisher über 2xAAA Batterien, also 3V. Diese werden ungeregelt (und damit verlustfrei) an den Mikrocontroller gespeist.
Ebenso wiederverwendet wird das ASK Sendermodul (433,920 MHz), da dieses als eigenständige Platine ausgeführt ist und tadellos funktioniert.
Kurz zur Logik: die Wetterstation erkennt nach dem Einschalten die Außensensoren, bei welchen entweder durch Einsetzen der Batterien oder durch Drücken eines Tasters eine Aussendung ausgelöst wird. Der jeweilige Sensor identifiziert sich mit einer ID zwischen 0-255, welche beim Einschalten zufällig gewählt wird. Damit wird die Wahrscheinlichkeit einer Kollision mit baugleichen Sensoren in der (Funk-)Nachbarschaft verringert. Es können maximal 3 Außensensoren in einer Wetterstation registriert werden.
Danach wird alle 60 Sekunden die Aussendung mit den aktuellen Messwerten wiederholt. Die Wetterstation merkt sich den Zeitpunkt der Aussendungen und geht erst nach Ablauf der 60s wieder auf Empfang, um so Strom zu sparen.
Alternativ zum 1:1 Ersatz habe ich auch überlegt, fertige Temperatur-/Luftfeuchtesensoren zu verwenden, welche die Daten über Bluetooth oder ZigBee aussenden und diese dann in einem Mikrocontroller umzusetzen und zur Wetterstation zu senden. Gleichzeitig könnte man die Daten auch noch ins APRS-Netz einspeisen. Ein Versuch mit einem Shelly BLU H&T 6) in Kombination mit einem Arduino Nano 33 IoT 7) verlief erfolgreich, das Empfangen und Dekodieren der Bluetooth Low Energy (BLE) Daten war aufgrund gut verfügbarer Dokumentationen recht gut zu bewerkstelligen. Letztlich entschied ich mich aber gegen diese Variante, da ich dafür nicht extra ein Mikrocontroller-Board rund um die Uhr laufen lassen wollte, welches eine eigene Stromversorgung benötigt hätte (Batterieversorgung wäre aufgrund des Stromverbrauchs keine Option gewesen).
Der Quellcode des Projekts ist auf Github unter https://github.com/pe-jot/BresserWeatherSensor zu finden.
Links:
1) rtl_433: https://github.com/merbanan/rtl_433
2) Airspy: https://airspy.com/download/
3) Microchip ATtiny816: https://www.microchip.com/en-us/product/attiny816
4) ATtiny816 breakout board: https://www.adafruit.com/product/5681
5) AHT20 breakout board: https://www.adafruit.com/product/4566
6) Shelly BLU H&T: https://www.shelly.com/de/products/shelly-blu-h-t-ivory
7) Arduino Nano 33 IoT: https://store.arduino.cc/en-at/products/arduino-nano-33-iot