www.mikrocontroller.net

AVR RFM12

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

Inhaltsverzeichnis

[Bearbeiten] SVN

svn://mikrocontroller.net/rfm12

Wegen Zugangsdaten bitte bei Andreas Schwarz melden.


[Bearbeiten] Software

[Bearbeiten] 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.
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.

[Bearbeiten] RS232 <-> RFM12

TODO

[Bearbeiten] 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)

[Bearbeiten] Alternative rfm12lib

rfm12lib von das-labor.org

[Bearbeiten] 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)

[Bearbeiten] Download


[Bearbeiten] Hardware

[Bearbeiten] 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€
  • habe ein verbindliches Angebot für 24 Stück von http://mme-pcb.de/: 4,00€ pro Platine

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):


[Bearbeiten] Flashcraft Funkboard

Homepage des Projekts

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

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. Diskussionen zum Projekt gibt es im Forums-Thread


[Bearbeiten] 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


[Bearbeiten] Links

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net