Das RFM12 RFM12B RFM12BP Funkmodul

Mittlerweile erfüllen schon so einige AVR bestückte Kästchen in meiner Wohnung ihren Dienst. Einige regeln das Licht in Abhängigkeit einer Bewegung, des Lichteinfalls, der Uhrzeit und meiner Voreinstellung mit der IR-Fernbedienung. Einige messen die Innen und Ausstemperatur, demnächst auch den Luftdruck und die Feuchte, die Helligkeit oder werten die DCF77 Zeit aus. Bis auf die gemeinsamen IR-Befehlen sind die Schaltungen aber autark. Da das ganze System gewachsen ist, haben fast alle AVRs ihren eigenen DCF77 Empfänger. Der DCF77-Empfang ist aber in meinem Wohnzimmer fast unmöglich, ich habe dort zu viele Störungen. Selbst an günstigen Stellen ist nur wenige Minuten am Tag Empfang möglich.

Wenn allen Schaltungen alle Sensordaten zur Verfügung stehen, kann man Hardware sparen und es eröffnen sich bestimmt noch einige interesante Möglichkeiten.
Was solls, ich wollte einfach was mit Funk machen.

Pollin_Funk-AVR-Evaluations-Board

Für die ersten Versuche kaufte ich von Pollin zweimal das Funk-AVR-Evaluations-Board und ein paar RFM12 Funkmodule.

Das Board wird als Bausatz geliefert und kostet ca. 14 EUR.

Damit können ATmega16, ATmega32, ATmega8 und ATtiny2313 direkt via ISP-JTAG-Schnittstelle vom PC programmiert werden.
Es hat außerdem Kontaktflächen für die Funkmodule RFM01, RFM02 und RFM12, zwei LEDs und eine serieller Schnittstelle mit RS232 Pegel. Die Ports PA, PB, PC, PD sind auf einer 40-polige Pfostenleiste herausgeführt, hier kann man Leuchtdioden, Taster oder sonstige Peripherie anschließen.

Es werden alle Bauteile, bis auf den AVR mitgeliefert. Ich verwende auf dem Board meinen Lieblingscontroller, den Atmel Controller Mega32.


Pollin_Funk-AVR-Evaluations-Board Hier kann man das RFM12 Funkmodul sehen. Ich habe das Modul mit Stiftleisten RM 2.0 versehen, auf dem Pollin-Board sind die entsprechenden Buchsenleisten verlötet. Oberhalb des freien Steckplatzes ist der 10k Widerstand zu sehen, damit wird der FSK/DATA/nFFS Pin an VDD gelegt.
Der Optokoppler muß entfernt werden und stattdessen muß ein Jumper auf der Fototransistorseite (Pin 3 + 4) vorsehen werden. Alternativ bei bereits bestücktem Optokoppler, einfach die Pins 3 + 4 des Optokopplers mit einem Stück Draht o.ä. überbrücken.

Das Funkmodul arbeitet zwichen 2,2V und 5,4V und besitzt ein SPI Interface. Der 10MHz Quarz des Moduls kann auch für den µC benutzt werden. Es arbeitet im Halb Duplex Verfahren und die Frequenz läßt sich in weiten Grenzen einstellen.
Noch was zur Reichweite, im Freien kommt man trotz der nicht optimalen Drahtantenne auf 150 bis 200m. Innerhalb des Hauses klappt es aus dem Keller bis in die zweite Etage ohne Probleme. Wem das nicht reicht, der kann das RFM12BP verwenden, dann sprechen wir nicht mehr über Meter sondern über Kilometer.
   
RFM12 Hier die technischen Infos zum RFM12

• keine Abstimmung notwendig
• PLL und Zero-IF Technologie
• Schnelle PLL Abstimmzeit
• Hochauflösende PLL mit 2.5 KHz Schritten
• Hohe Datenrate (bis zu 115.2 kbps mit internen Demodulator,mit externen RC-Filter bis zu 256 kbps)
• Differential-Antennen-Eingang
• Automatische Antennenabstimmung
• Programmierbare TX-Frequenz-Abweichung (von 15 bis 240 KHz)
• Programmierbare Empfänger-Bandbreite (von 67 bis 400 kHz)
• Analoge und digitale Signalstärkeauswertung (ARSSI/DRSSI)
• AFC
• DQD
• Interne Datenfilterung und Clock-Recovery
• RX Synchron-Pattern Erkennung
• SPI-Schnittstelle
• Clock- und Reset-Signal Ausgang für externen Mikrokontroller
• 16 Bit RX Daten FIFO
• Zwei 8 Bit TX Daten Register
• 10MHz Quarz für PLL-Timing
• Wakeup Timer
• 2.2...5.4V- Betriebsspannung
• Niedriger Stromverbrauch
• Standby-Strom weniger als 0.3uA
   
RFM12-Modul Das RFM12 Funkmodul mit den erforderlichen Anschlüssen auf Stiftleisten geführt. In dieser Form kann ich den Transceiver mit meiner Universal-DMX-Platine verwenden.
Links ist die Antenne zu sehen, ein einfaches Stück Draht mit ca. 16 cm Länge reicht, den Rest macht die Antennenanpassung. Es ist auch möglich eine Chip-Antenne zu verwenden, sie ist nur 2x3 mm groß und kostet ca. 3 EUR. Die Reichweite sinkt aber gegenüber der Drahtantenne, dafür ist sie recht klein.
   
RFM12B-Modul Hier das RFM12B.

Alle Anschlüsse sind auf eine Stiftleiste im 2mm Raster ausgeführt. Das Modul gibt es für die Frequenzen 433/868 und 915MHz. Bei uns sind nur die Typen für 433MHz und 868MHz interessant.

Vorsicht bein Anschluß:
2.2V – 3.8V power supply steht im Datenblatt. Mit anderen Worten - dies ist ein 3,3V Modul. Das gilt sowohl für die Versorgungsspannung wie auch für die Dateneingänge. Bei der Kopplung mit einem 5V AVR muß ein "Level-Shifter" verwendet werden.

Das ist die Königsklasse unter den RFM12 Funkmodulen:

Das RFM12BP Funkmodul hat eine Ausgangsleistung von 500mW !!. Zu viel für Deutschland, aber zum Glück kann man per Software die Ausgangsleistung auf den hier zugelassenen Wert reduzieren. 500mW sind in der Praxis schon ein paar Kilometer an Reichweite.
Die Anschlüsse sind an beiden Seiten im lötfreundlichem 2mm Raster ausgeführt. Die Sendeenstufe arbeitet mit 0,5 - 13V, der Rest funktioniert mit 0,5 - 4V, es handelt sich also auch um ein 3,3V Modul.

RFM12BP-Modul RFM12BP-Modul unten
 
RFM12BP_Board  V1.2 RFM12BP_Board  V1.2
   
images/RFM12BP Board Eagle Oben das RFM12BP Basisboard. Links das Layout und der Schaltplan.

Alle zur Verbindung mit einem AVR erforderlichen Leitungen sind auf Stiftleisten im 2,54 mm Abstand ausgeführt.

Die Leitungen werden nach der untern stehenden Beschreibung mit dem SPI-Interface des ATMega32 verbunden. Je nach Programm werden nicht alle Leitungen benötigt. Ich habe die Signale ausgeführt, die auch das Evalutionsboard verdrahtet hat. Damit ist man für alle Fälle gerüstet.

Die 12V für die Sendeendstufe stellt ein LM7812 zur Verfügung, die Versorgungsspannung von 3,3V für den FSK-Chip übernimmt ein LM317. Die 1k8 und 3k3 Widerstände reduzieren die 5V vom AVR auf die erforderlichen 3,3V für die Eingänge, die Ausgänge sind über die 1k8 Widerstände geschützt. Für die Antenne habe ich eine Buchse direkt auf die Platine gelötet.
   
images/RFM12BP Board Eagle Schaltung

Pinbelegung RFM12BP Basisboard V1.2 nach ATMega32

1 GND
2 +UB > 14V (für Fullpower - geht auch mit 5-37V)
3 SDI PB5
4 SDO PB6
5 SCK PB7
6 nSEL PB4
7 FSK PB3 (nicht erforderlich)
8 nIRQ PD2 (nicht erforderlich)
9 DCLK PD3

   

So die Hardware steht - und was können wir damit anfangen?

Nun, Daten übertragen.

Das Modul hat keine interne Fehlerkorrektur, man muß also selbst dafür sorgen, dass die Daten auch korrekt ankommen. Benötigt wird daher ein einfaches, anpassbares Netzwerkprotokoll, welches ohne großen Ressourcenverbrauch auch in schon bestehen Mikrocontrollerapplikationen eingesetzt werden kann.

Hier bietet sich das S.N.A.P. Protokoll (Scaleable Node Address Protocol) an.
Ursprünglich wurde dieses Protokoll von der schwedischen Firma High Tech Horizont (www.hth.com) für deren Powerline Modem PLM-24 entwickelt.

Die Eigenschaften von S.N.A.P sind:

* Einfach zu erlernen, einzusetzten und zu implentieren
* Freies und offenes Netzwerkprotokoll
* Skalierbares Binärprotokoll mit geringen Overhead
* Sehr geringer Bedarf an Ressourcen bei der Implentierung
* Bis zu 16,7 Millionen adressierbarer Netzwerkknoten
* Bis zu 24 protokollspezifischer Flags
* ACK/NAK optional
* Kommandomode optional
* acht verschiedene Fehlerdetektionsmethoden (Checksum, CRC, FEC usw.)
* Einsatz in Master-/Slaver sowie in Peer-to-Peer-Netzwerken
* Unterstützt Broadcasting
* Unabhändig vom Übertragungsmedium
* Arbeitet in simplex, halb-, oder vollduplex Verbindungen
* Skalierbarer Header mit 3 bis 12 Byte
* Minimale Packetgröße ohne Fehlerdedektion ist drei Byte
* Minimale Packetgröße mit Fehlerdedektion ist vier Byte
* Anwenderspezifische Anzahl von Preamble Bytes (0-n)
* Arbeitet mit synchroner und asynchroner Übertragung
* Arbeitet mit der freien PLM-24 - TCP/IP Gateway Software von HTH

Mit einfachen Worten: S.N.A.P stellt sicher, das die empfangenen Daten auch den gesendeten Daten entsprechen.
Das hört sich jetzt kompliziert an, in der Praxis reicht es aber ein include File in den Programmcode einzubinden.

Im Internet gibt es zahlreiche Anwendungen und Beispielprogamme. ( nach RFM12 und SNAP suchen).
Die meisten Infos findet man bei www.comwebnet.de, wenn man wie ich in BASCOM-Basic programmiert. Dort kann man bei Problemen fragen und es wird "einem geholfen".
C Programmierer finden bei www.mikrocontroller.net viele Prgrammschnipsel.

Ich habe mit dem "Testsender" und "Testempfänger" aus dem Forum ein wenig rumgespielt. Dort findet man auch einen Funk-Fernauslöser für DSLR Cameras (hab ich auch getestet - funktioniert prima) oder eine selbstgebaute Wetterstation mit Aussensensoren die ihre Daten über ein RFM12 Funkmodul überträgt.

Der Vorteil des RFM12 ist: klein und kostet fast nichts
Der Nachteil: Man muß sich um das Protokoll kümmern, wenn man es verstanden hat ist es kein Problem.

Um fast nichts kümmern braucht man sich bei den unten vorstellten Funkmodulen XBEE oder bei dem Bluetooth-Modulen BTM-112 oder BTM-222.
Die Protokollierung ist dank SPP Firmware mit AT Befehlssatz im Modul fest eingebaut - einfach nur an den UART (serielle Schnittstelle) des ATMega anschließen und fertig.



Hersteller:

Hope Microelectronics


Download der Datenblätter:

wireless RF transceiver module - RFM12

wireless RF transceiver module - RFM12B

RF TRANSCEIVER MODULE - 500mW OUTPUT POWER - RFM12BP


Bezugsquelle für RFM12 Module:

LYNX-DEV.COM

Sogenannte Komunikationsmodule bekommt man nicht an jeder Ecke auch der Preis ist meist überzogen.
Sehr gute Erfahrungen habe ich mit den Produkten der Firma LYNX-DEV.COM gemacht.
Der Preis stimmt und die Ware wird schnell, bei günstigen Portokosten geliefert.
Herr Loska ist bei auftauchenden Fragen immer erreichbar.


weitere Links:  
   
XBEE Series 2
IEEE 802.15.4 ISM 2.4 GHz Modul
 
   
Rayson BT-112 Bluetooth Modul Class 2
Rayson BT-222 Bluetooth Modul Class 1

 
   
zurück zu AVR-Projekte