-
RFM12 richtige Wahl?
Hallo,
wie der Titel schon verrät frage ich mich ob das RFM12 Modul die richtige Wahl ist. Nach längerem studieren dieses Moduls scheint mir das Senden/Empfangen recht kompliziert und abenteuerlustig(das wird meine erste Fernsteuerung und ich hab auch dementsprechend so viel Erfahrung).
Auf dieser Seite beängstigen mich, zum Beispiel, die Problemfragen.
Außerdem ist die Verbindung,also wie man dem am Arduino anschließt noch sehr fragwürdig. Das beste was ich dazu gefunden habe ist das hier:aber da das ja ein Thread ist vertraue ich dem nicht so ganz... Hier ist zwar alles erklärt aber Google konnte mir auch nicht sagen wo,bzw was, MISCO,INTO,SS,MOSI usw am Arduino ist.
Hier sind zwar Beispielprogramme aber da verstehe ich nicht wo der Teilprogramm hinkommt wo(zB) die LED blinken soll.
Ich wäre auch für Vorschläge für bessere Methoden zu Übertragung sehr offen.
Danke im Voraus
-
Hallo Andri !
ich habe mich viel mit RF Verbindungen und Arduino befasst. Mit dem RFM12 Modul habe ich noch nichst gemacht, obwohl die auch zahlreich in der Bastelkiste liegen. Das mit den Anschlüssen kannst Du unter Pin-Maping und Arduion bei Goolge suche,es ist aber auch auf der Arduino Webseite arduino.cc zu finden.
Wenn Du am RFM12 festhalten möchtest und nicht weiterkommst, kann ich Dir auch Unterlagen zur Anschaltung wie auch Code senden...nur kann ich dieses nicht immer gleich "sofort" erledigen....wie auch die Weiterführung meiner Webseite, wo ich auch das Thema RF und Arduino bzw AVR aufnehmen möchte...
Also wenn Problem schreib mich am besten per Mail/PN an, ich helfe Dir dann so gut ich kann. Ich arbeite zwar mehr mir seriellen RF Schnittstellen...Anleitung HIER
Gruss
Gerhard
-
Danke für das Angebot! Kannst du mir bitte ein Beispielcode für eine LED oder Moter schicken,was dir lieber ist.
Ich habe jetzt aus dem Bild die Pinanschlüsse mit die von dem Thead verglichen und habe nur bei einem Pin etwas anderes und zwar beim nIRQ(INTO). Ist das der Pin wo Rx0,bzw Tx0 angeschlossen werden muss? Weil das macht dann Sinn.
-
Gib mal das in die Suchzeile bei Google ein : RFM12 site:http://arduino.cc
Ddann wirst du vieles finden. ich werde Dir aber ne Schaltung und den VCode dafür schicken, noch eines interessiert, welchen Arduino benutzt Du ?
Hier gibt es Code . Libs und Examples
Gerhard
PS. Bitte schaue mal HIER oder auch HIE
-
Hallo Andri,
nIRO ist wie zu erkennen ein Statusausgang. Wenn Fifopuffer voll, wird dieser gesetzt.
Somit muss dieser nicht zwingend angeschossen sei. In meinen Projekten nutze ich diesen nur am Empfänger
um ein Interrup am Controller auszulösen wenn Empfangsdaten da sind.
Hat den Vorteil µC kann so lange etwas anderes machen.
Gruß
fredred
-
Ich benutze einen Arduino Mega 2560 als Receiver im Roboter und einen Nano als Transmitter.
Die Schaltung ist jetzt klar aber ich habe nun zwei Programme hier runtergeladen. Einen ewig langen und einen ganz kleinen und ich kann damit fast gar nichts anfangen also eine Erklärung wäre sehr nett;).
-
Hallo Andri,
Habe noch nie ein Modul von Arduino testen können(baue alles selber). Kenne auch nicht dessen Compiler. Ich mache alles direkt mit ISP. Sollte aber kein Problem sein, die Einstellungen für RFM12 auch auf ein Arduing(mit ISP zu flashen) Aber wie ich annehme, sind deine Module, schon als Sender und Empfänger nach Vorgabe von Hoperf installiert, nun kann ich nur Helfen, wenn die Einstellung mir bekannt sind. Init für RFMxx benötigen immer 2 Byte.
Hier meine Init in BASCOM. Vorteil Kanalauswahl, AFC Ein oder Aus oder Datarate usw. sind nach bedarf einstellbar.
Gosub Initialisation 'Zur Initialisation springen
'----- Synchron Pattern Command ist nach meiner Meinung unverzichtbar ---
'---------------------------Sendepuffer füllen----------------------------------
Sendepuffer(1) = &HAA 'Preamble an Modul übertragen
Sendepuffer(2) = &HAA 'Preamble an Modul übertragen
Sendepuffer(3) = &HAA 'Preamble an Modul übertragen
'--------------------
Sendepuffer(4) = &H2D 'HI Byte für die Frame-Erkennung
Sendepuffer(5) = &HD4 'LO Byte für die Frame-Erkennung
'--------------Zum Chip RFM12B schreiben---------------------------------
Rfmwrite:
Reset Cs
Rx_h = Spimove(tx_h)
Rx_l = Spimove(tx_l)
Set Cs
Return
'----------------------------Zum Empfang bereit machen--------------------------
Rfm12_bereit:
Tx_word = &HCA81 'FIFO Initialisieren
Gosub Rfmwrite
Tx_word = &HCA83 'FIFO Aktivieren
Gosub Rfmwrite
Return
'----------------Alle 14 Initialisationsdaten dem RFM12 übergeben---------------
Initialisation:
Restore Initialisationsdaten
For Z = 1 To 14
Read Tx_word
Gosub Rfmwrite
Waitms 30
Next
Return
'-------------------------------------------------------------------------------
Initialisationsdaten: 'Daten gemäß RFM12 Command Calculator
'-------------------------------------------------------------------------------
Data &H80E7% 'Configurations Settings Command
Data &H8299% 'Power Management Command
Data &HA668% 'Frequency Setting Command (HA668 = 868,1MHz)
Data &HC647% 'Data Rate Command
Data &H94A0% 'Receiver Control Command
Data &HC2AD% 'Data Filter Command
Data &HCA81% 'FIFO und Reset Mode Command
Data &HCED4% 'Synchron Pattern Command
Data &HC400% 'Automatic Frequecy Control Command
Data &H9854% 'TX Control Command
Data &HCC17% 'PLL Settings Command
Data &HE000% 'Wake-Up Timer Command
Data &HC800% 'Low Duty-Cycle Command
Data &HC000% 'Low Battery Detect & µC CLK Command
Initialisationsdaten: 'Daten gemäß RFM12 Command Calculator
Sender
'-------------------------------------------------------------------------------
Data &H80E7% 'Configurations Settings Command
Data &H8239% 'Power Management Command
Data &HA668% 'Frequency Setting Command (HA668 = 868.1MHz)
Data &HC647% 'Data Rate Command
Data &H94A0% 'Receiver Control Command
Data &HC2AD% 'Data Filter Command
Data &HCA81% 'FIFO und Reset Mode Command
Data &HCED4% 'Synchron Pattern Command
Data &HC400% 'Automatic Frequecy Control Command
Data &H9854% 'TX Control Command
Data &HCC17% 'PLL Settings Command
Data &HE000% 'Wake-Up Timer Command
Data &HC800% 'Low Duty-Cycle Command
Data &HC000% 'Low Battery Detect & µC CLK Command
Gruß
fredred
-
Läd man das Programm nun von BASCOM auf die Arduinos,welche mit den RFM12 verbunden sind?
Achtung blöde Frage: Ich hab bei den ganzen Beispielprogrammen von allen möglichen Funkmodulen nie irgendwelche Programmabschnitte gesehen wo steht was da beim Arduino gemacht werden soll(also blinkende LED oder so). Läd man das Programm dann auf einen µC und danach noch ein separates für die LEDs? Aber der RAM ist doch nur für ein Programm gedacht,oder?
-
Hallo Andri,
für mich gibt es keine „blöden Fragen“, nur „blöde Antworten“.
Welche Programmiersprache du nutzt ist immer abhängig von den Hardware- Möglichkeiten und welche für dich an verständlichsten ist. Die ATMega Controller werden mit ISP (SS/MOSI/MISO und SCK) Leitungen geflasht. Nach meinem Kenntnisstand ist bei den Arduinos vor ISP ein Bootloader geschaltet. So zu sagen ein Übersetzer von C oder GCC in „Maschinensprache“, somit bist du abhängig von dieser Programmiersprache.
Nun zum Programmiercode. RAM ist der Arbeitsspeicher. Programm wird im Flash ROM gespeichert und im normal Fall immer überschrieben.
Möchtest du mehre „Codeschnipsel“ verwenden musst du die vorab als einem Code zusammenfügen. Oder wie in BASCOM möglich, jeden einzelnen Code, im Hauptcode mit [$include] einbinden. Wie schon geschrieben habe ich mich auf BASCOM festgelegt und am Code- Ausschnitt kannst du auch erkennen, wie einfach es ist, den RFM12B zu sagen was er machen soll.
Da die RFM keinen EEprom haben musst du das Ding nach jedem Neustart erst mal die Command neu senden.
Gruß
fredred
-
Ich sehe aber leider immer noch nicht wo steht was der Arduino machen soll :(.