Projekt RDS
RFM - Datenfunk - System
Datenfunk zur drahtlosen Erfassung von Sensordaten auf dem ISM-Band
Nachdem die Garage mal die ganze Nacht offen stand und zudem
auch noch das Licht brannte, dachte ich mir: es gibt 2 Wege das in Zukunft zu
vermeiden.
1) besser aufpassen (zu einfach und unspektakulär)
2) ein paar Schalter und Lichtsensoren installieren und vom Haus aus bescheid
wissen (klingt eher nach einer Bastler-Herausforderung...)
Gedacht war zuerst, eine Leitung zu legen, und am besten gleich das ganze Haus damit zu verstricken. Die Leitung liegt heute noch, ist aber nie verwendet worden. In der Zwischenzeit bin ich mit den RFM-Modulen von HopeRF in Berührung gekommen und habe schon andere ernsthafte Funkapplikationen damit erstellt.
Dann ist so langsam diese Idee geboren worden:
Von einer Basis aus mit einem LCD-Display die Zustände diverser Sensoren
erfassen, die an verteilten Satelliten hängen. Das können Sensoren aller
möglicher Art sein, entscheidend ist, daß das Spannungssignal vom ADC des
Controllers verarbeitet werden kann, was im allgemeinen kein Problem ist.
Die Satelliten (so hab ich die Dinger einfach irgendwann getauft, andere mögen
das als Master und Slaves oder Server bezeichnen) sollten primär in der
Reichweite der Basis sein. Für spätere Erweiterungen ist gedacht, Datenpakete
über mehrere Satelliten hinweg weiterzurouten um einfach größere Distanzen zu
überbrücken.
Noch habe ich keine Erfahrungen gemacht, wie weit ich im Haus mit einem "Hop"
komme.
Und hier die Geschichte mit Bildern:
01.02.09:
erstmal das LCD-Display (das ist ein WINTEK
WD-C2704M-1HNN von Pollin-Electronic)
mit dem ATMega16 verheiraten ( --> siehe "LCD-Test" in
der Doku)
08.03.09:
V1
Jetzt werden 8 Kanäle des gleichen Satelliten der Reihe nach
abgefragt und die ADC-Werte ausgegeben.
Das Bild ist etwas unübersichtlich, ich weiß, aber der Aufbau
ist ja nur vorübergehend...(großes Bild)
Jetzt wird es Zeit, daß der Satellit abhebt und das Fliegen
lernt.
16.03.09:
V2
AIRBORNE!!!
Der Satellit mit dem ATTiny26 ist auf das Mini-Steckbrett
verfrachtet und funkt wie er soll einen NTC-Wert
und einen Poti-Wert (und 5 leere ADC-Pins und einen Pseudo-Fehler).
Allerdings gabs dabei noch ein bißchen Ärger: komischerweise
hat sich erst beim Abkoppeln des Satelliten
gezeigt, daß eine Warteschleife in der Empfangsroutine zu lang war und
statt 8 öfters mal 9 Bytes empfangen
wurden. Damit war das Paket ungültig und der Empfang war scheinbar gestört...
Der Li-Ionen-Akku (ganze 190mAh!) ist kaum größer als das
RFM-Modul und hält rechnerisch mit
Erfahrungswerten bei 8 Wachphasen pro Sekunde ca. 1 Monat.
Zur Reichweite: mit der gefaltenen Basis-Antenne (Grundlänge
17cm=λ/4) und der verkrümpfelten
Sat-Antenne (um etwas "Performance" herauszunehmen) funkt
sich's noch recht zuverlässig über 10m quer
durch den Stahlbeton des
Hauses.
(großes Bild)
13.04.09:
V3
Fast ein Monat später: es hat sich viel verändert - aber fast
nur in der Software:
- Sowohl Sat als auch Basis laufen sende- und empfangsmäßig
über eine Art State-Machine
- Die Initialisierung der RFM-Module ist für Senden und Empfangen
vereinfacht
- Der Satellit schläft, wenn er kein Funksignal sieht (I(sleep)
= 37,5µA bei 8 Wachphasen pro Sek.)
- Es werden Temperaturen (Ch00) und Spannungen (Ch06) als lesbare Angaben
dargestellt (siehe Bild)
- Die Batteriespannung des Satelliten wird über einen eigenen
Befehl abgefragt, das RFM-Modul mißt die Spannung
- Eine NTC-Kennlinie (1,5k bei 25°C) wurde aufgenommen, eine Tabelle
erstellt (.xls) und eine Auswerte-Funktion
geschrieben
- Auf Ch01 hat sich spaßeshalber mal noch ein LDR dazugesellt
(unten rechts auf dem Sat)
- Der Reichweiten-Test hat ergeben: bei "normalen" Antennen
funkt sich's spielend durch 3 Betonwände bis in die Garage...
Ich frage mich, ob ich langsam den Boden im Faß sehe, oder ob das Faß jetzt erst richtig bodenlos wird...!!!
20.09.09:
V4
... das Faß IST bodenlos. Noch einige Monate später, mit
wieder hauptsächlich viel Arbeit an der Software,
ist wenigstens ein Sat mal auf Lochraster aufgebaut:
- 9 Schraubklemmen (unten rechts), für jeden Kanal eine,
jeweils darüber drei Steckpins: Referenz, Masse und nochmal
der Kanal, um Pull-up oder Pull-down Widerstände auf den
Kanal legen zu können (wie z.B. bei Kanal 0)
- links daneben zwei große Schraubklemmen mit Masse und Referenzspannung für Sensoren
- darüber das RFM-Tranceiver-Modul
- zwischen den Steckpins und dem Controller der
Programmier-Stecker und rechts die
Spannungsversorgung (3 Pins wg. Verpolschutz)
- links neben dem Controller der Schalttransistor für die
Referenz
- oben eine Relaisstufe, die mit dem gelb-schwarzen Draht an
den Kanal 4 gesteckt ist
- die Antenne (gelb-weiß) ist bewußt so lang gelassen, da der
Sat im Zählerkasten hängt und die Antenne aus dem
(fast) faradayschen Käfig hängen soll.
So hängt der Sat dann in einem freien Fach im
Zählerkasten. Der einzellige LiO-Akku (hier ein 1,55Ah-Akku)
klemmt hinter der Platine.
Oben drüber die Klingenschaltung. Das Relais vom Sat ist
daran angeschlossen und ermöglicht jetzt funkgesteuerte
Türöffnung ;-).
Außerdem mißt der Sat die Temperatur im Raum und den Zustand
(offen/zu) der Haustür. Da ist im Türöffner bereits
ein Schaltkontakt eingebaut gewesen.
Das ist die "Bedienoberfläche" auf dem LCD im
Normalbetrieb, also "Datenfunk". In dieser Version gibt es die
Hauptfunktionen "Datenfunk", was beim Einschalten aktiv ist,
"Einstellen" und "Sonstiges". Bei Sonstiges ist noch nichts
hinterlegt. Die beiden spitzen Klammern zeigen, welcher
Menüpunkt gerade mit dem Encoder verstellbar ist. Bei Knopf-
druck auf den Encoder springt die Klammer auf den nächsten
Menüpunkt.
In der 2. Zeile wird der Satellit eingestellt, mit dem
kommuniziert werden soll (die Namen sind momentan noch fest
vergeben, soll später logischerweise einstellbar sein), und
der anzusprechende Kanal (nur als Nummer von 0 bis 8).
Die 3. Zeile gibt dann den Wert aus, je nachdem welchen Typs
der Kanal ist, bzw. auch die Ein- und Ausschaltmöglichkeit
beim Typ "Relais".
Die 4. Zeile zeigt schließlich noch Status- und
Fehlermeldungen und auch die aktuelle Versorgungsspannung des gewählten
Satelliten.
Hier ein Beispiel für eine implementierte
Funktion: Das Anmelden eines neuen Sat, also die Vergabe einer neuen ID.
Hinter dem Bild habe ich ein kurzes Video versteckt, das die
Anmeldung demonstriert.
Zur Software auf der Basis:
- Jetzt gibt es ein Menü-System mit einem Encoder zur Navigation im Menü. Die
beiden wesentlichen Menüpunkte sind:
# die Vergabe von IDs für "neue" Satelliten und
# die Abfrage von Datenkanälen. Dabei kann man den
entsprechenden Satelliten auswählen, sowie den Kanal.
- Der Typ eines Kanals kann aus vorgefertigten Typen ausgewählt werden, dadurch
ist auch die Wertberechnung und Darstellung festgelegt.
Ansonsten wird der ADC-Wert sozusagen als "Rohwert" angezeigt. Als Typen stehen
diverse Meßwerttypen (derzeit eingebaut:
Temperatur, Spannung, Helligkeit, Hall-Sensor,
Kontaktstellung) und auch ein Ausgang (Relais) zur
Verfügung.
- Alle Satelliten-IDs und deren Kanäle (bzw. Kanaltypen) sind im EEPROM der Basis gespeichert.
Software zur Zuordnung bzw. Einrichtung
der Typen zu Kanälen fehlt noch.
- Die Batteriespannung der Satelliten wird überwacht.
- Ein "Fehlerhandler" zeigt Status und Fehler bei der Kommunikation an.
Weitere
Einzelheiten können auch noch in der Doku und Spec nachgelesen werden.
Wie geht's weiter?
- Viiieeeel Software zum Konfigurieren
- Vielleicht ein I2C-EEPROM für die vielen Konfigurationsdaten (z.B.
Satellitennamen)
- Fehleranzeige erst nach 3 mißglückten Sendeversuchen
- Die Basis mal in eine Schachtel packen
- Nicht gleich so viel vornehmen, sonst erreicht man seine selbstgesteckten
Ziele NIE!
Hier
gehts zur kompletten Doku.
Die Doku ist nicht sooo 100%ig toll und supergenau, wie sie jeder gerne hätte -
mangels Zeit - aber ich hoffe, daß man stellenweise mit ein bißchen Phantasie
und gesundem Menschenverstand weiterkommt.
Ansonsten gibt's die Möglichkeit, mal über E-Mail nachzufragen bei -->Micha Ätt
Magiclamp Pkt DE<--