PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RMF 01 und RMF 02 Sender + Empfänger



baubau
03.04.2009, 15:17
hallo
ich habe mich hier im Forum angemeldet da ich ein Auto umbauen möchte und ich möchte da ne Fernsteuerung dran bauen und dann eben rechts link vor zurück und 2 oder 3 geschwindigkeiten einstellen die ich dann auf Knopfdruck ändern kann. Ich bin bei der Suche nach Sendern und Empfängermodulen auf diese 2 RMF 01 und RMF 02 von pollin (www.pollin.de) Artikelnummer 810 047 und 810 048 gestoßen.
Allerdings ist es so das ich von SPI noch nicht viel verstehe aber nun doch schon seit Weihnachten mit Mikrocontrollern arbeite. Ich habe auch im Bascom Forum ein Code gefunden allerdings kann ich mit diesem nicht viel anfangen :-(
ich wäre sehr dankbar wenn mir jemand Ansätze geben könnte wie ich die Sende und Empfangsroutine gestalen muss und welche Bits ich setzen muss bzw wie ich den Sender und Empfänger initialisieren muss??
Wenn jemand schon ein Fertigen Code hat von früher oder eine Seite kennt wo sowas drauf is was mir helfen kann bin ich sehr sehr dankbar

Lg
baubau

wkrug
03.04.2009, 18:10
Da hast Du Dir ja einiges Vorgenommen!
Die erfordrlichen Bits stehen im Datenblatt.
Ich weiß, das von Pollin ist nicht besonders, lad Dir die Datenblätter von Hope-RF für die Module RF01 und RF02 runter.
Da ist alles wichtige erklärt.
Im Roboternetzforum sind bestimmt über 100 Einträge zu diesen Modulen mit Quelltexten Schaltplänen und allem was Wissenswert ist, benutz mal die Suche.
Zu einem Quellcode für diese Module gehört immer ein passender Schaltplan dazu.
Man kann diese Module in zig verschiedenen Varianten betreiben, deshalb gehört zu jeder Beschaltung auch ein passender Quellcode.

baubau
04.04.2009, 09:50
ok danke ich werd mi das datenblatt mal runterladen und im Forum suchen

baubau
04.04.2009, 12:16
naja im forum gibts ja nich so viel was mich weiterbringt. Sind die beiden RMF 01 und RMF 02 schon gut geeignet oder gibt es welche die sich leichter ansteuern lassen??
Ich möchte nur 8 Tasten übertragen. Ich kann eben mit den Quellcodes aus dem Netz nich sonderlich viel anfangen.
Wenn jemand ein Code hat oder eine Seite weis wi sowas drauf ist dann kann er es ja hier posten
danke

lg
baubau

thewulf00
04.04.2009, 13:16
Die Module heißen RFM, nicht RMF. Du kannst ja gleich das RFM12 nehmen, das ist ein kombinierter Sender und Empfänger. Und für diesen gibts dutzendweise Projekte, Quellcodes und Hilfen im Forum und im Internet.

Diese Module sind die günstigsten und sind sehr einfach. Wenn Du etwas noch einfacheres willst, solltest Du eine fertige Funklösung für 30-40 Euro nehmen.

baubau
04.04.2009, 15:20
ok ich werde mal nach quellcodes für RFM12 suchen
Ich möchte das wenn möglich selbst bauen

hunni
04.04.2009, 19:39
ich habe dazu auch ma ne frage.
Muss ich das Funkmodul erst configurieren, oder reicht das, wenn ich einfach ein SPI Bus Configuriere und den dann da anschließ?

guenter1604
04.04.2009, 22:33
Hallo baubau,

in Anlehnung an http://www.elektor.de/jahrgang/2009/januar/bei-uns-hat-s-gefunkt!.769040.lynkx , hier eine Version, die für den Pollin RFM12 funktioniert:

Sender:

'Elektor RFM12 Sender

$regfile = "m8def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40

$crystal = 16000000
$baud = 19200

Nsel Alias Portb.2
Sdi Alias Portb.3
Sdo Alias Pinb.4
Sck Alias Portb.5

Dim D As Word
Dim Data_in(10) As Byte
Dim Data_out(10) As Byte
Dim N As Byte
Dim Timeout As Word
Dim T As Word
Dim Tt As Word
Dim Freq As Single

Declare Sub Send_rfm12
Declare Sub Receive_rfm12
Declare Sub Freq_rfm12
Declare Sub Wait_rfm12
Declare Function Spi16(byval Dout As Word) As Word

Config Nsel = Output
Config Sdi = Output
Config Sck = Output
Config Portc.5 = Output
Config Pinc.4 = Input
Pinc.4 = 1

'Init
Nsel = 1
Sck = 0
D = Spi16(&H80d7) ' El , Ef , 11.5pf, 433 MHz band
'D = Spi16(&H80e7) ' El , Ef , 11.5pf, 868 MHz band
D = Spi16(&H82d9) '!er , !ebb , Et , Es , Ex , !eb , !ew , Dc
D = Spi16(&Ha67c) ' 434,15 MHz / 868,3 MHz
D = Spi16(&Hc647) ' 4.8kbps
D = Spi16(&H94a4) ' Vdi , Fast , 134 kHz , 0db , -79dbm
D = Spi16(&Hc2ac) ' Al , !ml , Dig , Dqd4
D = Spi16(&Hca81) ' Fifo8 , Sync , !ff , Dr
D = Spi16(&Hc483) ' @pwr , No Rstric , !st , !fi , Oe , En
D = Spi16(&H9850) ' 90 kHz , power - 0 dB
D = Spi16(&He000) '
D = Spi16(&Hc800) '
D = Spi16(&Hc000) ' 1 MHz , 2.2V


Do
For N = 1 To 10
Data_out(n) = 6
Next N
If Pinc.4 = 0 Then
Data_out(1) = 5
Data_out(2) = 12
Data_out(3) = 6
Data_out(4) = 1
Data_out(5) = 3
End If
Send_rfm12
'Waitms 500
For N = 1 To 10
Data_in(n) = 0
Next N
Timeout = 400 + Rnd(1000)
'Receive_rfm12
For N = 1 To 10
Print Data_in(n);
Print " ";
Next N
'Waitms 700
Loop


Sub Freq_rfm12
If Freq < 800 Then Freq = Freq * 2
Freq = Freq - 860
D = Freq / 0.0050
If D < 96 Then D = 96
If D > 3903 Then D = 3903
D = D + &HA000
D = Spi16(d)
End Sub


Sub Send_rfm12
D = Spi16(&H8238)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb82d)
Wait_rfm12
D = Spi16(&Hb8d4)
For N = 1 To 10
Wait_rfm12
D = &HB800 + Data_out(n)
D = Spi16(d)
Next N
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&H8208)
End Sub

Sub Wait_rfm12
Nsel = 0
Do
Loop Until Sdo = 1
End Sub


Sub Receive_rfm12
Tt = Timeout * 10
D = Spi16(&H82c8)
D = Spi16(&Hca83)
For N = 1 To 10
Nsel = 0
T = 0
Do
T = T + 1
Waitus 100
If T > Tt Then Goto Nosignal
Loop Until Sdo = 1
D = Spi16(&Hb000)
Data_in(n) = D
Next N
Nosignal:
D = Spi16(&H8208)
End Sub


Function Spi16(byval Dout As Word) As Word
Local Nspi As Integer
Local Dspi As Integer
Local Dsdo As Word
Nsel = 0
Dsdo = 0
For Nspi = 1 To 16
Dspi = Dout And &H8000
If Dspi = 0 Then
Sdi = 0
Else
Sdi = 1
End If
Dout = Dout * 2
Dsdo = Dsdo * 2
Dsdo = Dsdo + Sdo
Sck = 1
Waitus 5
Sck = 0
Next Nspi
Nsel = 1
Spi16 = Dsdo
End Function

Empfänger:

'Elektor RFM12 Empfänger

$regfile = "m8def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40

$crystal = 16000000
$baud = 19200

Nsel Alias Portb.2
Sdi Alias Portb.3
Sdo Alias Pinb.4
Sck Alias Portb.5

Dim D As Word
Dim Data_in(10) As Byte
Dim Data_out(10) As Byte
Dim N As Byte
Dim Timeout As Word
Dim T As Word
Dim Tt As Word
Dim Freq As Single

Declare Sub Send_rfm12
Declare Sub Receive_rfm12
Declare Sub Freq_rfm12
Declare Sub Wait_rfm12
Declare Function Spi16(byval Dout As Word) As Word

Config Nsel = Output
Config Sdi = Output
Config Sck = Output
Config Portc = Output

'Init
Nsel = 1
Sck = 0
D = Spi16(&H80d7) ' El , Ef , 11.5pf, 433 MHz band
'D = Spi16(&H80e7) ' El , Ef , 11.5pf, 868 MHz band
D = Spi16(&H82d9) '!er , !ebb , Et , Es , Ex , !eb , !ew , Dc
D = Spi16(&Ha67c) ' 434,15 MHz / 868,3 MHz
D = Spi16(&Hc647) ' 4.8kbps
D = Spi16(&H94a4) ' Vdi , Fast , 134 kHz , 0db , -79dbm
D = Spi16(&Hc2ac) ' Al , !ml , Dig , Dqd4
D = Spi16(&Hca81) ' Fifo8 , Sync , !ff , Dr
D = Spi16(&Hc483) ' @pwr , No Rstric , !st , !fi , Oe , En
D = Spi16(&H9850) ' 90 kHz , power - 0 dB
D = Spi16(&He000) '
D = Spi16(&Hc800) '
D = Spi16(&Hc000) ' 1 MHz , 2.2V

Do
For N = 1 To 10
Data_out(n) = N
Next N
'Send_rfm12
'Waitms 500
For N = 1 To 10
Data_in(n) = 0
Next N
Timeout = 400 + Rnd(1000)
Receive_rfm12
For N = 1 To 10
Print Data_in(n);
Print " ";
Next N
'Waitms 700
If Data_in(1) = 5 And Data_in(2) = 12 And Data_in(3) = 6 And Data_in(4) = 1 And Data_in(5) = 3 Then
Portc.5 = 1
Else
Portc.5 = 0
End If
Loop


Sub Freq_rfm12
If Freq < 800 Then Freq = Freq * 2
Freq = Freq - 860
D = Freq / 0.0050
If D < 96 Then D = 96
If D > 3903 Then D = 3903
D = D + &HA000
D = Spi16(d)
End Sub


Sub Send_rfm12
D = Spi16(&H8238)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb82d)
Wait_rfm12
D = Spi16(&Hb8d4)
For N = 1 To 10
Wait_rfm12
D = &HB800 + Data_out(n)
D = Spi16(d)
Next N
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&H8208)
End Sub

Sub Wait_rfm12
Nsel = 0
Do
Loop Until Sdo = 1
End Sub


Sub Receive_rfm12
Tt = Timeout * 10
D = Spi16(&H82c8)
D = Spi16(&Hca83)
For N = 1 To 10
Nsel = 0
T = 0
Do
T = T + 1
Waitus 100
If T > Tt Then Goto Nosignal
Loop Until Sdo = 1
D = Spi16(&Hb000)
Data_in(n) = D
Next N
Nosignal:
D = Spi16(&H8208)
End Sub


Function Spi16(byval Dout As Word) As Word
Local Nspi As Integer
Local Dspi As Integer
Local Dsdo As Word
Nsel = 0
Dsdo = 0
For Nspi = 1 To 16
Dspi = Dout And &H8000
If Dspi = 0 Then
Sdi = 0
Else
Sdi = 1
End If
Dout = Dout * 2
Dsdo = Dsdo * 2
Dsdo = Dsdo + Sdo
Sck = 1
Waitus 5
Sck = 0
Next Nspi
Nsel = 1
Spi16 = Dsdo
End Function

Natürlich kann der Code noch weiter für reines senden und empfangen vereinfacht werden.

Günter

wkrug
05.04.2009, 01:13
Muss ich das Funkmodul erst configurieren, oder reicht das, wenn ich einfach ein SPI Bus Configuriere und den dann da anschließ?
Der SPI Bus stellt ja nur die Verbindung zu dem Funkmodul her.
Die Konfiguration der einzelnen Register innerhalb des Funkmoduls musst Du natürlich in deiner Software machen.
Die benötigten Werte können dann über die SPI versandt werden.

Da man einige Daten ohne Takt an den SPI Bus übergeben kann, würd ich empfehlen die Bausteine über eine Software SPI anzusprechen.

Will man dann wirklich einen Sendestring über die SPI Schnittstelle schicken, kann man im Prinzip die selben Routinen wie für die Kommandoübertragung nutzen, man lässt nur den Takt weg.

Anbei mal beispielhaft, welche Bytes in so einem RFM Sendemodul gesetzt werden können / müssen.

volatile unsigned char uc_frequ[2]; /* Frequenz tuningword */
uc_frequ[1]=ui_frequ[uc_kanal]/256;
uc_frequ[1]|=0b10100000;
uc_frequ[0]=ui_frequ[uc_kanal]%256;
/* Configuration Setting: 433MHz, CLK 5MHz, 11,5pf Kapaz., +/-60kHz */
#asm ("cbi portb,nsel");
sendbyte(0b10001110);
sendbyte(0b01100000);
#asm ("sbi portb,nsel");
#asm ("nop");

/* Frequency Setting: eingestellter Kanal*/
#asm ("cbi portb,nsel");
sendbyte(uc_frequ[1]);
sendbyte(uc_frequ[0]);
#asm ("sbi portb,nsel");
#asm ("nop");

/* Output Power Command: Max Power */
#asm ("cbi portb,nsel");
sendbyte(0b10110000);
#asm ("sbi portb,nsel");
#asm ("nop");

/* Data Rate Command: 2400 bit/s */
#asm ("cbi portb,nsel");
sendbyte(0b11001000);
sendbyte(0b10001111);
#asm ("sbi portb,nsel");
#asm ("nop");

/* Low Batt + Sync Command: enable Sync Circuit */
#asm ("cbi portb,nsel");
sendbyte(0b11000010);
sendbyte(0b00100000);
#asm ("sbi portb,nsel");
#asm ("nop");

/* PLL Setting Command: 0xD240 up to 19,2kbit/s*/
#asm ("cbi portb,nsel");
sendbyte(0b11010010);
sendbyte(0b01000000);
#asm ("sbi portb,nsel");
#asm ("nop");

/* Power Managment Command= Enable Clock; disable Synthesizer; disable pow. Ampl. */
#asm ("cbi portb,nsel");
sendbyte(0b11000000);
sendbyte(0b00100000);
#asm ("sbi portb,nsel");

Wie man sieht ist das doch eine Ganze Menge.
Es gibt da leider keinen allgemeingültigen Code, da die Module sehr viele Möglichkeiten bieten, die Funkstrecke aufzubauen.
Das geht mit der Baudrate los und hört beim Frequenzhub der FSK auf.
Wenn man versteht, welche Parameter was bewirken, kann man die Module optimal auf seine Zwecke anpassen. Der Code passt aber dann nur für diese eine Anwendung gut.

Beim Empfänger sieht das ähnlich aus, allerdings hat dieser Baustein auch noch einen Zwischenspeicher, der FiFo genannt wird.
Dieser FiFo muss, bevor er Daten aufnimmt "aufgeschlossen" werden.
Das passsiert mit einer Codesequenz, die da lautet 0x2D 0xD4.
Vorher kommt noch eine Präambel, die zur Synchronisation des Empfängers dient.

Das alles steht in den entsprechenden Datenblättern.
Ich weiß, die sind nicht besonders gut gemacht, aber letztlich der Weg, der zum gewünschten Ergebnis führt.
Eine gute Dokumentation gibts auch noch bei Hersteller der, auf den Modulen verbauten, Funkchips.
Leider hab ich die Adresse gerade nicht parat.

Den kompletten Code für ein Funk Telemetriesystem, allerdings in "C" könnt ihr euch von unserer Modellflieger Page ziehen:
http://www.toeging.lednet.de/flieger/profi/telemetrie/telemetrie.htm

hunni
05.04.2009, 11:14
mhh ich werd einfach nich aus dem Quellcode schlau, den immer viele im internet anbieten (Bascom). Ausserdem kann ich ja max. Proggen, ansonsten streikt Bascom.
Ein komplettes funkmodul ist mir aber zu teuer.

wkrug
05.04.2009, 11:31
@hunni

Letztlich geht es darum die internen Register des RFM mit Werten zu versorgen.
Ob man die nun mit Hardware SPI oder per Software SPI in das Modul schiebt ist egal.

Beim Senden kann mann allerdings den DIN Eingang des RFM benutzen.
Wenn der Baudrategenerator des RFM 02 eingeschaltet ist, wird zum Beginn eines neuen Bits ein Interrupt ausgelöst.
In der dazu gehörigen Interruptroutine wird dann das entsprecheden Bit auf der DIN gesetzt.
Dieser Modus läuft ohne generierung von Taktimpulsen auf der clk Leitung und ist deshalb nicht SPI kompatibel.
Deshalb hab ich vorgeschlagen die SPI per Software zu lösen.

Man kann das so machen.
Man kannn aber ebensogut den Baudrategenerator des ATMEGA benutzen und die Daten dann direkt in den Sendedaten Eingang des RFM schieben.
Aber da muß man dann beim Empfänger aufpassen, damit die Baudraten wieder zusammen passen. Den FiFo würd ich dann nicht verwenden.

Du musst erstmal die grundsätzliche Funktionsweise dieser Chips verstehen, dann findest Du auch die dazugehörigen Codesequenzen im Quellcode und kannst sie für deine Anwendung optimieren.

Drum hab ich ja weiter oben schon geschrieben "Da hast Du Dir einiges vorgenommen".
Bis ich die ersten Daten übertragen konnte, hats bei mir ca. 3 Wochen gedauert. Ich hab aber viel dabei gelernt.

manude
05.04.2009, 19:53
Bei Pollin gibt es auch eine 8 Kanal Schaltkarte( wahlweise mit Relais oder TTL-Pegel) vieleicht wäre das ja für dich besser!?

hunni
05.04.2009, 20:33
ich habe mitleerweile eine andere lösung gefunden. Werde sie wahrscheinlich auch bald vorstellen.
Trotzdem danke

baubau
05.04.2009, 20:55
danke für die antworten und den quellcode
eine dumme frage wie kann ich damit jetzt 7 oder 8 taster abfragen und den jeweiligen wert verschicken???
ich kann die 8kanal schaltkarte bei pollin irgendwie nicht finden
hunni deine lösung würde mich interessieren!!

hunni
05.04.2009, 22:34
Das is ein Funkmodul mit Rs232 schnittstelle. Das teil basiert ebenfalls auf dem RFM 12 und hat eine Bautrate von 19200 Kp. Ich hab ma n bisschen in anderen Foren gesucht und das zufällig entdeckt. Damit möchte ich eine Funksteckdose bauen, damit alle Zentral von einen Drucker drucken können. auch gibt es weitere möglichkeiten, ich find das ding aba gut, da man schon alles configuriert hat und nur noch loslegen muss.

baubau
06.04.2009, 07:27
ja das ist shcon geschickt aber für meine zwecke eher nich so geeignet

Sauerbruch
06.04.2009, 09:44
...wkrug´s Aussage

Bis ich die ersten Daten übertragen konnte, hats bei mir ca. 3 Wochen gedauert. Ich hab aber viel dabei gelernt.
kann ich voll und ganz zustimmen. Diese kleinen Module sind ohne Frage das genialste seit Erfindung der wiederbeschreibbaren Fischstäbchen - man sollte sich aber von ganz vorne an diese Materie herantasten um überhaupt mal zu lernen, mit diesen Dingern zu kommmunizieren.

Ein paar Fragen (an baubau):
1. Hast Du Dir die Datenblätter besorgt?
2. Hast Du das Prinzip der Command-Bytes verstanden?
3. Kommst Du mit der SPI-Funktion in Bascom klar?
4. Hast Du eventuell feines Messzeugs wie z.B. einen Oszi oder evtl. sogar einen Funk-Scanner?

baubau
06.04.2009, 16:20
also sauerbruch
ja die datenblätter hab ich
2. nee nich
3. ja einigermasen
4. ein oszi

RS232 is halt für ein ferngesteuertes aut nich so supper^^

ich hab in dem buch von c. kühnel über SPI nachgelsen da is dse auch recht gut beschrieben

hunni
06.04.2009, 20:46
warum nich, die bautrate ist doch nich so viel höher oder?

Sauerbruch
07.04.2009, 00:23
Okay - ich versuch´s mal in aller Kürze:

Die einzelnen Kommandos bestehen (fast) immer aus 16 Bits, die per SPI an den Chip gesendet werden. An den ersten paar Bits erkennt der Chip, welches Kommando gerade kommt. Wenn Du sie im Datenblatt mal miteinander vergleichst wirst Du feststellen, dass jedes Kommando tatsächlich eine eigene Anfangssequenz hat.

Beispiel "Frequency Setting Command" des Empfängers RFM01: Das besteht aus den 16 Bits 1,0,1,0,f11,f10,f9...f1,f0.
An der "1010" erkennt der Chip, dass jetzt die Frequenzinfo kommt, und die 12 Bits f11-f0 ergeben den Wert "F". Um den Empfänger z.B. auf 435 MHz zu programmieren, muss "F" den (dezimalen) Wert 2000 haben (Frequenz = 430 +(F*0,0025), siehe Datenblatt!).

Du musst also die Bitfolge 1010 0111 1101 0000 rausschieben - und das geht am einfachsten so:


Config SPI = soft, (.....)
Spiinit

Dim A(2) as byte
A(1) = &B10100111
A(2) = &B11010000
Spiout A(1), 2


Und schon empfängt der RX auf 435,000 MHz. Nach dem Ausschalten vergisst er natürlich alles - und das ist die tiefere Bedeutung der letzten Spalte ("POR") bei den Kommando-Bytes: Das ist der Wert (in Hex), der beim Power-On-Reset in dem Register steht - sozusagen der Default-Wert. Bei dem Frequenz-Register ist das A680, entspricht binär 1010 0110 1000 0000. 1010 weil´s das Frequenz-Register ist, und 0110 1000 0000 = Dezimal 1664. Macht als 430 + 1664 * 0,0025 MHz = 434,16 MHz.
Warum das Ding mit so einer krummen Frequenz aufwacht, weiß ich nicht. Wobei ich jetzt auch erstmal pennen gehen werde :-)

Für erste Gehversuche würde ich mich mal mit dem Configuration Setting Command und dem Receiver Setting Command beschäftigen. Der ganze andere Rest (Wake-Up-Timer, Low-Battery-Detector usw) ist erstmal nicht so wichtig...

Etwas klarer jetzt??

wkrug
07.04.2009, 08:39
warum nich, die bautrate ist doch nich so viel höher oder?
Mit dem internen Filter geht die Baudrate bis 125kBit/sek mit dem externen Filter bis 250kBit/sek.
Je höher die Bitrate, umso kleiner die überbrückbare Distanz.

Für eine maximale Reichweite sollten nicht mehr als 2400Bit / sek verwendet werden.

Für die Funkfernsteuerung von baubau.
Eine 8 Kanal Funkfernsteuerung mit 256 Stufen benötigt zur Übertragung eines Frames 8*8 also 64Bits.
Wenn das Signal 50mal pro Sekunde übertragen werden soll sind das 3200 Bits/sek.
Mit Präambel und Open Bytes sollte man also mit 4800Bit / sek hinkommen.
Ob Du dabei die Daten noch zwischen ein Start und Stoppbit packst ( RS232 ) dürfte, bis auf die Erhöhung der Datenmenge, egal sein.
Eine Prüfsumme am Ende eines Frames würd ich mir aber schon gönnen.
Da kann dann dein Empfänger feststellen, ob das empfangene Frame in Ordnung, oder fehlerhaft ist.

Bei meinen Versuchen hat sich rausgestellt, das die AFC des Empfängers sehr breitbandig arbeitet. Ich bin dann auf ein 75kHz Kanalraster gegangen. Bei einem 25kHz Raster wird auch der Nachbarkanal durch die AFC eingefangen. Ohne AFC kann man natürlich das Kanalraster auch enger wählen, allerdings mit möglichem Reichweitenverlust.
Ein 75kHz Kanalraster ermöglicht dann 22 mögliche Übertragungskanäle im zugelassenen Frequenzbereich. Es könnten also theoretisch 22 Modell gleichzeitig betrieben werden.

thewulf00
07.04.2009, 08:48
Danke für die Erklärung. Selbst alte Hasen lernen von Dir noch was.

Kennt jemand ne Möglichkeit, zu prüfen, ob das RFM sendet (auch 868 MHz), und zwar eine andere, als auf dem Fernseher einfach Kanal XY einzuschalten? (ich weiß nämlich nicht, welcher Kanal das sein soll^^)

baubau
07.04.2009, 18:10
danke sauerbruch soweit so gut
welche bits&bytes sind denn die entsceidenden was übertragen wird?? wenn ich z.b. ein ADC wert übertragen will??

hunni
07.04.2009, 18:53
ich verstehe euch nicht, mit rs232 is das doch mega einfach. Man nimmt das fertige modul, schließt es am Rs232 ausgang vom Microcontroller und fertiig is die laube. da braucht ihr euch keine gedanken um Bits und Bytes machen, genauso wenig das teil übehaupt ins laufen zu bekommen, da man ja mit Input und Print arbeiten kann.

wkrug
07.04.2009, 20:04
ich verstehe euch nicht, mit rs232 is das doch mega einfach
Hier ging es aber nicht um ein fertiges RS232 Funkmodul, sondern explizit um die RFM 01 / 02 Module.
Zumindest die Sendefrequenz sollte an deinem Sendemodul einstellbar sein.

Eventuell wären für eueren Zweck die X-Bee Funk Module besser geeignet.
Die lassen sich auch über AT Kommandos einstellen - Man braucht also nicht mit der SPI rumbasteln.

hunni
07.04.2009, 20:39
mein Kommentar:
http://www.mikrocontroller.net/topic/71682

Sauerbruch
07.04.2009, 23:16
@ baubau: Respekt für Deine Bestrebsamkeit, was eigenes auf die Beine zu stellen!


wenn ich z.b. ein ADC wert übertragen will??

Echte Freaks arbeiten mit den "Fifo"-Registern: Die ziehen ich die zu übertragenden Bytes rein, speichern sie bei Bedarf und übertragen sie mit einer konstanten Baudrate. Das ist zweifelsfrei die "hohe Schule", aber auch ziemlich kompliziert, weil Sender und Empfänger ständig mit den steuernden Mikrocontrollern kommunizieren müssen.

Man kann die RFM01/02-Module aber auch wie einen "Draht" verwenden: Wenn alles richtig eingestellt ist, kommt ein logischer Pegel, den Du auf den FSK-Pin des Senders gibst, aus dem DATA/nFFS-Pin des Empfängers wieder raus. Das ist geradezu ideal für Datenübertragung über die UART-Schnittstellen.

Probier doch mal, RX und TX auf die selbe Frequenz einzustellen, einen Frequenzhub von 30 kHz und eine empfängerseitige Bandbreite von 200 kHz. Dann müsste der DATA/nFFS-Pin am RFM01 genau das machen, was am FSK-Pin des RFM02 ansteht. Mit ´nem Transistortreiber und einer LED (oder dem Oszi) lässt sich das einfach überprüfen.

Und wenn das klappt, könntest Du UART mit ins Spiel bringen...

baubau
08.04.2009, 14:00
danke sauerbruch mich interesseirt sowas eben :D

ja ich werde mal versuchen was aus meinem buch und teile von codes zusammenzu schnippseln und dann schaun was rauskommt
dann bestell ich mir mal son ding und schau ob iwas funktionsfähiges rauskommt
hab aber immer bissl schiss das ich andere sachen stöhre!!