Forum: Mikrocontroller und Digitale Elektronik Pollin PFR-130 Regenmesser mit Arduino decodieren


von Wolfgang K. (donkracho)


Angehängte Dateien:

Lesenswert?

Hallo,

ich wollte meine Bewässeungssteuerung auf Basis eines Arduino Mega um 
einen Regenmesser erweitern. Eher zufällig hatte ich den günstigen 
Pollin PFR-130 Regenmesser entdeckt und bestellt. Die Internetrecherche 
nach dem verwendeten Protokoll gab keine wirklich verwertbaren, 
vollständigen Informationen. Also habe ich mich selbst dran gesetzt und 
meine es jetzt vollständig decodiert zu haben. Vielleicht hat ja sonst 
noch jemand Interesse daran, daher veröffentliche ich hier den Arduiono 
Sketch eines Decoders. Viel Spass damit.

Das Protokoll des PFR-130 sieht wie folgt aus:
 * Decoder for Pollin PFR-130 Temerature/Rain Gauge
 *
 * The external unit is sending at 433,92 MHz with ASK modulation
 * recommended receiver: Geeetech 433Mhz Superheterodyne 3400RF @5V
 *
 * 36 bit protocol send every 45 seconds with 7 repeats
 *
 * Sync:  435us high 8100us low
 * 0:     435us high 2130us low
 * 1:     435us high 3840us low
 *
 * S0000 0000 0011 1111 1111 2222 2222 2233 3333
 * S0123 4567 8901 2345 6789 0123 4567 8901 2345
 * |----|----|----|----|----|----|----|----|----
 * S0000 hhhh bsRR tttt tttt tttt rrrr rrrr xxxx
 *
 * S:  Sync
 * 0:  4 bit 0
 * h:  4 bit house code random after battery change (I got 5, 6 or 7)
 * b:  1 bit battery state 0 == OK
 * s:  1 bit force TX switch 1 == switch pressed
 * R:  2 bit MSB of rain value
 * t: 12 bit signed temperature * 10 (eg: 23,1 send as 231)
 * r:  8 bit LSB of rain value
 * x:  4 bit checksum XOR of 8 nibbles send
 *
 * The rain value is 10 bit and is the accumulated count of seesaw 
pulses since last transmission multiplied by 25
 * one pulse is 25 and 40 pulses are 1000
 * one pulse of the seesaw equals 0.5mm rainfall on the display.

: Bearbeitet durch User
von Couka R. (Gast)


Lesenswert?

Da hab ich jetzt n Moment gebraucht bis ich kapiert habe, dass das keine 
Frage ist :D

Du könntest vll. noch hinzufügen, wie "rain value" zu deuten ist. Also 
hoher Wert -> nass oder trocken?

lg, couka

von Wolfgang K. (donkracho)


Lesenswert?

Stimmt, habe ich jetzt noch nachgetragen.

Ein Impuls (also ein Umschlagen der Wippe) entspricht 25 im 
Niederschlagswert und 0.5mm Niederschlag auf dem Display. Das Display 
berechnet daraus Histogramm, Stunden- und Tageswerte.

Die Außeneinheit sendet immer nur die zwischen den Sendungen (also alle 
45s) aufsummierten Wippen-Impulse. Eine kleine Besonderheit ist mir noch 
aufgefallen: Hat die Wippe längere Zeit still gestanden 
(Niederschlagswert gleich 0) wird erst nach 3 Übertragungen (135s) das 
erste mal ein Niederschlagswert übermittelt.

: Bearbeitet durch User
von Peter K. (beschtler)


Lesenswert?

Vielen Dank für den Post.
Ich habe mir den Regenmesser gekauft, um zu sehen, ob ich abends meine 
Pflanzen/Rasen noch gießen muss oder ob es schon genug Regen gegeben 
hat.
Das Anzeigegerät finde ich nicht so toll und eine eigene Steuerung zu 
bauen kam mir auch in den Sinn.
Hast Du schon Erfahrung mit der Haltbarkeit des Außensenders?
Mit Empfängermodulen habe ich keine Erfahrung. Gibt es auch Alternativen 
zum Geetech z.B. bei Pollin?

: Bearbeitet durch User
von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn du da weiter dran rummachst, wäre 'Projekte & Code' vermutlich die 
richtige Ecke dafür. Hier im µC Forum verschwindet sowas nach einer 
Woche im Gewühl.
Ich gratuliere dir auf jeden Fall schon mal zum geknackten Code, gute 
Arbeit!

von Matthias S. (mat-sche)


Lesenswert?

Hallo,
Wo hast du das Datensignal abgegriffe? Oder nimmst Du einen eigenen 
433mHz Empfämger?

von Wolfgang K. (donkracho)


Lesenswert?

Die Anzeigeeinheit finde ich auch nicht so dolle, für den Kurs bekommt 
man sonst aber nicht einmal den Regensensor. Mit der Haltbarkeit des 
Sensors habe ich keine Erfahrung. Der Kunststoff wirkt spröde. Ich habe 
aber auch vor das Ding im Winter innen zu lagern. Die Elektronik ist 
aber samt Temperatursensor wasserdicht verpackt. Die Temperaturanzeige 
ist erstaunlich genau (ca. 0,1°C höher als andere Referenzen). Da man 
den Sensor aber vermutlich direkter Sonneneinstrahlung aussetzen muss, 
wenn man den Regen ungestört einfangen will, ist die Temperatur für mich 
eher Nebensache. Der Sensor hat ein getrenntes 433,92 MHz Sendemodul, 
man kann also sehr schnell erkennen wo man das Signal abgreifen könnte.

Ich habe zum Dekodieren eines dieser billigen Empfangsmodule verwendet. 
Betreibt man die mit 3,3V hören sie auf zu rauschen, haben dann aber 
auch kaum Empfindlichkeit. Auch mit 17,2cm Antenne angelötet  muss ein 
Sender in direkter Nähe stehen (10 bis 30 cm). So ist aber auch 
sichergestellt, dass man nur den Sender empfängt, den man gerade 
decodieren will.

Die Sende-Power des Sensors ist gering, was vermutlich aber eher der 
niedrigen 3V Betriebsspannung geschuldet ist. Die Sendeantenne ist 
gewendelt, die könnte man sicher noch "ausziehen". Mit einem 3400RF 
Empfangsmodul kann man aber durchaus 7 bis 10m und eine Wand 
überbrücken. Das 3400RF Modul empfängt aber wiederum auch jeden Mist, z. 
B. das Thermometer vom Nachbarn und auch breitere Störimpulse. Die 
Dekodier-Routine muss dann entsprechend robust sein und Störer 
rausfiltern können.

Der 3400RF ist schon ein dramatischer Unterschied gegenüber den billigen 
Dingern. Mit Alternativen habe ich keine Erfahrung. Meine Wahl fiel auf 
den 3400RF wegen der allgemein guten Bewertungen. Entweder ewig warten 
auf eine Lieferung aus China oder bei ebay für 10€ das Sender/Empfänger 
Pärchen von einem Händler, der von Deutschland aus versendet 
(http://www.ebay.de/itm/381199588108). Alternativ kann man ggf. 
versuchen eine altes Funkthermometer oder eine Funksteckdose 
auszuschlachten.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.