AVR RFM12

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Schaltungen und Software für AVR und das Funkmodul RFM12.

SVN

svn://mikrocontroller.net/rfm12 (siehe auch: http://www.mikrocontroller.net/svn/list)


Software

Treiber

Firmware v1.0.0 von Benedikt K.

Firmware v2.0.1 von Jürgen Eckert


Funktionalität
Beschreibung Software
1. Stufe: Die Daten von der seriellen Schnittstelle werden über die Funkstrecke auf die serielle Schnittstelle der anderen Seite übertragen. (Wir freuen uns über jedes Byte das ankommt) Claude Schwarz, Benedikt K. oder Manuel Stahl
2. Stufe: Es findet eine Fehlererkennung (z. B. mit CRC-Summen) statt. Fehlerhafte Daten werden erneut angefordert. Dadurch gehen auf der Funkstrecke keine Daten verloren und es werden keine Daten verfälscht. Benedikt K.
3. Stufe: Die Datenübertragung wird individualisiert. Dadurch können zwei Funkstrecken, die im gleichen Empfangsbereich liegen nebeneinander arbeiten, ohne sich zu beeinträchtigen. RFM12_Protokoll_Stack
4. Stufe: Die Datenübertragung wird verschlüsselt und damit abhörsicher. ethersex OpenVPN
5. Stufe: Neben den Daten der seriellen Schnittstelle werden auch Änderungen der Statusleitungen übertragen. Damit erhält man eine "RS232-Verlängerung" über eine Funkstrecke, die fehlerfrei arbeitet und zu einer Drahtverbindung weitestgehend kompatibel ist.

RS232 <-> RFM12

TODO

USB <-> RFM12

Mit V-USB lässt sich ein USB-Slave in Software emulieren.

  • AVR-CDC läuft mit Anpassung der USB-Pins. (Zumindest unter Windows an einem USB2.0-Port)

Adapter für USBprog:

  • Funktionierender Code liegt im oben genannten SVN
  • Implementiert die USB-CDC-Klasse (kein Treiber nötig)
  • Sicherung der Übertragung durch Hamming-Code
  • Work in progress... (Manuel Stahl)

Alternative rfm12lib

rfm12lib von das-labor.org

Features

  • Ein einfaches Paketformat, bestehend aus:
    • Einem 8-bit (0..255) Pakettyp- oder Adress-feld
    • Paketlänge bis zu 255 Bytes
    • Eine simple Header Checksumme
  • Interrupt oder Polling basierte Datenübertragung
  • Verschiedene Frequenzbänder, abhängig von dem verwendeten Modul (433, 868 und 915 MHz)
  • Collision avoidance (carrier sense)
  • Synchronisierungsfunktion beim Datenempfang
  • Hardware oder software SPI
  • Nur-Sende-Modus, zum verkleinern der binaries
  • Grundlegende ASK (amplitude shift keying) empfangs und sende Funktionalität (Für Funksteckdosen aus dem Baumarkt und ähnlichem)
  • Low-battery detector (funktion des RFM12)
  • Low-power Wakeup timer (funktion des RFM12)

Download



Hardware

Basismodul V1.0

Prozessor

ATmega8 TQFP32 (kompatibel ATmega48, ATmega88, ATmega168)

Schnittstellen

  • RS232
  • I²C:
  • USB
  • GPIO

Platine

ATmega48 + USB 2-lagig top 2-lagig bottom Photo

Bauteile:

Größe: SMD 0603

  • R1, R2: 68R (nur USB)
  • R3, R4: 10k
  • R5: 1k5 (nur USB)
  • C1, C2: 22pF
  • C3 - C9: 100nF
  • Q1: 12Mhz (nur USB)
  • D1, D2: beliebig, Minimelf
  • IC3: MAX3221CUE

Kosten:

  • MiniUSB SMD: 1,25€
  • HF-Buchse MMCX: 4,25€
  • ATmega48: 2,85€
  • MAX3221CUE: 1,10€
  • Quarz 12Mhz 30ppm: 1,19€
  • Kleinkram: < 1,10€

Bugs / Erweiterungen:

  • Der 1,5k Widerstand muss direkt an den VCC-Pin angelötet werden (Pad ist nicht verbunden)
  • Beim Fertigen wurde das Polygon, welches das VCC-Signal durch die eine Ecke des ATmega48 leitet, unterbrochen. Hier hilft nur eine Drahtbrücke.
  • Unter den RFM12 und unter den Quarz am Besten Isolierband kleben!
  • Beim Programmieren sollte der SEL des RFM12 (J1 der zweite Pin vom RS232 aus) auf VCC gelegt werden

Board (Eagle):

AVR RFM12 Board top bestuecken.png Board bottom bestuecken.png


Flashcraft Funkboard

Eine Funklösung mit dem RFM12 bietet das Open Source Flashcraft Funkboard von Florian Scherb.

Flashcraft funkboard pic.jpg

Das Projekt enthält

  • Funkboard Platine
  • Code für AVR
  • PC Terminalprogramm
  • Dokumentation


Überblick:

  1. Über 60 Seiten starke Dokumentation
  2. PC Terminalprogramm zum Testen und Konfigurieren
  3. Abmessungen: 32x34mm, Montage durch 2 Stiftleisten im 2,54mm Raster
  4. ATmega32 übernimmt komplette Ansteuerung
  5. 3 Schnittstellen sind vorgesehen: I2C, SPI, UART (derzeit nur UART)
  6. SMA-Antennenanschluss
  7. Stromaufnahme: 40mA im normalen Betrieb, 2 Schlafmodi mit Stromverbrauch bis min. 25µA!
  8. Betriebsspannungsbereich von 3,2 - 5,4V (mit ATmega32L)
  9. 5V oder 3V Spannungsregler onBoard! Direkter Batteriebetrieb möglich; Kann externe Schaltung versorgen!
  10. uvm.

Außerdem:

  1. Unterstützt Funknetzwerk mit bis zu 125 Modulen!
  2. Kontrolle über fast alle Konfigurationen, direkt im Betrieb änderbar, kein Umprogrammieren notwendig!
  3. Zahlreiche Sicherheitsfeatures wie Acknowledge, CRCs,...
  4. RS232-Treiberbaustein MAX3221 onBoard. Damit TTL- und RS232-UART möglich
  5. Clock Takt am Funkboard abgreifbar, z. B. für externen Mikrocontroller
  6. Totzeiten ca. 1,5 Millisekunden beim Wechsel zwischen Sende- und Empfangsbetrieb
  7. uvm.


Schaltpläne, Board-Layout, Sourcecodes und andere Files sind auf der Homepage des Funkboard-Projekts verfügbar.
Die Seite ist schon längere Zeit offline. Die Dateien inkl. Dokumentation gibt es weiterhin hier: [1]

Diskussionen zum Projekt gibt es im Forums-Thread auf µc.net und im Thread auf Roboternetz.de vom Erbauer.


USBprogRFM12

Da der USBprog genau das SPI-Interface des ATmega32 zur Verfügung stellt, eignet er sich perfekt als USB-RFM12-Adapter.

USBprogRFM12 USBprogRFM12

USBprogRFM12


RF SOAP

Hauptartikel: RF SOAP

Kompakte Leiterplatte mit RFM12, ATmega88, FT232 für USB und LiPo Akku

RealSoap.jpg PovTop.jpg


RN-AVR Universal

Universelle Leiterplatte mit RFM12 Modulplatz. Da die Platine auch zerteilbar ist, lassen sich sowohl kompakte Header-Boards, Module als auch große Europaformat Projekte damit schnell erstellen. Die Platine arbeitet mit 3,3V Spannungsregler und dem stromsparendem AVR Mega 644, ist dadurch ideal für Batteriebetrieb. Bezugsquelle

AVR-Universal_aufgebaut_390.jpg

AVR-Universal_Huckepack_390.jpg

RN-MikroFunk

Ein besonders kleines ATMega328 Controllerboard mit dem neueren RFM12b auf der Unterseite.Der Schwerpunkt dieses kleinen Contollerboards ist die Entwicklung von Fernsteuerungen, funkgesteuerten Aktoren, Sensoren beispielsweise für Robotik, Alarmanlagen, Haussteuerungen und ähnliche Aufgaben. Durch die sehr kompakte Größe von nur 29x45mm (kleiner als eine Streichholzschachtel) kann das Board vielfältig eingesetzt werden, es passt fast überall rein. Bei der Entwicklung wurde besonders darauf geachtet das das Board einen sehr geringen Strombedarf hat. Dadurch ergeben sich mit 2 bis 3 Mignonzellen, je nach Anwendung und Einsatz der Sleepmodis, theoretisch Batterielaufzeiten bis zu mehren Jahren. Für dieses Board wird auch eine Platine und Bausatz angeboten. Eien umfangreiche Projektbeschreibung mit Schaltplan und vielen Beispielprogrammen (Bascom) als PDF-Verfügbar

Projektbeschreibung / Schaltplan / Bestückungsplan

Ein paar Fotos

RN_MikroFunk_2361_390px.jpg

RN_MikroFunk_2382_390px.jpg

RN_MikroFunk_2383_390.jpg

rnmikrofunk2_390.jpg

Die Features und ein paar Daten

  • leistungsfähiger Mikrocontroller ATMEGA 328P 8-Bit Mikrocontroller, Technologie, AVR RISC Architektur , Gehäuse TQFP-32, 32kB Flash / 2kB Ram / Eeprom 1kB / 6 PWM / 3 Timer / Uart / I2C / SPI
  • 1WIRE-Bus
  • 8 Mhz Resonator für stabilen Takt
  • frei programmierbar über Standard 6poligen ISP Anschluss
  • kompakte Maße 45x29mm / passt in eine Streichholzschachtel !
  • Batteriespannung von 3,4 bis 12 V – bei Überbrückung von SJ1 auch ab mit * niedrigen Spannungen von 2,5V bis 3,5V betreibbar beispielsweise als Batterie (Akku) geeignet: min. 2 Mignon Zellen oder 9V Block oder 1 Lithium Zelle 3V oder Knopfzelle 3V
  • eingebaute 3,3V Stabilisierung (wahlweise überbrückbar)
  • eingebauter digitaler Temperatursensor DS18S20 (wahlweise bestückbar)
  • Die meisten I/O-Ports und AD-Ports stehen an Pin-Leisten zur freien Verfügung
  • Messeingang für höhere Spannung (Standard bis 13,4V – Spannungsmessbereich kann durch Widerstände frei verändert werden)
  • Zusätzliche Batteriespannungsüberwachung über AD-Port integriert
  • Äußerst geringer Strombedarf durch sparsame Bauteile
    • Strombedarf im
    • Powerdown Modi mit schlafendem Funkmodul kleiner als 10uA
    • Strombedarf aktiv – jedoch mit schlafendem Funkmodul nur ca. 0,1 bis 0,2 mA
    • Strombedarf beim Empfang mit Funkmodul RFM12b nur ca. 15mA
    • Strombedarf beim Senden mit Funkmodul RFM12b nur ca. 20mA
  • zwei frei programmierbare Open Kollektor Schaltausgänge (bis 1A belastbar)
  • RFM12 oder RFM12b Funkmodul kann direkt auf der Unterseite aufgelötet werden
  • Hohe Funkreichweite (Siehe Datenblatt des Funkmodules)
  • Beispiele für Interrupt gesteuertes Senden und Empfangen und Wake-Up Ausnutzung
  • Funkkompatibel zu RN-AVR Universal (bei gleichem Funkmodul)
  • Eagle–Library mit RN-MikroFunk auf DVD
  • zahlreiche deutsche Beispielprogramme in Bascom Basic
  • deutsche Anleitung fast 70 DIN A4 Seiten im PDF Format (erläutert auch die Programmierung des Funkmodules RFM12/b)
  • Datenblättern zu Funkmodul und anderen Komponenten

Raspy RFM

Raspberry RFM Modul
Modul auf dem Raspberry
Modul mit Gummiantenne
RaspberryRFM4.jpeg

Aufsatzmodul für den Raspberry PI. Das RFM12 wird dabei direkt mit der SPI Schnittstelle des Raspberry verbunden. Es existiert ein Pythonmodul, mit dem z.B. Funkthermometer empfangen werden können.

Links

Seegel Systeme

Links