Bauplan Schaltplan Funkmodul RFM12 IRQ gesteuertes Senden von Daten

RFM12 Funkmodul auf Steckbrett

RFM12 Funkmodule sind eine beliebte Wahl, wenn es darum geht, Daten zwischen Mikrocontrollern auszutauschen. Damit lassen sich zum Beispiel verteile Temperatursensoren im Haus anbringen, und von einer zentralen Stelle abfragen. Auch spezielle Fernsteuerungen und ähnliches lassen sich damit realisieren.

Die Module sind preiswert erhältlich und im Prinzip recht leistungsfähig. Leider ist die Konfiguration nicht ganz trivial, und die Module haben einige Eigenheiten, die das Handling zusätzlich erschweren.

Auch geben die verfügbaren Datenblätter keine wirklich verlässlichen Hinweise, wie man diese Module optimal einsetzt.

Gesteuert werden diese Module durch einen SPI Anschluss, welcher 4 Leitungen benötigt. (Takt, Dateneingang, Datenausgang, Chip Select).
Zusätzlich gibt es noch weitere Steuerleitungen (nFFS,nIRQ,nRST), welche optional genutzt werden können.

Im Internet findet man natürlich einige Beispielprogramme, für diese Module, die allerdings meist nur im Polling-Betrieb arbeiten. Diese Programme sind üblicherweise in C oder Bascom geschrieben.

Da ich noch keine passende Assembler Ansteuerung für diese Module finden konnte, habe ich selbst entsprechende Routinen geschrieben. Die Module werden dabei im Interrupt Betrieb angesteuert, die Datenübertragung läuft also weitgehend unbemerkt im Hintergrund.

Zusätzlich habe ich noch die nRST Leitung vom Modul an den Prozessor geführt, um das Modul nach eventuellen Abstürzen wieder sicher zurücksetzen zu können.

Die hier gezeigte Software ist noch kein vollständiges Datenübertragungssystem, sondern implementiert nur die grundsätzlichen Funktionen, Zusätzlich können über die serielle Schnittstelle Unterprogramme aufgerufen werden, welche zum Beispiel den Modul-Status anzeigen.

Das Programm Initialisiert nach einer kurzen Power Up-Wartezeit das Modul und beginnt periodisch alle paar Sekunden einen Text (liegt im Programmspeicher) zu senden.

Das Modul wird dabei auf 433 MHZ eingestellt, bei einer Datenrate von 4.8kBaud.

Über einen Timer Interrupt wird das Modul in den Sende-Modus versetzt. Das Modul erzeugt dann immer einen Interrupt, wenn es bereit für das nächste Zeichen ist. Zuerst muss eine sogenannte Preambel (3*aa) gesendet werden, dann noch zwei Sync-Zeichen (2D D4), danach kommen Die Datenbytes. Nachdem das letzte Zeichen gesendet wurde, wird die Sendefunktion wieder abgeschaltet.

Ich habe festgestellt, dass meine Module recht empfindlich auf hohe Betriebsspannung reagieren. Obwohl sie 5 Volt tauglich sein sollten, hängen sie sich bei dieser Spannung häufig auf. Bei niedrigeren Spannungen (4.7 Volt) laufen sie problemlos.

Für diesen Fall habe ich der Senderoutine noch einen Timer spendiert, welcher die Initialisierung des Moduls wiederholt, wenn der Sendevorgang nicht innerhalb einer gewissen Zeit abgeschlossen wurde.

Als optische Kontrolle wird während des Sendevorgangs noch eine LED angesteuert, sie blitzt kurz auf, wenn die Daten übertragen werden.

Bauteile für dieses Projekt - Anzeigen:
Aktive Bauelemente

Passive Bauelemente


Weitere Informationen,Grundlagen,Bauanleitung,Schaltplan, Links zum Thema
Anzeigen:

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1213276