RFM70 USB-Dongle (2.4 GHz USB Funkbrücke)

Auch in der Baster-Gemeinde findet die 2.4 GHz Technik immer mehr Zuspruch.
Sicherlich auch deswegen, weil die RFM70 inzwischen sehr günstig geworden sind (3-4€) und auch bei vielen Online-Shops (Pollin, Octamex etc) zu bekommen sind.

Die kompakte Bauweise der Module schreit praktisch danach, in einem kleinem Gehäuse untergebracht zu werden. Aus diesem Grund habe ich eine kleine Platine entwickelt, um das RFM70 Modul per USB an einem PC anzuschließen. Das ganze passt dann in kleines USB-Gehäuse und sieht dann aus wie ein normaler USB-Stick.

Grundlegendes zum RFM70 USB-Dongle

Da ich inzwischen immer öfter mit dem RFM70 arbeite, und insbesondere in der Entwicklungsphase eine Möglichkeit brauche die Funktion der Implementierung zu testen, ist es sinnvoll eine Platine zu haben, die per UART oder USB an den PC angeschlossen werden kann.
Aus diesen Grund habe ich mir eine Platine entwickelt, welche mir diese Möglichkeit bietet. Und damit das ganze noch etwas “professioneller” aussieht, sollte das ganze auch noch in einem kleinem USB-Gehäuse untergebracht werden können. Zudem kann man die Platine dann auch später für Projekte verwenden, welche einen PC als Gegenstelle verwenden (z.B. Hausautomatisierung).
Das USB-Gehäuse war schnell gefunden. Es handelt sich hierbei um ein günstiges Kunststoff-Gehäuse der Firmware New Age Enclosures: Produktseite
Auf basis der mechanischen Maße habe ich dann eine passgenaue Platine entwickelt.

Als Basis dient eine Atmega88 welcher per UART mit dem Silabs CP2110 (HID USB to UART Bridge) kommuniziert. Obwohl der CP2110 NICHT als virtueller COM-Port arbeitet, ist es dennoch ein interessantes IC, da hierfür keine Treiber benötigt werden. Unter Windows erfolgt die Kommunikation über eine von Silabs mitgelieferte DLL, welche über eine einfache API-Schnittstelle die Verbindung zum CP2110 herstellt. Letztenendes ist das Arbeiten mit der DLL sogar fast einfacher als das Ansprechen des COM-Ports über die Windows API. Neben einem Beispielprogramm für C++ werden auch Beispiele für C#und VB beigelegt.
Um später ggf. dennoch einen vituellen COM-Port zu verwenden, hat Silabs ebenfalls vor kurzem einen (fast) pin-kompatiblen IC herausgebracht, der eben diese Funktionalität beinhaltet (CP2104) herausgebracht.

Zugegebenermaßen ist der CP21xx nicht so Bastlerfreundlich wie z.B. der FTDI FT232 oder Microchip MCP2200, da es diese ICs nur im QFN-24/28 Gehäuse gibt.
Dennoch hat der CP21xx einige Vorteile:

  • Der CP2110 bzw. CP2104 kostet weniger als 2€
  • Kein externer Quarz nötig (im Gegensatz zum MCP2200)
  • Interner 3.45V/100mA Spannungsregler
  • sehr kompakte Bauweise (4×4 mm)

Vorder- und Rückseite

Das RFM70 Modul

Das RFM70 Modul von HopeRF ist eine interessante Alternative zu den ebenfalls sehr beliebten RFM12 Modulen (433/868 MHz).
Im Gegensatz zu den RFM12 Modulen braucht man bei dem RFM70 eigentlich nichts mehr zu machen, als zu initialisieren und dann Daten zu senden und empfangen. Das RFM70 berechnet/prüft automatisch die Checksumme, sortiert defekte Pakte aus, sendet (auf Wunsch) automatisch nicht “acknowledged”-Pakete erneut uvm.
Neben den 83 “Hardware-Kanälen” ( 2400-2483 MHz) noch eine Adressierung auf Protokollebene. Jedes RFM70 Modul besitzt bis zu zwei (unterschiedliche) 3,4 oder 5 Byte-Adressen, wobei die zweite Adresse nochmals in 4 8-bit Datapipes unterteilt werden kann. Hierdurch lassen sich ohne allzu großen Softwareaufwand schon relativ komplexe Funknetzwerke aufbauen.

Die Datenrate kann entweder auf 1 Mbit/s oder 2 Mbit/s eingestellt werden. Inwieweit sich das auf die Reichweite auswirkt habe ich bisher noch nicht ausgiebig getestet, nach meiner bisherigen Erfahrung ist der Unterschied jedoch eher marginal.

Auf weitere Details des RFM70 möchte ich hier nicht eingehen, da eigentlich alles im Datenblatt erklärt wird.

Funktionsweise

Die Idee hinter dem RFM70 USB-Dongle ist, dass alle gesendeten/empfangenen Daten 1:1 an den USB/UART weitergereicht werden. Über den verbauten Taster, kann der USB-Dongle in den Konfigurationsmodus versetzt werden. Hier kann entweder über einfache Befehle Dinge wie Kanal, Baudrate, Adressen etc. eingestellt und im EEPROM abgelegt werden.
Die Implementierung des Konfigurationsterminals befindet sich momentan in der Entwicklung. Die Funktion der Hardware ist jedoch schon nachweislich vorhanden.

Schaltplan

Der Schaltplan stellt natürlich kein Geheimnis dar. Es werden bisher lediglich RX,TX sowie die entsprechenden LEDs des CP2110 verwendet. Der Taster und das RFM70 sind direkt am Atmega angeschlossen um so je nach Anwendung die Firmware entsprechend anzupassen

Das Layout

Das Layout wurde mit dem kostenlosen Programm DesignSpark PCB erstellt. Nachdem ich bereits viel mit der kostenlosen Version von Eagle gearbeitet habe, bin ich inzwischen auf DesignSpark PCB umgestiegen, und insgesamt sehr zufrieden damit.
Die Bedienung ist an vielen Stellen durchdachter und man hat keinerlei Einschränkungen bzgl. Platinengröße oder anzahl der Knoten/Pads. Zudem ist der Bauteil-Wizard Gold wert. Ein Design ist selbst dann schnell erstellt wenn man die Bauteilsymbole selbst erstellen muss (auch wenn bereits sehr viele Standardkomponenten mitgeliefert werden, ist der Umfang nicht so groß wie z.B. bei Eagle).

Software/Firmware

Die Firmware für den Donge befindet sich gerade in der Entwicklung und benötigt noch etwas Entwicklungszeit.
Sobald ich hier weiter gekommen bin wird es hier ein Update geben.

Um mit dem RFM70 USB-Dongle zu kommunizieren, habe ich ein kleines Terminal-Programm geschrieben. Aufgrund des CP2110 ICs kann hier nicht auf ein normales Terminal-Programm zurückgegriffen werden. Jedoch ist das Arbeiten mit der mitgelieferten Lib von Silabs sehr gut zu arbeiten. Die Programmierung gestaltet sich fast noch einfacher als das Arbeiten mit der COM-Schnittstelle unter Windows.

Sobald das Programm vorzeigbar ist wird es auch hierzu ein Update geben.

 

Dieser Beitrag wurde unter Projekte abgelegt und mit , , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

4 Antworten auf RFM70 USB-Dongle (2.4 GHz USB Funkbrücke)

  1. Alexander Arndt sagt:

    Hallo,

    tolles USB-Dongle, so etwas habe ich lange gesucht, wie ist denn aktuell Stand der Dinge (Software) ? Preis ?

    Sehr interessant wäre auch eine UART-Bridge mit RFM70, also Platine, z.B. mit Mega88 mit Bootloader, rfm70 und nur 5-pol. Anschluss +/-/TxD/Rxd/ Reset uC…
    ggf. die 2 Handshake Leitung rts und cts (oder so ähnlich).

    Würde mich mal über eine Rückmeldung freuen.

    Gruss

    A. Arndt

    • MasterFX sagt:

      Hallo Alex,

      die Firmware ist momentan ziemlich statisch. Daher die Parameter sind momentan hard-coded. Genau daran arbeite ich gerade, dass man die Parameter selbst per Terminal einstellen kann und in das EEPROM gespeichert werden.

      Das Terminal-Programm ist soweit eigentlich fertig. Noch ein paar Fehlerkorrekturen müssen gemacht werden.

      Voll bestückt (jedoch ohne RFM70) könnte ich dir das für 15€ anbieten (natürlich inkl. USB-Gehäuse)

      An einen RFM-> UART hatte ich auch schon gedacht, jedoch würde ich hier eher sagen, dass man rein auf TTL setzt, da man sowas dann ja eigentlich direkt an den µC anbinden will. Vielleicht mache ich sowas bei Gelegenheit nochmal.

  2. Volker sagt:

    Hallo,
    tolle Idee!!
    Wie siehts denn inzwischen mit HW+SW aus?
    Wenn Du hier was anbieten kannst, sag bitte Bescheid. Danke.
    Gruß
    Volker

  3. Oliver sagt:

    Hallo,

    das CP2110-Terminalprogramm sieht gut aus, kann man das bekommen?

    Gruß,

    Oliver

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*


zwei × 8 =

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>