WS1600 logging by Götz Romahn

Die sehr verbreitete Wetterstation WS1600 kann für ein Logging leider nicht an einen PC angeschlossen werden. Die Pionierarbeit von »Fred führte aber zur Idee, nach seinem Vorbild den Zusatzempfänger der "WS1600 von Conrad" anzuzapfen und die mit einem Mikroprozessor attiny2313 aufbereiteten Empfangsdaten über eine serielle Schnittstelle an einen PC weiterzuleiten. Der ganze Spaß kostet weniger als 5,- Euro und verlangt brauchbare Lötkenntnisse. Außerdem muß eine attiny2313v programmiert werden können (vielleicht hilft da ja ein guter Bekannter).


Die Hardware Version 1 -- einfach-Version, Kosten ca. 5,- Euro

Für einen Nachbau ist unbedingt ein Besuch Freds Seite zu empfehlen. Meine Schaltung entspricht mit nur wenigen Änderungen seiner Variante 3, siehe folgendes Bild:

Schaltung Aufbau von oben

Anstelle seines RX29 benutze ich den Zusatzempfänger der WS1600. Für die Ausgabe der seriellen Daten an den PC gibt es mehrere Möglichkeiten:
- die billigste braucht nur einen (beliebigen) PNP Schalttransistor und zwei Widerstände (siehe Schaltung),
- wer an seinem PC kein serielles Port mehr hat kann einen Seriell zu USB Adapterkabel nehmen.
- alternativ wäre auch ein TTL zu USB Adapter gut geeignet. Das Foto unten zeigt einen solchen. Geignete Adapter gibt es ab ca. 5,- Euro beim bekannten Auktionshaus. Solch ein Adapter kann dann auch gleich die Stromversorgung für die ganze Schaltung übernehmen. Mein Zusatzempfänger wollte allerdings nicht mit einer Spannung von 3,3V, die vom Adapter geliefert wird, starten. Zur Spannungreduzierung habe ich daher eine einfache Siliziumdiode eingefügt. Man kann die ganze Schaltung auch aus den Batterien des Zusatzempfängers versorgen. Dann entfällt natürlich die Diode. Der Stromverbrauch ist knapp 1 mA. Die Batterien sollten also für ca. 2 Monate reichen.



Aufbau von unten

Mikroprozessor Detail


Die Software Version 1

Auch die Software wurde im wesentlichen von Fred übernommen und nur an das unterschiedliche Datenprotokoll des TX22 Transmitters der WS1600 angepaßt. Ergänzt wurden Ausgabemöglichkeiten für:
- die Rohdaten für diagnostische Zwecke, und drei alternative Varianten für die Datenübernahme durch den PC
- 1. ASCII Text der dekodierten Datenfelder oder
- 2. Datenübergabe im Format des ELV-PC-Wettersensor-Empfängers oder
- 3. Datenübergabe im Format der Oregon Scientific WMR918

mit den Formaten 2 und 3 können direkt die Daten an WsWin von Werner Krenn übergeben werden

Demo WsWin

mit dem Format 3 können die Daten auch an Cumulus übergeben werden

Demo Cumulus Demo Cumulus

Die Hardware Version 2, etwas aufwändiger, Kosten ca. 35,- Euro

Für die Messung des Luftdrucks, der Innentemperatur und der Luftfeuchte wurde die Hardware um einen Drucksensor BMP085 und einen Temperatur-/Feuchtesensor SHT 11 erweitert. Da der Flashspeicher des Attiny2313 für den umfangreicheren Programmcode nicht mehr ausreicht, wird hier ein ATmega88p verwendet.

Schaltung Version 2

Da der Drucksensor BMP085 doch sehr klein und damit schwierig zu löten ist, wird ein fertiges Modul verwendet, welches auch gleich Spannungsregler, Levelconverter und i2c Widerstände enthält, verwendet ( gibts es aus China beim bekannten Auktionshaus für ca. 10,40 Euro). Für den PC-Anschluß und die Stromversorgung wird, wie oben schon beschrieben, ein Seriell-zu-USB Konvertermodul auf der Basis eine FTDI Chips eingesetzt (gibt es ebenfall beim Auktionshaus fertig als Modul).

Die Hardware-Version 2 ist hier mit der Software Cumulus in Demo-Betrieb zu sehen.


Die Software Version 2

Die Software von Version 1 wurde für Erfassung des Luftdrucks durch den BMP085 und der Temperatur/Feuchte durch den SHT11 entsprechend erweitert. Es wurden open source Bibliotheksroutinen aus dem Internet verwendet. leider sind die Autoren z.T. unbekannt. Es bestehen weiterhin Ausgabemöglichkeiten für:
- die Rohdaten für diagnostische Zwecke, und drei alternative Varianten für die Datenübernahme durch den PC
- 1. ASCII Text der dekodierten Datenfelder oder
- 2. Datenübergabe im Format des ELV-PC-Wettersensor-Empfängers ( hier wurde die Ausgabe der Druck-, Temperatur- und Feuchtedaten allerdings nicht ergänzt) oder
- 3. Datenübergabe im Format der Oregon Scientific WMR918 mit allen vorhandenen Daten.

Mit dem Format 3 können die Daten direkt an WsWin von Werner Krenn oder auch an Cumulus übergeben werden ( siehe oben).


Einige Beobachtungen

Nach Laden der Batterien in den Sensor TX22 beginnt eine Acquisitions-/Synchronisations-Phase von etwa 5 Stunden. Während dieser Zeit können Basisstation und Zusatzempfänger mit dem Sensor synchronisiert werden. Zugleich sendet der Sensor alle ihm zur Verügung stehenden Daten alle 4,5 Sekunden. Ein Beispiel mit Roh- und dekodierten Daten gibts es hier. Nach etwa 5 Stunden ist die Acquisitions-/Synchronisations-Phase beendet. Diese wird durch ein Bit im Datenstrom (siehe Protokoll) angezeigt. Ab diesem Zeitpunkt werden alle 4.5 Sekunden nur noch einzelne ausgewählte Daten gesendet z.B. für Regen oder Wind. Ein Beispiel für diese Datensätze gibt es hier.

Eine Besonderheit ist, dass vom TX22 auch Daten für Windböen (Gusts) gesendet werden, die von der WS1600 leider nicht angezeigt werden. Das dürfte daran liegen, dass der Windsensor TX23 auch für die WS3650 benutzt wird, die auch Böen anzeigen kann.
Unklar sind mir die Datenblattangaben zur maximalen Windgeschwindikeit mit 50 m/s. Ein Wert von 50 m/s entspricht einer Windgeschwindigkeit von gerundet 180 km/h. Ein solcher Wert kann von der Basisstation der WS1600 aber gar nicht dargestellt werden, da nicht mehr als 2 Ziffern vor dem Komma angezeigt werden können. Außerdem werden für die Übertragung von max. 50,0 m/s im Datenprotokoll 9 Bits benötigt; das 9te Bit habe ich bislang aber noch nicht gefunden. Böen können allerdings mit 50 m/s angezeigt werden.


Download


Die Software der Version 1 mit dem Attiny2313 kann hier herunter »geladen werden

und die Software der Version 2 mit dem Atmega88p gibt es »hier.

Zur Programmentwicklung benutze ich WinAVR2010. Evtl. muß dort im Ordner Util im Template delay.h das include von config.h auskommentiert werden, da es nicht benötigt wird. Alternativ würde auch eine leere Datei config.h helfen.
Es können durch entsprechende Definitionen (siehe Quelltext) verschiede Programmvarianten erzeugt werden: für den Anfänger empfehle ich die Variante mit #define OUT_RAW 1 und #define OUT_ASCII 1. Da kann man dann schön sehen, ob Daten korrekt empfangen und dekodiert werden. Danach könnte entsprechend den persönlichen Wünschen die ELV-Variante (also nur #define OUT_ELV 1 alle anderen 0) oder die Oregon Scientific Variante (mit #define OUT_WMR 1 alle anderen 0) erzeugt und geladen werden. Danach WsWin oder Cumulus starten und sich freuen :-)

Bitte beachten: es werden in Version 1 keine "Innen-Daten" (Temperatur/Feuchte/Luftdruck) übertragen und angezeigt.!
In Version 2 gibt es nun zusätzlich auch Anzeigen für Luftdruck, Innentemperatur und Innenfeuchte.


Disclaimer


Wie immer bei jedem Hobbyprojekt: keine kommerzielle Nutzung, alles unter GNU-Lizenz und natürlich alles auf eigene Gefahr.

goetz@g-romahn.de