Hallo,
kurze Frage zu einer passenden Antenne: Funkmodule gehen soweit gut,
allerdings nur auf sehr kurze Distanz, Meter oder so.
Meine Antennen sind Koax-Kabel,
insgesamt 34cm lang, Isolierung aber bis zur Hälfte abgemacht, d.h.17cm
-> lambda/4. Der Innenleiter ist an das Funkmodul angeschlossen, die
Isolierung mit GND verbunden, passt das so? Baudrate ist übrigens glaube
20kBaud. Warum ist die Reichweite hier so gering??
Viele Grüße
Bart
Hallo,
habe für dieses tolle Projekt zwei kompakte Eagle-Layouts entworfen.
"SFI-Test" ist eins mit DIP-Mega8 Fassung + RFM12 2mm Steckverbindern.
Die LEDs sind hier solche mit eingebautem Vorwiderstand.
Das in etwa Funkmodul-kleine "SFI-SMD" schließlich mit SMD-Mega8 auf der
Top- sowie dem (gespiegelten) RFM12 auf der Bottomseite.
Gruss Jan
Hallo,
Ist es eigentlich möglich, anstatt des RFM12 auch das RFM12BP
anzuschliessen?
Weil ich habe 4 Stück von denen Rumliegen und suche einen
verwendungszweck dafür (ausser einstauben...)
mfg, cyberlink
Prinzipiell ja. Allerdings muss die Software erweitert werden, damit
diese die TXEN und RXEN Signale ausgibt.
Weiterhin müssen natürlich noch die Vorschriften beachtet werden, da man
mit diesen Modulen nicht in allen Bereichen einfach so senden darf.
Funktechnisch ist das kein Problem, ich habe einen komplett
Elektromagnetisch abgeschirmten Raum zur Verfügung. Und für die wenigen
Sekunden Testbetrieb kommt noch kein Funkmesswagen...
Zu TXEN und RXEN: Soweit ich das verstanden habe, müssen diese Pins je
nach Datenrichtung (Senden/Empfangen) auf high gezogen werden. Wie das
Schaltungstechnisch geht weiss ich noch nicht genau (vielleicht Pullup
gegen GND und AVR-Pin auf Input stellen?). Aber die Möglichkeit der
Anzeige der Senderichtung ist doch glaube ich schon in der Software
eingebaut, müsste man also nur noch über zwei Ports ausgeben, oder?
mfg, cyberlink
cyberlink schrieb:
> Zu TXEN und RXEN: Soweit ich das verstanden habe, müssen diese Pins je> nach Datenrichtung (Senden/Empfangen) auf high gezogen werden.
Ja.
> Wie das> Schaltungstechnisch geht weiss ich noch nicht genau (vielleicht Pullup> gegen GND und AVR-Pin auf Input stellen?).
Einfach direkt die 3,3V Signale vom AVR auf TXEN/RXEN.
> Aber die Möglichkeit der> Anzeige der Senderichtung ist doch glaube ich schon in der Software> eingebaut, müsste man also nur noch über zwei Ports ausgeben, oder?
Ja. In der Software gibt es Kommentare wie RX ON, TX ON, RX OFF usw.
An diesen Stellen müssen die Pins entsprechend geschaltet werden.
Danke Benedikt!
Mit diesen Informationen ist das ja supereinfach zu realisieren (Dank
deiner Software).
Nochmal zu den 3,3V Signalen: Wie sähe dass dann in C aus, den den
Ausgang PB1 auf eben VCC zu bringen und umgekehrt auf GND? Bin in C noch
nicht ganz so erfahren wie in Bascom...
mfg, cyberlink
Ich verstehe nicht ganz warum der Schaltplan DIP Version und Softconfig
so verschieden sind was RTS/CTS betrifft. Kann man das deaktivieren um
nur mit RX und TX zu arbeiten? Was ist mit der FFIT Leitung?
Daniel schrieb:
> Ich verstehe nicht ganz warum der Schaltplan DIP Version und Softconfig> so verschieden sind was RTS/CTS betrifft.
Es gibt keinen Unterschied, RTS ist vorgesehen aber nicht implementiert.
> Kann man das deaktivieren um> nur mit RX und TX zu arbeiten?
CTS wird immer ausgegeben, man kann das Signal ignorieren, muss dann
aber damit rechnen, dass Daten verloren gehen wenn man zu schnell
sendet.
> Was ist mit der FFIT Leitung?
Die ist vorgesehen wird aber auch nicht verwendet.
Hallo,
reicht es eigentlich aus in Bascom die Funktion
1
SPIOUT Kommando(1) , 1
bzw.
1
SPIIN Kommando(1) , 1
zu verwenden, um mit dem RFM12 zu kommunizieren?
Bastelbär hatte ja in einem anderen Thread einen Code gepostet, der mit
einer Software SPI funktioniert.
Eine kleiner ablauf der kommunikation wäre nicht schlecht, wenn den
jemand beschreiben würde.
Gruß
Tobi
Hi,
ich habe mir jetzt den ganzen Thread durchgelesen (puhh, Gehirnschmelze)
und wollte mal nachfragen ob ichs richtig verstanden hab: Kann ich jetzt
einfach ne Rs232 Verbindung mit den Boards ersetzen, indem ich statt dem
Max232 dieses Board anschließe? Muss ich da nix mehr in den Code extra
konfigurieren? Ich programmiere in Bascom (duck und weg) und kann leider
dadurch das Programm nicht nachvollziehen.
Danke schon mal im Vorraus.
Mfg,
Florian
Hallo!!
Sehr interessante Beiträge. Mittlerweile gibt es ja viele sinnvolle
Anmerkungen. Gibt es nun eine aktuelle SW-Version (ggf. auch Hardware),
die alle Neuerungen vereint?
Wenn ja, wäre eine erneute Veröffentlichung super!
Angenommen, man nimmt sich die neuste Version zur Brust. Welche
Maßnahmen sind zur Inbetriebnahme notwendig?
Ich habe folgendes gemacht: Softconfig und USE_686 defined. Kann ich nun
Daten über die UART einspeisen und versenden? (meine gewünschte
Baudrate, sowie der Kanal sind ebenfalls eingestellt(im Code).
Hallo zusammen...
Ich möchte mich für diesen super Beitrag zum RFM12 Modul damit bedanken,
dass ich den gesamten Text als *.pdf Dokument aufgearbeitet habe.
Die im Text vorhandenen Links funktionieren übrigens, so dass man die
gewünschten zip Files aus dem Dokument herunterladen kann.
Vielleicht habe ich eine "Druckversion" übersehen, dann sei mir
verziehen.
Ich hoffe, mit diesem Dokument nicht gegen jrgend eine Regel verstossen
zu haben. Sonst bitte File wieder entfernen. Danke...
Gruss Andy
Hallo Leute,
das ist ja mal ein Super Beitrag. Danke an Benedikt für seine tolle Idee
und vorallen, dass er soviel Zeit und wissen in dieses Projekt
eingesteckt hat und es uns jetzt schenkt.
Gibt es eigentlich ein Boardlayout für die Platine zum Download für
Eagle oder Target?
Habe schon viele diese Lösung erfolgreich nachbauen können. Wäre für ein
kurzes Feedback sehr dankbar.
Vielen Dank im Voraus.
Gruß Eddie
Hallo,
ich hätte ma eine kleine Frage zu diese tollen Projekt.
Ich benutze die Check4-Version und diese funktioniert auch soweit
wunderbar bei mir solange ich beide Atmega8 gleichzeitig einschalte.
Sobald ich den Empfänger später einschalte empfängt er garnichts mehr
und der Sender sendet solange bis die maximale Wiederholungsanzahl
erreicht ist. Wo liegt mein Fehler?
Hallo!
Ich habe den Code dieses Threads verwendet, um das
Pollin-Funk-AVR-Evaluationsboard (v1.2) in Betrieb zu nehmen. Hat nach
wenigen Anpassungen sehr gut funktioniert.
Hier meine Änderungen für diejenigen, die auch dieses Board nehmen:
verwendete Hardware:
* Pollin Funk-Avr-Evulationboard V1.20
* RFM12 mit 17cm-Draht-Antenne
* Atmega32 mit 16 MHz-Quarz
Änderungen in den Dateien rfm12_rs232_rxtx_check5.zip:
main.c
======
CPU-Frequenz
- #define F_CPU 10000000UL
+ #define F_CPU 16000000UL
CONFIG-Schalter (Taster gegen 5V statt Jumper gegen GND - bei Reset
oder Start drücken und halten)
- #define CONFIG PIND_4
+ #define CONFIG PINB_1
Abfrage CONFIG-Schalter in main()
- if (!CONFIG)
+ if (CONFIG)
rf12.c
======
CPU-Frequenz
- #define F_CPU 10000000UL
+ #define F_CPU 16000000UL
SPI-Pins am Atmega
- #define SDI 3
- #define SCK 5
- #define CS 2
- #define SDO 4
+ #define SDI 5
+ #define SCK 7
+ #define CS 4
+ #define SDO 6
SPI-Geschwindigkeit clk/16 statt clk/4 in rf12_init(void)
- SPCR=(1<<SPE)|(1<<MSTR);
+ SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0); // clk/16
leds.h
======
- #define LED_TX PORTC_2
- #define LED_RX PORTC_3
- #define LED_RETRANS PORTC_1
- #define LED_ERR PORTC_0
+ #define LED_TX PORTD_5
+ #define LED_RX PORTD_5
+ #define LED_RETRANS PORTD_6
+ #define LED_ERR PORTD_6
Anfang bekam ich nur Müll ausgegeben bis mir auffiel, dass die SPI-Speed
auf clk/4 steht. Das ist mit 10Mhz für AVR oberste Geschwindigkeit für
RFM12. clk/16 ist für 16 MHz OK (dürfte auch für 10 Mhz nicht zu langsam
sein).
Das Board hat nur zwei LEDs (ich habe sie 1x gelb und 1x rot bestückt).
Daher musste ich TX+RX und ERR+RETRANS zusammenlegen.
Einige #defines sind mehrfach in main.c und rf12.c definiert. Das
verwirrt und provoziert Fehler. Ich denke, diese sollte man in die
(ohnehin vorhandene) config.h auslagern. Die Hardware-nahen #defines
wären da auch gut aufgehoben!
Grüße
Stefan
Besteht eigentlich die Möglichkeit mit der Version in diesem Thread
mehrere Funkmodule in einem Netz zu betreiben? Ich lese zur Zeit die
Spannung und den Alarmstatus eines Raumelders aus und sende diesen an
ein anderes Modul zurück, das den Status auf einem LCD ausgibt. Ich
würde jetzt gerne mehrere Rauchmelder abfragen.
Das Projekt von Florian Scherp kann dies zwar, benutzt aber einen
ATMega16/32. Ich habe jetzt aber schon einige Boards mit einem ATMega88
geätzt.
Was für Möglichkeiten gäbe es noch?
Ich hab mal ne Grundsätzliche Frage zu deinem Funkmodul. Kann ich auch
einfach nur TXD und RXD ohne Flusskontrolle oder ähnlichen anschließen?
Mich interessiert das, da ich dann nämlich gerne zwei Mikrokontoller
über dein Funkmodul labbern lassen möchte.
Gruß
Marius
Hallo zusammen,
erstma vielen dank für den Code, der hier zur Verfügung steht.
Hätt da aber eine Frage. Habe zwei Funk AVR Boards von Pollin, und
wollte den Code zur Datenübertragung nehmen. Habe da einige Änderungen
vorgenommen, also die Ports angepasst usw. Leider kriege ich keine
Verbindung zwischen den beiden aufgebaut. Hatte vllt. einer den Code für
an die oben erwähnte hardware angepasst?
Danke und Gruß
Dennis
Dennis schrieb:> Hallo zusammen,>> erstma vielen dank für den Code, der hier zur Verfügung steht.> Hätt da aber eine Frage. Habe zwei Funk AVR Boards von Pollin, und> wollte den Code zur Datenübertragung nehmen. Habe da einige Änderungen> vorgenommen, also die Ports angepasst usw. Leider kriege ich keine> Verbindung zwischen den beiden aufgebaut. Hatte vllt. einer den Code für> an die oben erwähnte hardware angepasst?>> Danke und Gruß>> Dennis
benutze einen atmega8, Änderungen soweit,
externe quelle:
F_CPU 3686400UL
moduleänderungen:
#define SDI 3 //
#define SCK 5
#define CS 2
#define SDO 4
LED Änderungen
#define LED_TX PORTD_6 //Transmit
#define LED_RX PORTD_5 //Resive
SPI-Geschwindigkeit clk/16 statt clk/4 in rf12_init(void)
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0); // clk/16
Abfrage CONFIG-Schalter in main()
#define CONFIG PINB_1
if (CONFIG)
möchte mit 868MHz senden, hab also USE_868 aktiviert
Übertragung funktioniert trotzdem nicht.
Gruß
Hallo zusammen, mein Board läuft jetzt mehr oder weniger.
Eine weitere Frage, kennt jemand von euch das Prog RFM12_Scanner.
Kann man damit die rssi Werte auf den Monitor ausgeben?
Gruß
Hallo,
super Lib, funktioniert bei mir den den RFM12 Modulen einwandfrei :)
Nun stelle ich mir die Frage, ob man auch ohne großen Aufwand die
RFM12BP-868 (500mW) Module verwenden kann?
Gruß
Dirk
erstmal wollte ich mich auch an Benedikt bedanken für seinen starken
sourcecode.
nun nachdem ich die ersten teste mit dem rfm12 erfolgreich sind habe ich
festgestellt dass manche daten die ich empfange nicht rechtzeitig aus
dem fifo ausgelesen werden..gibts es die möglichkeit die Grösse des FIFO
buffer zu beinflussen oder ist die schon beim programm von benedikt auf
die maximale Grösse eingestellt?
vielen dank
Hallo,
ich versuche seit Wochen mein RFM-12B Modul zum laufen zu bekommen.
Allerdings komme ich keinen Schritt vorwärts. Das Funkmodul antwortet
anscheinend nicht auf Anfragen des Mikrocontrollers. Ich habe mit einem
Oszilloskop ein Siganl am MOSI erkannt. Allerdings keine am MISO. Ich
habe den internen Takt des Atmega mit 8 MHz verwendet. Um vom 2mm auf
das 2,54mm Rastermaß zu kommen habe ich etwa 5cm lange Leitungen an das
Funkmodul angelötet um es auf meinem Breadboard zu verwenden. Ich kann
das Problem nicht genau lokalisieren.
Ich verwende die Software : rfm12_rs232_rxtx_check5
Atmega8L-8PU 3,3V
RFM12B DIP Rev.4.0 868MHz 3,3V 868MHz aktiviert im Sourcecode
1.Frage: Sollte ich den Takt des Moduls oder den des uC verwenden? Ich
kann in meien Fusbits keine 10MHz einstellen.
2.Frage: Sind die Leitungen die ich an das Modul gelötet habe störend?
3.Frage: Müssen Veränderungen am Sourcecode oder der Schaltung
vorgenommen werden wenn 3,3V Bauteile verwendet werden?
4.Frage: Fällt jemanden noch ein Fehler auf? ;)
Also ich weiß nicht mehr weiter. Wenn ihr keine Lösungen oder Vorschläge
habt gebe ich auf.
Beitrag "Re: bidirektionale RS232 Funkbrücke mit RFM12"> 1.Frage: Sollte ich den Takt des Moduls oder den des uC verwenden? Ich> kann in meien Fusbits keine 10MHz einstellen.
XTal_1 geht auf dem Bild zm Modul:
Beitrag "Re: bidirektionale RS232 Funkbrücke mit RFM12">2.Frage: Sind die Leitungen die ich an das Modul gelötet habe störend?
Hauptsache sie sind nicht zu lang.
> 3.Frage: Müssen Veränderungen am Sourcecode oder der Schaltung> vorgenommen werden wenn 3,3V Bauteile verwendet werden?
Sollte alles okay sein, das Modul läuft ab 2.2V
Hast du auch einen UART-RS232 Pegelwandler (Max232 läuft oft nur mit 5V)
dran der mit 3.3V läuft?
> 4.Frage: Fällt jemanden noch ein Fehler auf? ;)
Du könntest mal ain kleines Testprogramm drauf laufen lassen oder deine
Fusebits auslesen oder einen Screenshoot der Einstellungen machen.
Die "Brown Out detection" hast du auf 2.6V gestellt?
Guten Tag
Ich bin ein Neuling und habe nicht so viel Erfahrung mit µC und
Funkmodulen. An dieser Stelle möchte ich mich bei Benedikt bedanken für
seinen robusten Code. Ein zweiter Dank geht an Stefan für seinen Beitrag
vom 16.05.2010 in dem er den Code auf die
Pollin-Funk-AVR-Evaluationsboard angepasst hat. Mit diesen Anpassungen
ist mir gelungen relativ rasch zwei solche Boards, die mit RFM12 Modulen
bestückt sind zum Einsatz zu bringen und die bidirektionale RS232
Funkbrücke aufzubauen. Ich finde es einfach fabelhaft, dass ich mit der
bidirektionale RS232 Funkbrücke für meine eigenen, zukünftigen Projekte
ein verlässliches Testsystem habe.
Gruß an Alle
Borislav
Hallo,
erst mal ein großes Dankeschön an Benedikt für den Code!
Ich möchte in den Code eine Funktion Einbauen, die es mir ermöglicht,
nach Eingabe einer bestimmten Zeichenkombination in den Config-Modus zu
kommen. Als Zeichenkette wäre für mich irgendetwas denkbar, was man
sonst nicht sendet, z.B. eine Kombination aus Sonderzeichen oder
ähnliches.
Mir ist nun leider nicht ganz klar, wo (und wie) ich diese Funktion
einbauen muss. Ich müsste ja die letzten 3 Zeichen abfragen und dann mit
der gewünschten Zeichenkette vergleichen.
Schonmal Danke im Voraus und Gruß
André
Nabend,
ich habe mich die Tage recht intensiv mit den RFM12 Modulen beschäftigt
und bin dabei auf Benedikts Bibliotheken gestoßen. Was ich dabei nicht
ganz verstehe ist die Funktion zum Einstellen der Baudrate. Das CS Bit
wird nur unter Baudwerten 5400 gesetzt. Rein rechnerisch komme ich aber
auf ~2700 (2693 oder so). Macht in der Praxis nichts aus, ich bin nur
drauf gestoßen und möchte mal nachhaken. Ich hoffe ich habe's bisher nur
nicht überlesen (so lang wie der Thread schon ist).
Grüße, Nils
Hallo
Ich wollte gerde die Funkbrücke zum testen aufbauen und dabei ist mir
aufgefallen das die Pinbeschriftungen von dem Avr garnicht passen
Geschrieben steht Atmega 8 allerdings Reset an pin 29 und auch sonst
passen die Nummern garnicht
Sven Möller schrieb:> Ich wollte gerde die Funkbrücke zum testen aufbauen und dabei ist mir> aufgefallen das die Pinbeschriftungen von dem Avr garnicht passen> Geschrieben steht Atmega 8 allerdings Reset an pin 29 und auch sonst> passen die Nummern garnicht
Das ist nicht das DIP Gehäuse, sondern das 44 polige TQFP...
Bez. Baudrate: Benedikts Formel ist zwar lt. Datenblatt korekt, aber
durch das Integer-Runden / Wegschneiden kommen teilweise sehr
unglücklicher Werte raus, bei 19200 wird z.B. real auf ~20284 Baud
eingestellt.
Mit 345600 statt 344828 kommt man meiner Meinung nach besser hin...
Ich habe gestern meinen ersten Versuch gestartet und bin wie zu erwarten
gescheitert ...
Beide module schalten auf 10mhz, Fuse auf Extern gestellt.
Aber beide avr's senden mir über rs232 nur Datenmüll und das in einer
tour. Auch wenn einer der beiden aus ist und auch sonst vermutlich nix
auf 433 senden dürfte.
Rs232 am pc eingestellt auf 19200 auch im config modus nur datenmüll
version war die rfm12_rs232_rxtx_check5
hat jemand einen hinweis?
Hallo,
hat für mich als reinem Anwender des Codes "rfm12_rs232_rxtx_check5.zip"
jemand eine Erklärung für folgendes Phänomen, welches ich in meinem
kleinen Netzwerk mit mehreren der Funkmodule habe: Wird eines davon
-Nr.1- neu eingeschaltet werden sämtliche davon gesendete Zeichen bei
einem weiteren -Nr.2- (ständig eingeschalteten) Modul nicht empfangen-
solange nicht von einem dritten -Nr.3- (ebenfalls ständig
eingeschalteten) Modul etwas gesendet (und stets auch ordnungsgemäß
empfangen) wird. Modul Nr.1 soll aus Energiespargründen nur ab und zu
eingeschaltet werden wenn es Daten zum Senden gibt. Nun sehe ich mich
außerstande das zu realisieren da ich dabei natürlich nicht auf auf
sonstigen Funkverkehr (Modul Nr.3) angewiesen sein möchte. Hoffe das
Problem ist einigermaßen klargeworden und jemand kennt eine Lösung ...
Gruß Tobi
Hallo,
ich verwende den Code aus "rfm12_rs232_rxtx_check5.zip" mit komplett
anderer main() und habe das Problem, das ausschließlich beim Empfang die
folgende Aufrufkette bei ca. jedem zweiten Telegramm blockiert:
rf12_rxdata() -> rf12_rxbyte() -> 1.Aufruf von rf12_ready()
konkret in dieser Zeile:
while (!(RF_PIN&(1<<SDO))); // wait until FIFO ready
Ich will das als Basis für einfache Funk-Spielereien nehmen. Es ist also
kein UART etc. beteiligt. Es wird ein Telegramm gesendet wenn eine Taste
gedrückt wird.
Der Code in main() ist deswegen auch hinreichend simpel und es sind
keine Interrupts aktiv.
1
#define CHANNEL 2 // Sende/Empfangskanal (0-3) (nur gültig wenn kein DIP Schalter verwendet wird)
2
#define RF_BAUDRATE 20000 // Baudrate des RFM12 (nur gültig wenn kein DIP Schalter verwendet wird)
3
#define MAX_BUF 128 // Paket Größe in Bytes (maximal 250, siehe auch rf12.c)
4
:
5
:
6
rf12_init(); // ein paar Register setzen (z.B. CLK auf 10MHz)
Hardware ist das bekannte OLED Blutzuckermeßgerät:
http://www.mikrocontroller.net/articles/Compact_Plus_Blutzuckermessger%C3%A4t-Hardware
Es ist also ein 3,3V-System. Das Modul ist RFM12S in der 868
MHz-Version. "USE_868" ist gesetzt und grundsätzlich funktioniert das
System auch, da ca. jede zweite Botschaft (durch Tastendruck gesendet)
fehlerfrei durchkommt - die Pins sind also korrekt angeschlossen etc.
NFFS und NSEL sind je mit einen 12k-Pullup versehen.
Das Problem äußert sich so, dass rf12_ready() blockiert. Wenn eine
weitere Botschaft vom Sender geschickt wird, dann läuft es weiter -
natürlich für dieses Telegram mit fehlerhafter CRC aber die main()-Loop
wird wieder ausgeführt.
Ich habe zwei gleiche Systeme aufgebaut und die können sich gegenseitig
durch das Senden von Botschaften blockieren und auch wieder
"entblockieren".
Hat jemand eine Idee, woran das liegen könnte?
Gruß,
Bernd
Noch ein Hinweis:
Das Modul ist über ca. 4cm lange Käbelchen verbunden und die Spannung am
Modul mit 10µF Tantal / 100 nF keramisch abgeblockt. Sollte also
eigentlich alles passen. Ich habe die SPI-Frequenz mal halbiert, hat
aber nichts gebracht, da gleiches Verhalten.
Hat niemand eine eine Idee?
Gruß,
Bernd
Hallo!
Dieser Thread ist mittlerweile richtig lang....
Ich habe eine Frage: Habt ihr Empfehlungen zu folgenden Einstellungen
(868MHz)?
rf12_setbandwidth(? , ?, ?);
Ziel sollte eine gr. Reichweite sein mit einer Fehlerrate, die noch in
Kauf zu nehmen ist. (ich setzte mir ein flag.RX_err wenn der CRC-Check
in die Hose geht.)
Einstellung derzeit: rf12_setbandwidth(0,3,0);
die Reichweite ist nicht zufriedenstellend. Aus dem Gebäude raus, 30m
zur Garage. Kein Empfang.
Danke für eure Hilfe/Empfehlungen!
Wäre es nicht besser gewesen einen neuen Thread zu erstellen?
Es gibt bestimmt genug Leute, die wie ich auch manchmal erst mal oben
anfangen und ich nach einer Stunde wundern wie lange der Thread noch
geht ;)
Zum Thema: würde mich auch interessieren. Hab auch vor ein Paar Tagen im
offizielen RFM12-Artikel einen Abschnitt gesehen, in dem stand, wie man
möglichst hohe Reichweite bekommt, aber noch nicht rum probiert.
http://www.mikrocontroller.net/articles/RFM12#Einstellungen_f.C3.BCr_maximale_Reichweite
Guten Morgen zusammen,
ich habe ein Problem und hoffe auf eure Hilfe.
Ich habe die Version Check5 auf einem Mega8 und 868Mhz fehlerfrei
compiliert(led.h und use868 entsprechend bearbeitet usw.) aber bekomme
nur eine Unidirektionale Verbindung obwohl auf beiden der gleiche Code
läuft.
Ich kann nur von 1 auf 2 Senden aber nicht von 2 auf 1. Die RX-LED
blinkt auch nur bei 1 und bei beiden geht die Error-LED an. Die Retrans
und TX LEDs bleiben bei beiden aus.
Wo kann ich noch nach dem Fehler suchen?
Sender sind sowohl TeraTerm auf dem PC und ein Mega168 mit
Temperaturwerten. Bei direkter Kabelverbindung klappt alles und emnach
scheint von der Seite alles ok zu sein.
Habe gestern auch schon das Funkmodul was"scheinbar" nicht sendet
ausgetauscht, da ich mehrere habe aber ohne Erfolg.
Hat jemand evtl. einen Tip?
Gruß
Clyde
Hallo zusammen,
nach dem Aufbau eines dritten Moduls klappt die Verbindung in beide
Richtungen. Weiss zwar noch nicht, was ich versemmelt habe aber werde es
später mal suchen.
Nun habe ich aber ein anderes Problem...
Ich habe keine ausreichene Reichweite, ich komme nicht mal 10-15m durch
die Wohnung. Antennen sind Drahtstücke von ca. 8cm(868Mhz-Modul) und
eine selbst gewickelte Spule aus einem der wenigen noch Funktionierenden
Links.
Habe auch mal von QUIET über NORMAL auf NOISY aber es brachte nichts.
Als Leistungsabgabe habe ich den Originalcode übernommen, weil ich es so
verstehe, das mit maximaler Leistung gefunkt wird.
Wer weiß Rat?
Huhu,
guckt hier noch jemand?!?!
Mittlerweile habe ich eine Aurel-Antenne für 868Mhz, aber vom PC-Zimmer
bis ins Wohnzimmer(ca. 15m ums Eck aber offene Türen, Wände Massiv)
klappt es immer noch nicht...
Habe jetzt auch mal nen anderen Kanal gewählt, aber ohne Erfolg...
Mit der Baudrate stehe ich noch auf Kriegsfuß, auf 19200 klappt alles in
Sichtweite.
bei anderer Baudrate verstehen sie sich nicht mehr, trotz gleicher DIP
Stellung, TeraTerm zeigt nur wirre zeichen obwohl ich die Baudrate
angepasst habe(2400,4800,9600 ausprobiert).
19200 klappt wie gesagt...
Wo könnte der Fehler/das Problem liegen?
Gruß
Clyde
hallo,
ich versuche seit längerem meine beiden Funkmodule RFM12BP-868 mit je
einem mega8 zum laufen zu bringen. Nach einigen Fehlschlägen versuche
ich jetzt möglichst nahe an Benedikts Code zu bleiben. Ich benutze
Softconfig das funktioniert auch, wenn ich den Jumper stecke komme ich
in das config-menü. Beim Daten senden (ohne Jumper) blinkt auch die
TX-Led, nach einigen versuchen leuchtet die Retrans-Led und später die
Error-Led. Beim Empfänger tut sich in dieser Zeit gar nichts.
Die Umschaltung von RXEN und TXEN funktioniert auch.
Ich weiß nicht mehr weiter, vielleicht sind auch die module hinüber, als
sie mal kurz mit 5V liefen. Hat jemand ein kleines Programm für die
RFM12BP-868 version um die Funktion zu testen?
Grüße
Hallo,
ich versuche zwei RFM12 Module mit dem Code von Benedikt zum laufen zu
bekommen(check5) - das funktioniert allerdings nur wenn ich beide Module
an der selben Spannungsversorgung betreibe - jemand ne Idee woran das
liegt?
Danke
Moinsen,
da ich eine interne UART Funkbrücke brauchte die nicht an den Hardware
UART geht habe ich mal diese Funkbrücke als Library gekapselt.
Der Aufruf erfolgt genauso wie die UART Lib von Peter Fleury.
Im Anhang eine Echo Funkbrücke, ein Modul sendet was es vom UART bekommt
und das andere Funkt dies zurück.
Hallo Benedikt, wenn Du hier noch mitliest möchte ich Dich bitten das
Prg. hier nochmal für einen Neuling zuverlinken und ein paar Tips zum
RFM12 bezüglich Fehler einzustellen. Schon mal danke für Deine Arbeit
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.
Frage an die Moderation? Ich verstehe das nicht, habe weitere Fragen zum
Projekt und keine Antwort!
Hallo Benedikt, klasse Teil habe es nachgebaut und es tut was es soll.
Hast du noch eine Idee wie man das so erweitern kann das DTR und RTS und
CTS mitübertragen werden für eine drahtlose FTDI(RS232) Verbindung zum
Arduino mini oder clones zum drahtlos programmieren?
Joachim B. schrieb:> Hallo Benedikt, klasse Teil habe es nachgebaut und es tut was es soll.> Hast du noch eine Idee ...
Das kann ich bestätigen und habs auch dutzendefach als kleines
Funknetzwerk fürs Smart Home im Einsatz!
Leider ist der "Support" wohl endgültig ausgelaufen, zum Trost hier im
Anhang nochmal eine vereinfachte kleine LP zum Drauflöten eines 433 MHz
RFM12 + passende Hex für den Mega8 und einer kurzen Anleitung zum
Programmieren mit einem AVRISP-Programmer. Die entsprechende temporär
anzulötende 6-pol. Programmierbuchse muß man sich noch dazu basteln
(siehe Schaltplan).
Da ich vor Jahren Benedikts Code für eine Funkbrücke zwischen zwei
ATmega8 verwendet habe und auf einem aktuellen Board ebenfalls ein RFM12
bestückt hatte, war es naheliegend das Projekt von damals als
funktionsfähiges Gegenstück zu verwenden.
Zu diesen Zweck habe ich Benedikts Code etwas erweitert und dafür
gesorgt dass er mit einem aktuellen gcc übersetzbar (zumindest für eine
mega8) ist . (Interrupt Namen...)
Features:
-Timeout und Anzahl der Retries lassen sich per Software ändern und
werden im EEprom gespeichert.
-Timeout fürs erneute Senden ist nun variabel (Pseudozufall) um ein
wiederholtes gleichzeitiges Senden von beiden Teilnehmern zu vermeiden.
-Zu Testzwecken kann auf ein Senden der Bestätigung verzichtet werden
und CRC Fehler können angezeigt werden.
Und das Protokoll war glaube ich auch nirgends dokumentiert:
TX POS RX POS
0...4 ------: Sync data: 0xAA + 0xAA + 0xAA + 0x2D + 0xD4
5 0 : Status byte: bit 0 set: received ok
6 1 : Number of data bytes to send (id not counted!)
7...N 2...M : Data bytes: Only if number of bytes is > 0.
If at least one data byte, first byte(7) is an id.
Receiver accepts package when ID is different to the
previous one.
Transmitter increases ID if the reception has been
acknowledged or the the acknowledge is not received
within some timeout.
N+1 M+1 : CRC of bytes 5...N/0...M
N+2 ------: 0 - not received
Speciality in protocol: If one byte is 0x0 or 0xFF, the next byte will
be completely ignored (stuff byte).
The default values will result in a re-sent after 10ms if no ACT has
been received.
Sample reception:
00: Status
AA: Stuff byte because previous byte is 0
01: Number of data bytes to send = 1
05: The 5th packet to send
77: The Data - ascii w
2F: CRC (excluding stuff byte and excluding CRC itself)
E2: Garbage
Vielleicht interessiert es ja jemanden - die RFM12 scheinen ja weiter
aktuell zu sein.
Da ich per PM danach gefragt wurde,
hier ein fertiges Binary aus dem Quellcode des vorherigen Posts
Hex für:
AtMega8 mit 8MHz Quarz.
Der Uart läuft standardmäßig mit 9600 Baud.
Um in das Konfigurationsmenü zu kommen, muss beim Power Up PinD.2 auf
Low gezogen sein.