Forum: HF, Funk und Felder Pearl Temperatur Funksensor auslesen 433 Mhz


von Tomat3007 (Gast)


Lesenswert?

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

von Joerg (Gast)


Angehängte Dateien:

Lesenswert?

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<------

von Richard ". (strohfeuer)


Lesenswert?

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
Noch kein Account? Hier anmelden.