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
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
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
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
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!
Hallo, Wo hast du das Datensignal abgegriffe? Oder nimmst Du einen eigenen 433mHz Empfämger?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.