Wetterstation | v1

Eines meiner ersten Arduino Projekte begann mit einer "Wetterstation". Das war am Anfang einfach nur ein Arduino Mega mit einem BME280 Sensor und Datenausgabe via USB im Arduino Serial Monitor.

Die Wetterstation sollte ein bestehendes Innen- / Außenthermometer ersetzen, welches eine große LCD Anzeige besaß und batteriebetrieben war.

Schon bald wurde aus einem simplen Thema wie einer Wetterstation ein großes Projekt, welches mich über mehrere Jahre bis heute verfolgt. Dabei lerne ich immer wieder neue Dinge, programmieren, Platinendesign aber auch als Nebeneffekt: Wetter verstehen.


Entwicklungsschritte

Ich habe nicht mehr alle Ausbaustufen im Blick, hier aber mal eine grobe Übersicht:

  • Ursprung: Arduino Mega mit BME280 Sensor
  • Übertragung der Daten via NRF24L01 Funkmodule
  • Anzeige über ein 7" LCD via Adapterplatine
  • Umstieg von Funk zu Netzwerk (ENC28J60)
  • Entwicklung, Bau und Troubleshooting des PCB & Code für den AS3935 Blitzsensor
  • Datenverlust :(
  • Neuprogrammierung vom Code
  • Verwurf der Anzeige via LCD, Umstieg zum "TIG-Stack" (Telegraf, InfluxDB, Grafana) um die Daten optisch aufzuwerten und zu loggen
  • SDS011 Feinstaubsensor hinzugefügt
  • Entwicklung und Bau des PCB & Code für den Geigerzähler
  • Umstieg vom ENC28J60 Netzwerkmodul zu W5500
  • Umstieg von BME280 zu SHT41
  • Abbau des Blitzsensors, da an geplanter Stelle zu viele Störungen auftraten
  • RG-15 hinzugefügt

Aktueller Aufbau der Station

Komponenten im aktuellen (2023-12-18) Zustand:

Modul Funktion
Arduino Mega zentrale Steuerung und Datenverarbeitung
SHT41 Messung von Temperatur und Luftfeuchtigkeit
W5500 Modul für die Datenübermittlung via Netzwerk
NRF24L01 Funkmodul zur Übertragung der Daten via 2,4 GHz
Geigerzähler Selbstentwickelte Platine. Arduino Nano für die Auswertung und Übermittlung via UART
SDS011 Feinstaubsensor, Messung von PM 2,5 / 10
RG-15 Niederschlagsmessung
AS3935 (inaktiv) Messung der Entfernung von Gewitter
Pegelwandler Kommunikation mit Modulen, welche 3,3 V statt 5 V des Arduino GPIO Spannungspegels benötigen

Änderungsgründe / Herausforderungen

  • Umstieg von Funk zu Netzwerk
    • Die Übertragung war nicht immer stabil, ein Checksum Verfahren wäre notwendig gewesen
    • Ein Gateway von Funk zu Netzwerk wäre ohnehin notwendig gewesen, um die Werte in einer Datenbank mitzuschreiben
  • Verwurf Anzeige über LCD
    • Dies war einer der Punkte, an dem ich lernte, wie langsam das Arduino Mega für gewisse Applikationen sein kann. Selbst bei kleinen Schriftarten dauerte es doch einige hundert Millisekunden, bis alles aktualisiert war. Klingt nicht nach viel, dem Auge fällt es aber auf.
    • Schriftarten (Fonts). Klassisches rabbit hole. Wusstest du, was der Unterschied zwischen proportionalen und Monospace Schriftarten ist? Was Serifen sind? Wie viel Speicher Schriftarten verschlingen können? Wie (große) Datenmengen in Arduinos gespeichert werden? Wie Schriftarten umgewandelt werden müssen, damit sie über die üblichen Libraries les- und anzeigbar sind? Dass Schriften quasi auch nur Bilder sind, welche übertragen werden und somit bei entsprechender Buchstabengröße lang zum Anzeigen brauchen? Nein? Ich jedenfalls nicht! D:
  • BME280 zu SHT41
    • Der BME280 ist einer der Lieblingssensoren unter den Bastlern. Einfach ansprechbar, misst Temperatur / Luftfeuchtigkeit / Luftdruck, ist verhältnismäßig günstig
    • Sensoren sind meistens nur für einen bestimmten Anẃendungszweck entwickelt, getestet und kalibriert
    • Die Bosch BMExxx Sensoren sind nicht für den Einsatz draußen geeignet. Zwar mögen Temperatur und Luftdruck weiterhin funktionieren, ein gängiges Problem ist aber die nicht mehr sinkende Luftfeuchtigkeit. Diese lässt sich nur durch aufwändige Trocknungsverfahren wieder "zurücksetzen" - bis der Sensor erneut gesättigt bzw. zu feucht geworden ist
  • ENC28J60 zu W5500
    • Das W5500 Modul ist einfacher ansteuerbar und verbraucht weniger Strom. Seltsame Verbindungsprobleme bzw. Abbrüche ließen sich auf den Adapter zurückführen und selbst Workarounds mit Reset des Moduls brachten es nicht immer wieder in einen Normalzustand. Damit war ein händisches stromlos-machen der Wetterstation notwendig und führte je nach Dauer auch zu längeren Datenlücken
  • Abbau des Blitzsensors
    • Der Blitzsensor sollte eigentlich auf dem Dachboden stationiert werden. Dieser ist für diverse elektronische Geräte sehr störanfällig und das sorgte letztlich dafür, dass durch die regelmäßige Rekalibrierung das hohe Störungsniveau als neue Basis genutzt wurde. Dadurch gingen die schwachen Signale des Gewitters unter bzw. erst wenn sich ein großes Gewitter in der Nähe entlud wurde es verzeichnet. Als Warnung somit nicht wirklich nützlich.

Stand 2022-11


To be continued...


- Dom