Hallo Zusammen, mir ist gestern folgender Funk-Temperatur-Sensor der "Firma" PEARL in die Hände gefallen: http://www.pearl.de/a-NC7159-5409.shtml Technische Daten: Funk-Temperatursensor für PEARL-Wetterstation Gut ablesbares 3cm-LCD-Display mit Temperaturanzeige des Messfühlers (Auflösung 0,1 °C) Temperaturbereich: -50 °C bis +70 °C Insgesamt bis zu 3 Funk-Außensensoren anschließbar Manuelle Kanalwahl Sende-Reichweite: bis zu 30 m Sendefrequenz: 433 MHz Aufsteller & Wandhalterung Stromversorgung: 2 Batterien AAA Micro (bitte separat bestellen) Maße: 64 x 98 x 20 mm Gewicht: 52 g (netto) Inklusive deutsche Anleitung Wie zu sehen sendet dieser auf 422 Mhz. Da ich einen 433 Mhz Empfänger habe wäre es schon dolle das ding damit "abzufangen" und "auszulesen". Nun ist die Frage, wie sendet der?! Kennt einer von euch das Protocol? Schickt der evtl codiert? (Manchester?) Mein Plan war es sonst eine "direktverbindung" zwischen meinem Arduino und dem Sensor herzustellen um Ihn zumindest mal so auszlesen. Wie muss ich dafür vorgehen?? Ich habe gesehen das von der Hauptplatine zu einer kleineren Platine folgende Sachen weg gehen: VCC GND DA Korrigiert mich wenn ich falsch liege aber DA ist doch dann der "Ausgang" also enthält DA doch die Daten welche gesendet werden sollen oder?? Und da erst auf der kleinen Platine ein 433 Mhz "Dingel" ist, müsste da doch HIGH LOW HIGH LOW ankommen oder?? Mein Plan war nun, von dort eine direktverbindung zum arduino eingang zu legen... reicht das?? oder muss ich noch GND und VCC legen?? Der Sensor verwendet ja 3 Volt (2x AAA), der Arduino 5 Volt. Muss ich also nur DA (des Sensors) an bsp. Input 4 vom Arduino hängen, Batterien rein und dann auslesen was da ankommt? Oder muss ich da noch was verkabeln und wenn ja wie? :D ICH DANKE EUCH Andre
Keine Ahnung ob es weiterhilft. Aber habe vor 4 Tagen dasselbe Problemchen gehabt und einen ähnlichen Sensor (siehe Anhang) erfolgreich per Arduino und 433MhZ auslesen können. Der Code gewinnt sicher keinen Schönheitswettbewerb, aber er tut: 433MhZ-Reader (Den hier: http://www.watterott.com/de/RF-Link-2400bps-Empfaenger-434MHz ) an Pin 2 geflanscht, mit Spannung versorgt und das Ding unten laufenlassen. Schon purzeln die Bits und die Temperatur (versteckt sich zwischen Bit 16 und Bit24) aus der Seriellen. Sofern "Müll", jedoch mit der passenden Startsequenz, kommt decodiert er als -999 Viel Spass damit. -----8<------
1 | /* |
2 | Liest dieses komische Tchibo-Wetterdingens per 433MhZ aus. |
3 | */ |
4 | |
5 | boolean cnt=false; |
6 | int reader=0; |
7 | int cnter=0; |
8 | char reading[28]; |
9 | void setup() { |
10 | Serial.begin(9600); |
11 | Serial.println("go!"); |
12 | pinMode(2, INPUT); |
13 | // pinMode(13,OUTPUT); |
14 | } |
15 | |
16 | void loop() { |
17 | int LowVal=pulseIn(2,LOW); |
18 | if (LowVal < 11000) { // Kuezer als 1100ms Low ? Koennte unserer Sensor sein |
19 | if (decodeTime(LowVal) == 'S') { // Startsequenz ? |
20 | cnt=true; // Dann go fuer die Sammlung |
21 | cnter=0; // BitCounter auf 0 |
22 | } |
23 | if ( (cnter<=27) && cnt && ((decodeTime(LowVal) == '0') || (decodeTime(LowVal)=='1'))) { // Stream noch nicht voll und ein Bit erkannt ? |
24 | // Serial.print(decodeTime(LowVal)); |
25 | reading[cnter]=decodeTime(LowVal); // Ab ins Array damit |
26 | cnter=cnter+1; // Arraycounter fuers naechste Bit inkrementieren |
27 | } |
28 | } else { |
29 | cnt=false; // Zurueck auf Anfang - nix fuer uns. |
30 | } |
31 | |
32 | if ((cnter==28)) { // Arrray Voll ? |
33 | Serial.print('/'); |
34 | Serial.print(reading); |
35 | Serial.print('/'); |
36 | Serial.println(decodeTemp(reading)); |
37 | cnter=0; |
38 | cnt=false; |
39 | } |
40 | |
41 | } |
42 | |
43 | float decodeTemp(String bitstream) { // Versucht aus dem Bitstrom die Temp. zu berechnen |
44 | int x=0; |
45 | int chk=0; |
46 | for (int i=16;i<24;i++) { // Extrahiert das Byte zwischen Bit 16 und 24 und packt es als integer in "x" |
47 | if (bitstream[i] == '1') { |
48 | bitSet(x,(23-i)); |
49 | } |
50 | } |
51 | for (int i=4;i<15;i++) { // Kenner aus den 3 Nibbles zwischen Bit 4 und 15 holen (koennte auch der Kanal sein ?) |
52 | if (bitstream[i] == '1') { |
53 | bitSet(chk,(14-i)); |
54 | } |
55 | } |
56 | if (chk != 136) { // Kenner = 136 ? Dann ist es unserer Sensor ! |
57 | return(-999); // Wenn nicht, dann -999 zurueck |
58 | } else { |
59 | return ((float)x/10); |
60 | } |
61 | } |
62 | |
63 | char decodeTime(int time){ // Wandelt die Pulse in Bits um. |
64 | if (time > 1500 && time < 11000) { // passendes Signal (zwischen 150ms und 11000ms) ? |
65 | if (time < 2500) { // kleiner 250ms ? Dann LOW |
66 | return '0'; |
67 | } |
68 | if (time < 5000 && time >3000) { // Zwischen 500ms und 1000ms dann HIGH |
69 | return '1'; |
70 | } |
71 | if (time >8000) { // Groesser 800ms dann Startsequenz ! |
72 | return 'S'; |
73 | } |
74 | } else { |
75 | return 'X'; |
76 | } |
77 | } |
----8<------
Hallo Jörg, bin Anfänger mit dem Arduino. Könntest Du bitte posten, ( Bild oder Schaltbild )wo und wie der 433MHZ-Empfänger am Arduino angeschlossen wird ???? desweiteren wo werden die ausgelesenen Daten angezeigt, am PC-Monitor oder in einem separaten Display am Arduino ??? Wäre für eine Antwort wie eventuell auch andere User Dir sehr dankbar. Viele Grüße Strohfeuer
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.