Bei Pearl gibt es momentan einen Außensensor von FreeTec (PE5487-675) für die Wetterstation PE-4910 für knappe 5 Euro. Ich will mir damit eine Übersicht über die Temperatur und die Feuchtigkeit in verschiedenen Räumen (besonders Bad, Küche und Keller) verschaffen. Dazu wird in jedem Raum ein Sensor platziert (10 Stück in Summe), die Daten von einem uController eingefangen und per PC in eine Datenbank geschrieben. Hier die Daten: Der Sensor sendet auf 433MHz. Transmitter-Modul: EM-TX433-01 Ver1.0 2009-06-05 die Daten in der Luft: Pulsbreite: ca. 500us konstant Pulsabstand: 1.8ms / 3.92ms Die Information steckt also in der Pause (1.8ms für 0 und 3.9ms für high) Ein Telegramm besteht aus 36 Bit. z.B. 5 0 9 B 0 E F 3 2 0101 0000 1001 11.01 | 0000.1110.1111 0011.0010 ffff rrrr rrrr rr.cc f = fix, r = random, c = channel 23.9°C (0x0EF) 50% (0x32) CH2 Es wird das gleiche Telegramm mehrfach gesendet. Dabei wird zwischen den einzelnen Telegramen eine Pause von ca.9ms gelassen. Telegramm Aufbau: Preamble H-L-H-L-H (jeweils 500us) 4 Bit fix 0x05 10 Bit random (nach Einschalten festgelegt) 2 Bit Kanal Nummer (0-2) 12 Bit Themperatur *10 (signed) 8 Bit Feuchte Die ersten 4 Bit scheinen fest auf 5 (0101) zu stehen. Die folgenden 10 Bit werden anscheinend zufällig nach dem Einschalten (Einlegen der Batterien) gesetzt und bleiben konstant solange das Gerät eingeschaltet bleibt. Auf der Rückseite unter dem Batteriedeckel befindet sich ein Schiebeschalter mit dem sich Kanal 1-3 einstellen läßt. Die Einstellung ist in den folgenden beiden Bits dargestellt (Kanalnummer -1). Danach kommen 12 Bit für die Temperatur *10 (wegen der Kommastelle). Also für 23.8°C werden also 0xee (238) übertragen. Der Wert ist vorzeichenbehaftet (negative Temperaturen). Die letzen 8 Bit geben die Feuchte an. Auf der Rückseite befinden sich auch noch 2 Taster. Einer zum Senden, ein zweiter zum Umstellen der Anzeige zwischen Fahrenheit und Grad Celsius. Die Einstellung der Anzeige hat aber keinen Einfluß auf die gesendeten Daten. Hier wird die Temperatur immer in °C gesendet. Hat jemand schonmal so ein Projekt aufgesetzt ? Ich bin jetzt auf der Suche nach einem passenden RF-Empfängermodul. Walter.
mike schrieb: > Siehe http://www.mikrocontroller.net/articles/Bildformate Er hat doch einen Screenshot gemacht... Fluessigkristall-Screen. Einmal von vorne und einmal von hinten. Also kein Grund zu meckern... ;) @Walter: Wie hast Du denn das Protokoll ausgelesen? Oder hast Du es irgendwo dokumentiert gefunden? Volker
Hi Volker, ich hab am TX Pin (zwischen Hauptplatine und TX-Modul) mitgelesen. Der Rest ergibt sich daraus. Also: nein, leider keine Doku - nur "rumprobiert". Walter.
Walter Freywald schrieb: > Hi Volker, > > ich hab am TX Pin (zwischen Hauptplatine und TX-Modul) mitgelesen. > [...] Also funktioniert das Ding zumindest schon mal als "wired" Sensor. Ist ja auch nett zu wissen. ;) Hast Du mal einen Link auf das Ding bei Pearl? Volker
Die Bestellnummer von dem Ding steht doch im Betreff: PE-5847-675 http://www.pearl.de/a-PE5487-5409.shtml
Ja, der 433MHz Sender ist zum Glück seperat, da läßt sich leicht mitlesen ;-) Ich hab mittlerweile auch die Funkstrecke am Laufen. Klappt soweit prima. Die Teile senden ziemlich genau alle 34-36 Sekunden. Bei 4 Stück ist das ja weiter kein Problem. Wenn es dann aber 10 oder 15 Stück werden, dann wirds schon recht eng. Mal sehen Walter.
kannst ja mal Schaltung + Soft hier reinstellen, hätte auch Interesse das mit meiner Uhr zu empfangen. Viele Grüße, egberto
Thx, Rufus. Walter Freywald schrieb: > [...] Bei 4 Stück ist das ja weiter kein Problem. Wenn es dann aber > 10 oder 15 Stück werden, dann wirds schon recht eng. Mal sehen Man koennte dann ja sensorseitig das Senden immer fuer ein paar Minuten unterbinden... Volker
Hallo egberto, eine wirklich Schaltung gibt es nicht. Ich habe ein "standart" 433MHz AM Modul aus einer alten Wetterstation ausgebaut (Anschlüsse: Vcc,GND und Data) und an einen Mikrocontroller (uC) angeschlossen. Die serielle Schnittstelle des uC hab ich mit ein Handy Datenkabel (ist glaube ich ein PL2303 drin) verbunden. Das ist alles. Ich habe mal den wichtigsten Code angehängt. Es werden 2 8-Bit Timer verwendet: Timer 1: 20us Zeitbasis für das Ausmessen der RF Signale von 433MHz-Modul Timer 2: löst alle 10ms einen Interrupt aus in dem ein Sekundensignal für die Ausgabe und das Timeout (Alterung) erzeugt wird Desweiteren ein Interrupt Pin mit zugehöriger Interrupt Service Routine (ISR). Hier findet die eigentliche Auswertung der RF Signale statt. Dabei werden sowohl high Phase als auch Low Phase auf gültige Längen überprüft. Es werden 36 Bit empfangen und in einem Byte und einem Langwort abgelegt und ein Signal gesetzt, dass neue Daten da sind. Für die weitere Verarbeitung sorgt dann die Hauptschleife. Die Daten von den verschiedenen Sensoren werden in einem Strukturfeld gespeichert (stSens), damit man die nicht immer wieder aus den 36 Bit Rohdaten ableiten muss. Die Struktur ist in em3330.h definiert. In der Struktur ist auch ein Timeout und ein Delta vorhanden. Das Timeout dient dazu, dass Sensoren, die nicht mehr senden (weil warum auch immer - wahrscheinlich hat sie jemand gestohlen...) automatisch aus der Liste entfernt werden. Soll eine neuer Datensatz gespeichert werden wird zuerst nach der ID in der List gesucht. Ist die ID vorhanden, so werden die Daten an dieser Stelle aktualisiert. Ist er nicht vorhanden und die List nicht voll, wird ein neuer Eintrag erstellt. In beiden Fällen wird der Timeoutzäher zurückgesetzt. Der Delta Wert wird gibt für jeden Eintrag die zeitliche Differenz an. Man kann daran sehen, vor wieviel Sekunden das letzte Mal gesendet wurde. In der Main Schleife habe ich vorgesehen, dass man die Daten CSV oder Human Readable (HR) ausgibt. Ersteres ist sicherlich sinnvoll wenn man die Daten am PC weiter verarbeiten will. Bei HR wird die ID ind ID und Channel aufgeteilt. Channel sind die untersten beiden Bits der Original ID und geben die Schalterstellung auf der Sender-Rückseite wieder. In printser.c sind ein paar Routinen für die serielle Ausgabe. Hier muß eigentlich nur das Funktion "uart_sendbyte(xxx)" angepasst werden. Der uC den ich verwende ist ein R8C35 von Renesas (habe ich hier noch ein Starterkit aus früheren Projekten rumfliegen). Ist ein 16 Bit Controller mit 20MHz onchip Oszillator, ausreichend Speicher, Timer, etc. Sollte aber auch ohne Probleme auf anderen uCs laufen. Walter.
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.