RFM12B Breakout Board

Der RF-Transceiver RFM12B ist ein ideales Bauteil für die Realisierung von kostengünstigen drahtlosen Anwendungen über das ISM-Band. Das RFM12B-Modul kann sowohl als Sender wie auch als Empfänger betrieben werden. Im Elektronik-Handel sind diese Module für die Frequenzbereiche 433 Mhz und 868 Mhz verfügbar.

RFM12B

Bei meinen Experimenten mit den Attiny Sensor Nodes und dem RF Sensor Shield mit LCD kommt diese Komponente auch zum Einsatz.

Attiny Sensorboard Arduino RF Shield

Da diese RF-Module für die direkte Oberflächenmontage auf einer Leiterplatte ausgelegt sind, ist der Einsatz auf einem Steckbrett oder Protoshield etwas kompliziert da keine Anschlussbeine-oder Drähte vorhanden sind. Für erste Experimente habe ich mir dazu eigene Breakout Boards mittels Lochrasterplatine und Anschlusspins aufgebaut.

RFM12M Breakout Board Wireless Sensor Node

Der Aufbau auf diese DIY Breakout Boards ist aber weiterhin zeitaufwändig und erfordert eine feine Hand und saubere Lötstellen. Darum habe ich nun ein eigenes Breakout Board erstellt und bei iteadstudio produzieren lassen.

RFM12B Breakout Board Version 1.0

Version 1.01

Stromlaufplan:

RFM12B Breakout Board

Stückliste:

1 Leiterplatte RFM12B Breakout Board
2 Stifleiste 7 polig (ST1, ST2)
1 RFM12B

Mit den Stiftleisten angelötet kann das Breakout Board nun für Anwendungen auf dem Steckbrett oder auf einer Lochrasterplatine oder Protoshield eingesetzt werden.

Leiterplatte:
Download Fritzing-Projekt V1.0 (.fzz, 58 kB)
Download Fritzing-Projekt V1.01 (.fzz, 17 kB)

Hinweis:
Die Ansteuerung und Pegelwandler für 5V-Anwendungen sind auf dem Breakout Board nicht vorhanden uns müssen in der jeweiligen Schaltung aufgebaut werden.

RFM12B Breakout Board

Upate 21.06.2015 – Drahtlose Wetterstation mit RFM12B

Der Benutzer Urs hat mir Bilder von seiner entwickelten RFM12B-Anwendung mit einem Arduino Mega geschickt. Die Photos zeigen den Einsatz des RF Shields auf dem Mega sowie ein drahtloser Sensornode mit einem DHT22-Sensor.


15 Responses to “RFM12B Breakout Board”  

  1. 1 tamberg

    Schönes Projekt! Wie lange läuft so ein kleiner Knoten mit diesen Batterien? Grüsse, Thomas

  2. 2 arduino-praxis

    @tamberg
    Ich habe die Sensor Nodes seit Mitte November im Einsatz und die Batteriespannungen sind erst geringfügig gesunken. Ein paar Monate sollten diese also noch halten.

    Die Sensor Nodes senden alle 60 Sekungen Daten an die Basis.

    Gruss
    Thomas

  3. 3 DerVerzweiflungNahe

    Überall sieht man so tolle Projekte, Libraries gibt es zu Hauf zum Herunterladen. Aber nirgendwo wird beschrieben, wie man den RFM12B mit dem Arduino ans Laufen bekommt. Libraries sind fast überhaupt nicht kommentiert, das meiste funktioniert mit der neuesten Arduino-Software nicht…
    Wir hatten es mal funktionstüchtig, aber Windows benötigt ja auch ab und zu einen Reset und die Arduino-Software ist so nett, das Sketchbook standardmäßig auf C zu legen.
    Hätte vielleicht mal jemand Zeit und Lust, einem armen Deppen zu erklären, wie ich das Teil ans Arudino anschließen muss, welche Libraries ich benötige und wie zum Teufel man dann senden und empfangen kann?

  4. 4 arduino-praxis

    @DerVerzweiflungNahe
    Mit der Library JeeLib hat man relativ schnell eine Lösung aufgebaut.

    http://jeelabs.net/pub/docs/jeelib/index.html

    Die Library selbst kann man hier runterladen:
    https://github.com/jcw/jeelib

    Die JeeLib Library hat viele Beispiele auf welche man aufbauen kann und die Beispiele sind recht gut dokumentiert.

    Die Verbindung eines Arduino-Boards mit dem RFM12B Transceiver ist auf diesem Bild dargestellt.
    http://openenergymonitor.org/emon/sites/default/files/Cookbook_RFM12B_connections.png

    Für die Kommunikation sind mindestens 2 Arduino nötig, ein Sender und ein Empfänger.

    Ich hattte bisher keine Probleme mit den verschiedenen Arduino-Versionen. Von welcher Version sprichst du hier?

    Die Einstellung wo die Sketch-Dateien liegen kann in der Arduino-IDE unter Datei, Einstellungen in der Option „Sketchbook Speicherort“ definiert werden.

  5. 5 arduino-praxis

    Nachtrag:
    für die Inbetriebnahme verwendet man am besten das Beispiel „“:
    https://github.com/jcw/jeelib/tree/master/examples/RF12/RF12demo

    Hier ist recht ausführlich beschrieben wie man die Kommunikation aufbauen muss.

    Die in diesem Beispiel verlinke Beschreibung zeigt wie man den RFM12B mit dem ATmega verbinden muss.
    http://jeelabs.org/2009/02/10/rfm12b-library-for-arduino/

    Diese Schaltung ist aber nur möglich wenn die Betriebsspannung 3 oder 3.3V ist. Beim Einsatz eines Standard-Arduino, bspw. Arduino Uno, müssen einzelne Signalleitungen mit Widerständen (10k und 4,7k) auf 3.3V angepasst werden, siehe dazu Bild aus vorherigem Kommentar.

    Ich hoffe dass diese Erklärungen zu einem erfolgreichen Einstieg verhelfen.
    Viel Erfolg.

  6. 6 Martin

    Ich hab da mal ne Frage.
    Kennst du eine Library für dieses Funkmodul die mit dem Arduino Micro kompatibel ist?
    Der Atmega 32u4 benutzt nicht D10-D13 als SPI Schnittstelle, sondern zusaätzliche Pins auf der Platine (siehe hier: http://forum.arduino.cc/index.php?action=dlattach;topic=148734.0;attach=90679;image ; die obersten 2 pins links und rechts)

    Ich habe die Module bisher an einem A. UNO und einem Micro testen können, der Uno erkennt den rfm12b, der Micro nicht.
    Die Vermutung liegt also nahe das die Library nicht die SPI Ausgänge des Micros anspricht.

    Gibt es sonst vielleicht eine Möglichkeit innerhalb der Library (Ich verwende ebenfalls die von JeeLab) die Pins zu definieren?

    Ich werde mich nochmal auf Fehlersuche (BreakoutBoard des Funkmoduls) machen, sonst weiß ich nicht weiter.

    mfg

    ps. es ist mir wichtig den Micro zu verwenden da mir beim UNO D10-13 fehlen

  7. 7 arduino-praxis

    Hallo Martin

    Der RFM12B Transceiver wird via SPI-Kommunikation angesprochen. Beim Arduino Uno sind die nötigen Signale (SS, MOSI, MISO, SCK) an den Pins D10 bis D13.
    Der Arduino Micro hat als Microcontroller einen ATmega32U4. Die SPI-Schnittstelle ist bei diesem Board direkt auf die 2×3-polige Stiftleiste herausgeführt. Du kannst die SPI-Signale also direkt dort abgreifen.
    Für die Ansteuerung mit der Jeelib ist auch der ATmega32U4 vorgesehen. Die Pinkonfiguration ist in der Datei RF12.cpp abgelegt. Dieser Teil sieht wie folgt aus. Es werden also die digitalen Pins D14-D17 verwendet.


    #elif defined(__AVR_ATmega32U4__) //Arduino Leonardo

    #define RFM_IRQ 0 // PD0, INT0, Digital3
    #define SS_DDR DDRB
    #define SS_PORT PORTB
    #define SS_BIT 6 // Dig10, PB6

    #define SPI_SS 17 // PB0, pin 8, Digital17
    #define SPI_MISO 14 // PB3, pin 11, Digital14
    #define SPI_MOSI 16 // PB2, pin 10, Digital16
    #define SPI_SCK 15 // PB1, pin 9, Digital15

    Somit sollte eigentlich alles ohne Anpassungen in der Library lauffähig sein. Einfach den Arduino Micro als Board auswählen und die nötigen Signale am ICSP-Anschluss abgreifen.

    Gruss
    Thomas

  8. 8 Clemens

    Sind die beiden Fritzing-Platinen irgendwo als files erhältlich?

  9. 9 Clemens
  10. 10 arduino-praxis

    Hallo Clemens,

    einzelne Boards sind auch in meinem Tindie-Shop verfügbar.

    https://www.tindie.com/stores/arduinopraxis/

    Gruss
    Thomas

  11. 11 urs

    hallo
    nach einigem üben hab ich das attiny84 sensor board mit einem DHT22 und einem UNO mit dem rf12-shield als receiver zum laufen gebracht.
    den atttiny84 hab ich separat mit arduino 1.0.6 & jeelib & tiny kompilliert, beim UNO bin ich auf 1.6.4 geblieben.
    zusätzlich hab ich zum debuggen auf dem attiny84 ein RGBmodul mit eingebauten widerständen auf einer sockelleiste angebracht und mit pin6 & 10 des 84er verbunden. nicht funktioniert hat pin11 (wer weiss warum?). auch das sendeintervall hab ich auf 5 sekunden runter geschraubt. so blinkt er schön, wenn er sendet und ich weiss, dass dann was ankommen sollte.
    das eigentliche problem war dann die umstellung auf den arduino MEGA.
    der umbau mit der abzweigung vom shield 10..13 –> mega 50..53 sieht ziemlich abenteuerlich aus und wird noch etwas ansehnlicher gemacht werden.
    es gibt dazu bei jeelab einige threads, aber es hat nichts nicht wirklich geholfen. es hat zwar den rf12 initialisiert, aber keine daten angezeigt.
    dann ist mir aufgefallen, dass die LED13 auf dem mega dauernd brannte, obwohl ich sie nicht gesetzt hatte.
    das initialisieren der led13 und das setzen auf LOW brachte die lösung!
    der MEGA empfängt nun seit stunden ohne einen einzigen retransmit.
    der nächste challenge wird das hinzufügen des ethernet boards sein …

    @thomas: zwei fotos folgen per mail 🙂

  12. 12 urs

    … nun läufts auch mit dem ethernet-shield; momentan noch ohne SD card, da scheint der select noch nicht zu stimmen.

  13. 13 urs

    … und nun läuft alles zusammen

    Arduino MEGA, Arduino Ethernet shield mit SD card, RFM12B shield und der Aussensensor aus ATtiny84, RFM12B und DHT22.

    entwickelt wird nun an einem Aussensensor der zusätzlich einen Licht(vis & IR) und einen UV-Sensor enthält. Dazu wechsle ich evt. vom ATtiny84 zum 328er, da dieser das I2C direkt eingebaut hat.
    Nun also mal beides aufbauen und austesten.

  1. 1 RFM12B Breakout Board bei boxtec at Arduino Praxis
  2. 2 Blog J.Schweiss


Leave a Reply



Kategorien