RFM12-Funkbrücke
Aus BraLUG-Wiki
(→Software) |
(→RFM12-Module) |
||
Zeile 13: | Zeile 13: | ||
In der hier vorgestellten Funkbrücke kommen zwei RFM12-Module der [http://www.hoperf.com Firma Hoperf] zum Einsatz. Diese Module vereinen Sender und Empfänger in einer Baugruppe. Gesendet wird auf dem [http://de.wikipedia.org/wiki/ISM-Band ISM-Band] mit 433MHz. Die Beschaffung kann über die üblichen Elektronikversender zu einem halbwegs erträglichen Preis erfolgen. | In der hier vorgestellten Funkbrücke kommen zwei RFM12-Module der [http://www.hoperf.com Firma Hoperf] zum Einsatz. Diese Module vereinen Sender und Empfänger in einer Baugruppe. Gesendet wird auf dem [http://de.wikipedia.org/wiki/ISM-Band ISM-Band] mit 433MHz. Die Beschaffung kann über die üblichen Elektronikversender zu einem halbwegs erträglichen Preis erfolgen. | ||
− | Elektrische Verschaltung und programmtechnische Ansteuerung sind im [http://www.hoperf.com/upload/rf/RFM12.pdf Datenblatt] und in zahlreichen Projekten im Internet ausführlich beschrieben. Als Ausgangsbasis für meine Funk-Experimente war eine [http://www.mikrocontroller.net/topic/71682 längliche Diskussion zu diesem Thema] auf mikrocontroller.net. Man muss ja das Rad nicht immer neu erfinden... | + | Die Kommunikation mit dem RFM12-Modul erfolgt via [http://www.mikrocontroller.net/articles/Serial_Peripheral_Interface SPI]. Elektrische Verschaltung und programmtechnische Ansteuerung sind im [http://www.hoperf.com/upload/rf/RFM12.pdf Datenblatt] und in zahlreichen Projekten im Internet ausführlich beschrieben. Als Ausgangsbasis für meine Funk-Experimente war eine [http://www.mikrocontroller.net/topic/71682 längliche Diskussion zu diesem Thema] auf mikrocontroller.net. Man muss ja das Rad nicht immer neu erfinden... |
− | Eine nette Eigenschaft des RFM12-Modul vereinfacht die Steuerung des kontinuierlichen Programmablaufes des Senders: | + | Eine nette Eigenschaft des RFM12-Modul vereinfacht die Steuerung des kontinuierlichen Programmablaufes des Senders: das Modul kann per Kommando in Tiefschlaf versetzt werden, aus dem es, nach einer vorkonfigurierbaren Zeit, wieder allein aufwacht. Dieses "Aufwachen" wird auch an einem Ausgang als Impuls ausgegeben. Ist dieser Ausgang mit einem sinnvollen Eingang der, zur Steuerung verwendeten, MCU angeschlossen, ergeben sich ein paar interessante Möglichkeiten. Mein erstes Experiment mit RFM12/MCU war eine "Blinkschaltung", bei der die MCU das RFM12-Modul und danach sich selbst Schlafen geschickt hat. Nach Ablauf der Ruhezeit wachten beide Teile in umgekehrter Reihenfolge auf und das Spiel begann wieder von vorn... |
==Sender== | ==Sender== |
Version vom 4. Juni 2013, 08:05 Uhr
...kommt demnächst...
Inhaltsverzeichnis |
Motivation
Einige der Sensoren zur Aufzeichnung von Wetterdaten sind bei mir etwas ungünstig platziert. Die Sensoren müssten eigentlich an einem Ort angebracht werden, der draussen und nicht der direkten Sonneneinstarhlung ausgesetzt ist. Dieser Ort ist bei meinen örtlichen Gegebenheiten nur schwer mit Kabel erreichbar. Aber wozu gibt es Funkübertragung? Entsprechende Funkmodule sind leicht beschaffbar.
Weiterhin bestand dann gleich mal die Gelegenheit ein paar andere Sensorentypen für Helligkeit, Feuchtigkeit und Temperatur auszuprobieren. Sonst wird es ja langweilig...
Funkbrücke
RFM12-Module
In der hier vorgestellten Funkbrücke kommen zwei RFM12-Module der Firma Hoperf zum Einsatz. Diese Module vereinen Sender und Empfänger in einer Baugruppe. Gesendet wird auf dem ISM-Band mit 433MHz. Die Beschaffung kann über die üblichen Elektronikversender zu einem halbwegs erträglichen Preis erfolgen.
Die Kommunikation mit dem RFM12-Modul erfolgt via SPI. Elektrische Verschaltung und programmtechnische Ansteuerung sind im Datenblatt und in zahlreichen Projekten im Internet ausführlich beschrieben. Als Ausgangsbasis für meine Funk-Experimente war eine längliche Diskussion zu diesem Thema auf mikrocontroller.net. Man muss ja das Rad nicht immer neu erfinden...
Eine nette Eigenschaft des RFM12-Modul vereinfacht die Steuerung des kontinuierlichen Programmablaufes des Senders: das Modul kann per Kommando in Tiefschlaf versetzt werden, aus dem es, nach einer vorkonfigurierbaren Zeit, wieder allein aufwacht. Dieses "Aufwachen" wird auch an einem Ausgang als Impuls ausgegeben. Ist dieser Ausgang mit einem sinnvollen Eingang der, zur Steuerung verwendeten, MCU angeschlossen, ergeben sich ein paar interessante Möglichkeiten. Mein erstes Experiment mit RFM12/MCU war eine "Blinkschaltung", bei der die MCU das RFM12-Modul und danach sich selbst Schlafen geschickt hat. Nach Ablauf der Ruhezeit wachten beide Teile in umgekehrter Reihenfolge auf und das Spiel begann wieder von vorn...
Sender
Sensoren
TSL45315 (Helligkeit)
SHT15 (Temperatur/Luftfeuchtigkeit)
TMP36 (Temperatur)
Versorgungsspannung Sender ermitteln
Messwerte senden
... // Funkmessage... struct msg_t { // Offset uint16_t counter; // --> 0 uint16_t vcc; // --> 2 uint32_t brightness; // --> 4 uint16_t sht15_humidity; // --> 8 uint16_t sht15_temperature; // --> 10 uint16_t tmp36; // --> 12 } msg; ...
Empfänger
> i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- 12 13 -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- 28 -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- 49 -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- 77
> i2cdump -y 0 0x28 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: af 00 72 13 22 01 00 00 9d 16 05 09 d9 02 00 00 ?.r?"?..??????.. 10: 00 00 00 00 00 af af af af af af af af af af af .....??????????? ...
> tclsh rfm12.tcl Counter...........: 256 Vcc (Sender)......: 4.978V Helligkeit........: 484lux SHT15-Feuchtigkeit: 58.27% SHT15-Temperatur..: 21.99°C TMP36.............: 21.4°C ********************
Software
In dem hier verlinkten Softwarearchiv ist die Firmware des Senders und Empfängers der Funkbrücke sowie ein kleines Tcl-Script zur Abfrage der empfangenen Daten via I²C-Bus zu finden. Im Tcl-Script muss natürlich die Adresse des entsprechenden I²C-Bus angepasst werden. Der Zugriff auf den I²C-Bus erfolgt über eine selbstgeschriebene Tcl-Erweiterung, deren C-Quelltext ebenfalls im Softwarearchiv zu diesem Projekt enthalten ist und für die eingesetzte Zielplattform übersetzt werden muss.