Schaltungen und Software für AVR und das Funkmodul RFM12.
svn://mikrocontroller.net/rfm12
Wegen Zugangsdaten bitte bei Andreas Schwarz melden.
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.
|
|
TODO
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
- 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)
Prozessor
ATmega8 TQFP32 (kompatibel ATmega48, ATmega88, ATmega168)
Schnittstellen
Platine
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):
[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:
- Über 60 Seiten starke Dokumentation
- PC Terminalprogramm zum Testen und Konfigurieren
- Abmessungen: 32x34mm, Montage durch 2 Stiftleisten im 2,54mm Raster
- ATmega32 übernimmt komplette Ansteuerung
- 3 Schnittstellen sind vorgesehen: I2C, SPI, UART (derzeit nur UART)
- SMA-Antennenanschluss
- Stromaufnahme: 40mA im normalen Betrieb, 2 Schlafmodi mit Stromverbrauch bis min. 25µA!
- Betriebsspannungsbereich von 3,2 - 5,4V (mit ATmega32L)
- 5V oder 3V Spannungsregler onBoard! Direkter Batteriebetrieb möglich; Kann externe Schaltung versorgen!
- uvm.
Außerdem:
- Unterstützt Funknetzwerk mit bis zu 125 Modulen!
- Kontrolle über fast alle Konfigurationen, direkt im Betrieb änderbar, kein Umprogrammieren notwendig!
- Zahlreiche Sicherheitsfeatures wie Acknowledge, CRCs,...
- RS232-Treiberbaustein MAX3221 onBoard. Damit TTL- und RS232-UART möglich
- Clock Takt am Funkboard abgreifbar, z. B. für externen Mikrocontroller
- Totzeiten ca. 1,5 Millisekunden beim Wechsel zwischen Sende- und Empfangsbetrieb
- 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
Da der USBprog genau das SPI-Interface des ATmega32 zur Verfügung stellt, eignet er sich perfekt als USB-RFM12-Adapter.