Archiv verlassen und diese Seite im Standarddesign anzeigen : 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 (http://www.mikrocontroller.net/articles/RFM12#Was_passiert.2C_wenn_ich_beim_Senden_die_Dat en_nicht_schnell_genug_liefere.3F) 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 (http://forum.arduino.cc/index.php/topic,156233.0.html):aber da das ja ein Thread ist vertraue ich dem nicht so ganz... Hier (http://baunotizen.wordpress.com/2014/01/13/rfm12-funkmodule-mit-arduino-ansprechen/) ist zwar alles erklärt aber Google konnte mir auch nicht sagen wo,bzw was, MISCO,INTO,SS,MOSI usw am Arduino ist.
Hier (https://github.com/JonisK/Baunotizen/tree/master/RFM12-Demo) 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
oderlachs
21.04.2014, 13:00
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 (http://www.ebay.de/itm/433Mhz-Wireless-RF-Transceiver-Module-CC1101-CC1100-RF1100SE-Antenna-CP06017-D44-/271436547820?pt=Wissenschaftliche_Ger%C3%A4te&hash=item3f32e106ec)...Anleitung HIER (http://www.yesyes.info/index.php/electronics/rf1100-232-rf-433mhz-transceiver-module/)
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 (http://public.dm2303.livefilestore.com/y2pde6kH1JmB8vOcItFOSyrsf6yd2xobjis2Qa583pQIQa0lKS INAxOOovFAHnE2oH9BtY4Cy_3Ft6S6eCsF78d9qNha_XoLFT4x OsjIu46dHg/PIN%2520MAPPING%2520ARDUINO%2520MEGA.jpg?rdrts=727 06226) die Pinanschlüsse mit die von dem Thead (http://forum.arduino.cc/index.php/topic,156233.0.html) 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.
oderlachs
21.04.2014, 16:01
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 (https://github.com/jcw/jeelib)
Gerhard
PS. Bitte schaue mal HIER (http://jeelabs.net/projects/hardware/wiki/RFM12B_Board) oder auch HIE (http://www.digitalsmarties.net/products/rfm12b-board)
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 (https://github.com/jcw/jeelib) 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 :(.
oderlachs
24.04.2014, 09:35
Hallo Andri !
Geh mal in mein Profil und schicke mir eine mail, damit ich Deine Mailadresse habe..ich schicke dann was per Mail..
Gruss
Gerhard
Hallo Andri,
schau mal hier. Thema: RFM12 mit Beispielcode von Pollin, Anschlussprobleme Atmega32 (https://www.roboternetz.de/community/threads/threads/64308-RFM12-mit-Beispielcode-von-Pollin-Anschlussprobleme-Atmega32)
Nun nehme ich an du hast Hardware probleme?
Die Hardware-Verbindung für Grundschaltung ist immer gleich.
RFM12 > Controller
VCC = 3,3 Volt
GND > GND
Data (wichtig ist Pin mit 10kOhm auf 3,3 Volt legen)
SCK > SCK
STO > MISO
SDI > MOSI
nSEL > SS
nRES > Resetpin
Mehr ist erstmal nicht nötig damit die beiden über ISP kommunizieren können.
Gruß
fredred
Also die Hardware ist eigentlich klar,damit hatte ich keine Probleme.
Hallo,
nun weis ich wirklich nicht mehr wo dein Problem ist.
RFM mit Controller verbinden. Programm wie erwähnt in Controller flashen und das wahr es.
Wenn nur Hinweise kommen „ich weis nicht wie“, ohne den genauen Knackpunkt zu nennen, kann ich auch nicht mehr weiter helfen.
PS. Hast ja noch ein gutes Angebot für Hilfe. Somit hoffe ich auf baldigen Erfolg.
Mit freundlichen Grüßen
fredred
oderlachs
24.04.2014, 16:44
So ich habe mal Andri etwas aus dem Grossen Kochbuch geschickt, nichts von Grossmutters besten Rezepten, sondern aus dem Arduino Cookbook ;)
Das sind 2 Beispiele je 1x Senden und 1x Empfangen, das muss er sich dann "Zusammenbacken" wie er es braucht...
Hoffe das reicht erst mal....fertig gestricktes wie man es selber gerade braucht ist nicht immer zu finden, aber selber modifizieren ist gut, da weiss man was man macht und kann Fehler besser finden, als wie bei reinem Fremdcode
Hier gibt es alle Code aus dem Kochbuch
(http://shop.oreilly.com/product/9780596802486.do)Kapitel 14.6 = RFM12 & co.
irgendwie spinnte der Link , drum hier noch mal ausgeschrieben:
http://shop.oreilly.com/product/9780596802486.do
Gerhard
Hallo Gerhard,
Link’s währ ja auch für mich interessant aber ich finde leider nicht die Hilfe für Anfrage, weder nach für meine Weiterbildung.
Nun noch ein kleiner Hinweis zum Zitat “So ich habe mal Andri etwas aus dem Grossen Kochbuch geschickt, nichts von Grossmutters besten Rezepten, sondern aus dem Arduino Cookbook“.
Wenn du der Meinung bist BASCOM ist nur was für Leihen dann lies bitte dieses Zitat.
Geschrieben von Arduing Endwickler.
"Empfehlenswert ist insbesondere auch der Bascom Basic Compiler in der neusten Version.
Bascom ist eine unglaublich vielseitige Programmiersprache mit einem sehr großen
Befehlsvorrat. Dadurch lassen sich auch komplexe Aufgaben und Vorhaben in sehr kurzer Zeit programmieren.
Da der Code in echten Maschinencode compiliert sind die Ausführungszeiten optimal für fast alle Aufgaben.
Bascom ist jedoch mehr als nur ein Compiler, es ist eine komfortable Entwicklungsumgebung die alles enthält
was man bei der Entwicklung benötigt, z.B. eingebauten Debugger, Terminalprogramm und Programmier
(Übertragungsprogramm).
Ein großer Vorteil von Bascom ist auch, das es einige deutsche Bücher zu dem Compiler gibt, gerade Einsteiger
werden die zu schätzen wissen."
Gruß
fredred
Also das Beispielprogramm von Oderlachs hat mir schon mal enorm weiter geholfen!!
Ich habe aber leider immer noch eine Frage und zwar da steht:"Zahl der Integerwerte in den Nutzdaten den gelesenen Analogeingängen anpassen." Was bedeutet das? Ich habe Integerwerte gegoogelt aber da kam nichts in dem Zusammenhang raus.
Wenn nur Hinweise kommen „ich weis nicht wie“, ohne den genauen Knackpunkt zu nennen
Mein Problem ist(wie oft schon erwähnt),dass ich nicht weiß wie man in so einem Programm für das Funkmodul angiebt,was der Arduino machen soll. Also,z.B.,Pins high/low setzen. In den ganzen Beispielprogrammen habe ich nur Prozesse zur Initialisierung und was weiß ich was gefunden(und verstanden durch den Beispielcode der mir geschickt wurde),aber nie was zur direkten Betreibung des Arduinos. Ich kann ja auch nicht "einfach mal ausprobieren",weil ich ja wissen muss wie und mit was ich den Arduino verschalten muss.
Hallo,
tut mich leid, wenn du es nicht „schnallst“. Musst doch auch dein Ratio erst einschalten und dann den Sender wählen, was du gerne hören möchtest. Dies macht die Init. Was du mit dem „Sound“ machst ist doch eine andere Sache. Z.B Sender sendet 20x AAA. Empfänger sagt aus den ersten 10 AAA mache ich BBB und der Rest bleibt AAA.
So einfach ist es mit BASCOM.
Aber wie schon erwähnt ist BASCOM aus Sicht von Mitglied (oberlachs) nur etwas für „Grossmütter“, somit solltest du dich in Zukunft auch bei Anfragen an diesen Experten wenden.
Ich kann nicht mehr weiter Helfen.
Gruß
fredred
RoboHolIC
25.04.2014, 23:30
Hallo oderlachs.
Es tut mir direkt weh und zugleich leid für dich, dass deine mit blumigen Worten umrahmte nette Hilfe gleich wieder einen Beleidigten auf den Plan gerufen hat, der Verrat an BASCOM wittert und dir üble Absichten unterstellt, die ich nicht mal ansatzweise erkennen kann.
Ich finde es schon etwas traurig, wenn jemand im reifen Alter von 60 Lenzen einen Haufen Bytes (hier eben mal BASCOM) höher achtet als einen hilfsbereiten integren Forumskollegen.
Solidarische Grüße (aus der PIC-Welt) sendet
RoboHolIC
- - - Aktualisiert - - -
Ein Wort noch an den TO, Andri.
Doch, ja, man kann einfach mal was probieren. Was ich so von dir lese, zeigt mir, dass du noch ziemlich am Anfang stehst und noch kaum Erfahrung mit Microcontrollern hast. Darum empfehle ich dir: Experimentiere, sammle Erfahrung!
Also: Ohne Funkmodul, den puren Arduino mit einfachsten Befehlen programmieren, eine LED mit Vorwiderstand dran und die elementaren Sachen machen: LED ein, LED aus, LED zum Blinken bringen, auf einen Taster reagieren, ... so sind schon viele in die Materie hineingewachsen.
Stattdessen Copy&Paste und dann hier anfragen, warum es nicht geht - bei aller Freundlichkeit: das ist kein guter Weg.
Lieben Gruß
RoboHolIC
Ich habe(vor längerer Zeit) mal angefangen mich in die Materie hineinzuarbeiten und habe wahrscheinlich das meiste verdrängt. Was mich an den Programmen von den Funkmodulen verwirrt hat war genau das woran ich gewöhnt war und zwar ich habe nie(z.B.) ein int led = 137(nur ein Beispiel das ist die erste Zahl die mir eingefallen ist :D) gelesen oder etwas in der Richtung.
Ich werde auf jeden Fall nochmal die ersten Schritte wiederholen aber ich bezweifel,dass das etwas an meinem akuten Problem ändert und zwar,wie schon oben genannt,die Definierung von Pins oder dersgleichen in einem Funkmodulprogramm.
Hallo RoboHolIC,
hier mit möchte ich mich entschuldigen, wenn meine Kommentare als Beleidigung aufgefasst werden. Wollte doch nur darauf Hinweisen, dass BASCOM nicht nur für kleine Projekte gut ist
und meine Hilfe hauptsächlich sich auf diese Programmiersprache bezieht. Für alles andere gibt es im Forum viele Leute die Helfen können.
Hier im Forum achte ich jeden, auch einen blutigen Anfänger.....
Mit freundlichen Grüßen
fredred
RoboHolIC
26.04.2014, 13:21
Ich werde auf jeden Fall nochmal die ersten Schritte wiederholen aber ich bezweifel,dass das etwas an meinem akuten Problem ändert und zwar,wie schon oben genannt,die Definierung von Pins oder dersgleichen in einem Funkmodulprogramm.
Ich will dich auch in keine Schublade zwängen. Es kommt ab und an vor, dass man zwischen den Zeilen lesend den Eindruck gewinnt, der Betreffende brauche einen "Schubs" in eine Richtung, nach der er gar nicht gefragt hatte. Mach das aus deiner Sicht Beste daraus, und viel Erfolg; inhaltlich kann ich dir leider nicht weiterhelfen. Manchmal muss man vielleicht einzelnen Bezeichnern (Konstanten, Variablen) im Sourcecode per Suchfunktion nachspüren, um ihren Sinn zu erkennen, wen die Dokumentation nicht genügt.
Hallo RoboHolIC,
hier mit möchte ich mich entschuldigen, wenn meine Kommentare als Beleidigung aufgefasst werden. Ich bin da aussen vor und habe nur für jemand anderes eine Lanze gebrochen, unter anderem, weil ich Compilerkriege nicht mag. Vielleicht ist es demjenigen sogar unbedeutend.
Wollte doch nur darauf Hinweisen, dass BASCOM nicht nur für kleine Projekte gut ist Das haben schon viele hier gezeigt. Manche mögen keinen Fisch, andere kein Gemüse, wieder andere keine Linzer Torte. Igitt-Reaktionen helfen nicht weiter. Schön, dass es Vielfalt gibt.
Hallo RoboHolIC,
nun bin ich auch etwas verwundert, wer will ein „Compilerkrieg“ ich bestimmt nicht.
Nur weil BASCOM vermuten lässt, es ist ein primietiefer Compiler, nur weil BASIC im Wort steht.
Sage ich grundsätzlich NEIN. Na klar benötigt er mehr Byte für sehr viele Infos im Code. Läuft Code nach Wunsch des Anwenders, können sehr viele Infos gelöscht werden. Nun sollte man sich die erzeugte HEX-Datei anschauen. Ist nur minimal größer wie in C geschrieben. In ASM kompiliert sogar etwas schmaler.
Dein Kommentar finde ich freundlich und sachlich geschrieben. Aber ich bin kein guter „Schreiberling“
Nun hoffe ich, dass dieser Kommentar nicht wieder als Beleidigung oder Besserwisser aufgefasst wird.
Eine Erfahrung habe ich in diesem Forum gelernt, wenn überhaupt ein Kommentar, nur speziell auf Punkt antworten und nicht mehr.
Verbleibe.
Mit freundlichen Grüßen
fredred
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.