PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 433MHz-Außensensor von Wetterstation anzapfen



EinsamerUser
10.03.2005, 20:53
Hi Zusammen,

ich bin im Moment am überlegen ob es denn nicht möglich wäre über einen 433MHz-Empfängermodul (z.B. von Conrad) auch der Außensensor einer Wetterstation zu empfangen, auszuwerten und z.B. auf einem Display auszugeben!!?? :-k

Leider habe ich noch überhaupt keine Ahnung wie das Funksignal des Sensor überhaupt aussieht, wie die Daten übertragen werden...

Ich wollte das ganze eigentlich über einen PIC18F4550 realisieren, aber der PIC16F877A würde es zu anfang auch tun.

Hat irgendjemand schonmal sowas ausprobiert? Oder hat jemand Ahnung wie das Signal aussieht, gibt es da irgendwelche standards??

Vielen Dank für Eure Hilfe!! [-o< :-k


Ähm, den PIC als Sender für ne Funksteckdose zu verwenden wäre auch nicht schlecht!Wenn jemand dazu was weis.

Dino Dieter
10.03.2005, 21:51
Hallo

Wenn es ein Sensor wie der FS20 ist schau mal bei

http://www.cc2net.de/Foren/CC2Net_Forum/das_cc2net_forum.html

und such nach FS20. Sollte dir weiter helfen.

Gruß

Goblin
11.03.2005, 10:59
diese funkwetterstationen gibt es des öfteren recht günstig bei aldi, lidl, tschibo & co. falls es dir nicht ums basteln geht (was ich für unwahrscheinlich halte! :) )

11.03.2005, 15:23
mmhhh...ja ein bissle basteln wollte ich schon. :cheesy: Eine Funkwetterstation besitze ich schon, allerdings würde ich dieses Module gerne Anzapfen. Nur wie?? :-k



such nach FS20

jepp hab ich gemacht. Ist auch recht interessant, da ich das System noch nicht kannte. Allerdings arbeitet das System nicht auf 433MHz und meine Wetterstation arbeitet mit 433MHz.

Gibt es deinen keinen Standard für diese Art von Übertragung auf dieser Frequenz?

stegr
12.03.2005, 10:18
Die meisten Module arbeiten mittels einer digitalen Ansteuerung (ach nee... was denn sonst) und übertragen dieses Digitalsignal mittels Manchestercodierung. Was aber in den Digitaldaten drinnen steht, das ist von Anwender zu Anwender unterschiedlich. Was du machen könntest, ist dass du dir irgendeine Übertragungslücke suchst - die gibt es sicher - und da drinnen sendest. Dann musst du aber auf beiden Seiten entsprechende Elektronik vorsehen.

Oder du schleifst das bisherige über deinen PIC durch, d.h. du klaust dem Sender die Datenleitung, hängst die auf den PIC und an nen Pin am PIC deinen Sender. Du musst dann nur die Daten schnell genug verarbeiten (was aber bei Datenraten im wenige Kilobit-Bereich kein Problem sein dürfte).

Aber einen echten Standard gibt es nicht.

MfG
Stefan

PS: vielleicht wäre es einfacher, wenn du die Ansteuerung der Sensoren komplett vom PIC machen lässt, dann ersparst du dir viel Stress...

07.04.2005, 19:01
Moin!

Ich habe hier einen Aurel RX-4M50RR30SF direkt an die serielle Schnittstelle von einem PC angeschlossen und empfange damit problemlos die Temperatur von solch einem Aussensensor (SIGMA RMR 268).
Die Codierung der Temperatur ist ein bischen krank, aber falls Du Dich noch dafuer interessierst, wuerde ich es mal posten...

Gruss
Sascha

EinsamerUser
07.04.2005, 19:38
Hi Sascha,

klar interresiere ich mich immernoch dafür. Hab mir gerade erstmal ein paar GLCD's besorgt für den ersten Versuch und dann denke ich werde ich mich wieder mit der Zusatzaustattungen beschäftigen, immerhin muss ich ja wissen was ich da noch mit auf die PCB bringen muss. #-o

Na dann bin ich mal auf deinen Post gespannt! :-)

Bis dann
Stefan

07.04.2005, 20:43
Hi Stefan,

von Microcontrollern hab ich ehrlich gesagt keine Ahnung. Ich habe lediglich den Data Output Pin des Aurel mit dem RxD Pin einer seriellen Schnittstelle am PC verbunden... Das wars...

Der Aussensensor sendet mit etwa 9600 baud, also hab ich mir das hardwarenahe "rumgefriemel" geschenkt und lese direkt /dev/ttyS1 mit 9600 baud, 7 data bits und einem stopbit (also zusammen ein Byte) aus.
Meine Funksteckdosen senden uebrigens mit 2400 baud, koennte bei deinem Aussensensor also auch variieren (wie der Rest der Codierung :D).

Der Sensor sendet ausschliesslich zwei Bitfolgen:
00000000 = 00 (im folgenden mit . abgekuerzt)
01111000 = 78 (im folgenden mit | abgekuerzt)

Jede Uebertragung ist folgendermassen aufgebaut:
.................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. Ziffer1 Ziffer2 Ziffer3 Ziffer4 Vorzeichen Daten

mit folgender Bedeutung:
Ziffer1: ka
Ziffer2: Nachkommastelle
Ziffer3: 1. Stelle vorm Komma
Ziffer4: 2. Stelle vorm Komma -> 10er Potenz
Daten: ka

Dabei sind Ziffern wie folgt codiert:

0 = ....
1 = |.|..
2 = .|.|.
3 = |..|.
4 = ..|.|
5 = |.||.|
6 = .|..|
7 = |...|
8 = ...|.
9 = |.|.|.
Es gibt also unterschiedlich ¨lange¨ Ziffern.

Bei Ziffer 2 und 3 gibt es dann noch eine Besonderheit: Falls die vorige Ziffer 8 oder 9 war, aendert sich die Kodierund der Ziffer. Falls sie mit . beginnt wird dies durch | ersetzt, Falls sie mit | beginnt, faellt diese Stelle einfach weg.

Beim Vorzeichen entspricht ...| einem - und .... einem +.

Noch ein paar Beispiele:


-16.8 .................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. .|..| ...|. ||..| |.|.. ...| .||.|...|.||...|................
-16.7 .................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. .|..| |...| .|..| |.|.. ...| ..|....|.||..|.|.|..............
-16.6 .................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. .|..| .|..| .|..| |.|.. ...| .|.....|.|..|.|..|.|............
-16.5 .................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. .|..| |.||.| .|..| |.|.. ...| .......|.|.||....||.|..........
+ 9.9 .................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. .|.|. |.|.|. .|.|. |... .... |.|.|...|.....|...|.............
+10.6 .................||.||.||...|.|..|.|.|....|.|..|.| |.||.|.. .|.|. .|..| .... |.|.. .... .|...||.|.|.|.|.||.||.|..........


Leerzeichen dienen uebrigens nur der besseren Lesbarkeit!

Und noch die genauen Einstellungen der Schnittstelle:

sascha@server:~$ stty -F /dev/ttyS1 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>; eol = <undef>; eol2 = <undef>; start = <undef>; stop = <undef>; susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>;
flush = <undef>; min = 1; time = 0;
-parenb -parodd cs7 -hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke


Ich hoffe ich hab nix vergessen und es hilft Dir mehr, als es abschreckt...

Gruss
Sascha

07.04.2005, 20:54
Ups... die angesprochene Besonderheit gilt natuerlich fuer die Ziffern 3 und 4. Die Nachkommastelle ist immer gleich codiert. Sieht man aber auch in den Beispielen :D

EinsamerUser
07.04.2005, 22:36
mmmhhhh....sieht echt interessant aus! Hast du das alles durch probieren rausgefunden oder hattest du Quellen??

Also ich denke ich kann mir jetzt ein Bild machen was mich erwartet!! *g* ;-)

Leider kann ich mich erst Montag wieder hier rein lesen und das ganze mal ausführlich verdauen!!! *g* Fahre übers WE weg und heute ist es leider schon zu spät!

Trotzdem schonmal vielen Dank für die Info's!! =D>

Bis dann
Gruß Stefan

07.04.2005, 23:16
Moin!

Quellen hab ich dazu nirgends gefunden, vermutlich wollen die Hersteller auch gar nicht, dass man das Signal so einfach mitm Computer verarbeiten kann. Jedenfalls kosten profesionelle Loesungen, die sowas leisten richtig Geld.

Mir hat bei der Sache sehr geholfen, dass am Sender ne Leuchtdiode blinkt waehrend er sendet. Ansonsten empfaengt man viel Datenmuell und, zumindest hier, auch andere Funksignale. Wobei alle Signale offenbar eine 8 Bit lange Bitfolge fuer 0 und eine fuer 1 aufweisen. Und alle beginnen mit einem immer identischen, relativ langen Bitstring.

Bei dem Temperatursensor bin ich auf diese doch sehr ungewoehliche Codierung gestossen, weil ungerade Nachkommastellen immer mit | und gerade immer mit . beginnen. Der Rest war dann nen scharfes hinkucken.

Bei meinen Funksteckdosen z.B. ist die Codierung ganz herkoemmlich, also pc typisch... Wobei dort ein paar Checksummen benutzt werden, auf die man nicht sofort kommt und es natuerlich schwieriger ist etwas zu berechnen, was man senden moechte anstelle nur empfangene Daten auszuwerten...

Solange keine Verschluesselung verwendet wird, sollte man mit nem bischen Ahnung aber schon relativ schnell hinter die verwendeten Codierungen kommen...

Gruss
Sascha


PS: "-> 10er Potenz" ist vielleicht etwas verwirrend, gemeint ist einfach, dass pro Dezimalstelle eine Bitfolge uebertragen wird.

08.04.2005, 19:29
Ich hab noch meine beiden perl scripte, die beim rumprobieren entstanden sind, gefunden. Neben hexdump war perl nen nettes Werkzeug, wobei sicher auch andere Scriptsprachen geeignet waeren. Vielleicht hilfts Dir ja...

http://wwwcip.informatik.uni-erlangen.de/~sisawess/433mhz/433send.pl.html
http://wwwcip.informatik.uni-erlangen.de/~sisawess/433mhz/temperature.pl.html

Gruss
Sascha

26.04.2005, 22:29
Ich hab noch meine beiden perl scripte, die beim rumprobieren entstanden sind, gefunden. Neben hexdump war perl nen nettes Werkzeug, wobei sicher auch andere Scriptsprachen geeignet waeren. Vielleicht hilfts Dir ja...

http://wwwcip.informatik.uni-erlangen.de/~sisawess/433mhz/433send.pl.html
http://wwwcip.informatik.uni-erlangen.de/~sisawess/433mhz/temperature.pl.html

Gruss
SaschaHallo Sascha!

Hab ich dich jetzt richtig verstanden, dass du mit 433send.pl und dem entsprechenden Sendemodul von Conrad die Funksteckdosen schalten kannst?


MfG, Manuel

27.04.2005, 21:07
Japp! Ich schalte damit dieses Funksteckdosenset (gibts u.a. bei Conrad):

http://wwwcip.informatik.uni-erlangen.de/~sisawess/433mhz/RS200.jpg


Ich hab zwischen dem Eingang des TX-SAW433SZ und dem Ausgang der seriellen Schnittstelle allerdings noch nen "78L05, 100mA, voltage regulator" und ne "1N4148 diode" um die Pegel anzupassen. Das sind aber nur cent-Betraege...

Gruss
Sascha