PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zu RFMxx Funkmodulen von Pollin [brauche noch Hilfe!]



BurningWave
12.04.2008, 18:50
Hallo,

ich habe ein paar Fragen zu den RFMxx Funkmodulen von Pollin:

1. Man kann diese Module ja auch an Microcontroller anschließen, die keinen ChipSelect Ausgang haben (z.B. Attiny26). Wo muss man dann die Pin "nSEL" des Funkmoduls anschließen? Im Datenblatt steht "Chip Select (active low)". Heißt das, dass man diese Pin einfach an Masse anschließen kann, wenn das Modul aktiviert werden soll?

2. Wie lang sollte die Antenne sein? Kann man da einfach ganz normalen Draht nehmen? Wenn ja, wie dick sollte er sein? Sollte man ihn aufwickeln oder ist das egal?

3. Wie kann man ohne teure Geräte erkennen, ob das Sendemodul überhaupt etwas sendet, wenn man den Empfänger noch nicht aufgebaut hat?

Schon mal im Voraus danke für eure Antworten
mfg _R2D2

cool-robotix
12.04.2008, 22:19
Hi, die Antworten in Kürze:

1.) Irgendein GPIO-Pin reicht vollkommen, du kannst es ja per SW setzen. Mit GND verbinden wäre ich vorsichtig. Schau mal am besten im Datenblatt nach. Der verwendete Chip heisst "IA4420" oder "IA4421" von der Firma Integration.
2.) Hängt von der Frequenz ab. 434 oder 868 MHz? Lambda/4 sollte reichen. Das ist bei 434 MHz etwa 17 cm. Normaler Klingeldraht ist OK. Dicke ist relativ egal, ausser du villst auf Reichweite optimieren. Aufwickeln würde ich erst mal lassen, und zum Testen eine gerade Antenne wählen.
3.) :-( geht leider gar nicht.

nikolaus10
12.04.2008, 22:55
Zwei Anmerkungen:

Antenne aufwickeln ist schlecht, die Antennelaenge sollte der "frei strahlende" Bereich sein. Eine "Groundplane" sollte schon recht gute leistungen bringen.

Man kann recht einfach, ohne teure Hilfsmittel, einen Sender ueberpruefen.
Mit dem Fernshgeraet! Die 868MHz sollte man auf Kanal 80 und die 434MHz vielleicht auf Kanal 14 "sehen" koennen.

73

cool-robotix
13.04.2008, 07:57
Guter Tipp mit dem Fernseher, danke. Den kannte ich auch noch nicht :-)

BurningWave
13.04.2008, 11:02
Irgendein GPIO-Pin reicht vollkommen, du kannst es ja per SW setzen.

Das verstehe ich nicht ganz. :?
Was ist eine GPIO-Pin? Was meinst du mit SW?

Christopher1
13.04.2008, 11:09
GPIO-Pin -> General Purpose Input/Output (GPIO) devices provide a set of IO ports that can be configured for either input or output, compounded by the resemblance to GP1 and GP0. One special kind of GPIO is SGPIO.
SW-> Software

BurningWave
13.04.2008, 11:28
Heißt das, dass man einfach die "nSEL" Pin des Funkmoduls mit einem beliebigen Port des Microcontrollers verbinden kann und dann den Port per Software setzen und löschen kann? Also beim setzen des Ports wird das Modul aktiviert und beim löschen deaktiviert?

cool-robotix
13.04.2008, 12:06
Heißt das, dass man einfach die "nSEL" Pin des Funkmoduls mit einem beliebigen Port des Microcontrollers verbinden kann und dann den Port per Software setzen und löschen kann? Also beim setzen des Ports wird das Modul aktiviert und beim löschen deaktiviert?

So in etwa, ja. Wenn du im Datenblatt des Chips (http://www.compotron.com/daten/any/48_IA4421-DS.pdf) nachschaust, z.B. auf Seite 24 den Status Read Command, so siehst du wie der nSel eingesetzt wird.

Du brauchst den nSel also bei jedem Befehl, das du an das Modul sendest.

CowZ
13.04.2008, 12:36
Kann nSel nicht auch dauerhaft auf low, also "active" sein? (Natürlich nur, solange ich keine anderen SPI-Bausteine auf meinem Board habe)

Gruß, CowZ

BurningWave
13.04.2008, 12:57
Mir ist noch etwas aufgefallen:
Wenn man nSEL an einen Port am Microcontroller anschließt und den Port dann aktiviert, ist nSEL doch auf HIGH und das Modul somit deaktiviert, oder? Müsste man dann nicht vor dem Senden eines Befehls den Port deaktivieren? Oder ist im Datenblatt ein Fehler, weil wenn man nSEL an SS anschließt, und das Modul aktivieren will würde man doch SS auf HIGH setzen, dann würde das Modul doch auch deaktiviert???

BurningWave
16.04.2008, 18:27
helft mir bitte weiter

cool-robotix
16.04.2008, 22:27
Mir ist noch etwas aufgefallen:
Wenn man nSEL an einen Port am Microcontroller anschließt und den Port dann aktiviert, ist nSEL doch auf HIGH und das Modul somit deaktiviert, oder?

Ja, so ist es.


Müsste man dann nicht vor dem Senden eines Befehls den Port deaktivieren?

Genau. Umgekehrte Logik :-) Ein "LOW" aktiviert, ein "HIGH" deaktiviert. Ist bei SPI so üblich.


Oder ist im Datenblatt ein Fehler

Nein, zumindest das timing diagramm ist OK.

Im Prinzip musst du ein SPI-Bus im Programm schreiben. Also etwa in dieser Reihenfolge:

1.) Cable-Select auf low
2.) Ausgangspin (MOSI) setzen
3.) Clock setzen
4.) Eingangspin (MISO)einlesen
5.) Clock setzen
6.) Zurück zu 2.) (Bei 8-Bit Befehlen 8 mal)
7.) Cable-Select auf high

Timing habe ich jetzt mal rausgelassen, steht aber im weiter oben aufgeführtem Link.

BurningWave
19.04.2008, 15:03
Ich habe irgendwo im Internet einen C Code für die Module gefunden. Hier ist mal die Init-Funktion:


void rf12_init(void)
{
RF_DDR=(1<<SDI)|(1<<SCK)|(1<<CS);
RF_PORT=(1<<CS);

for (unsigned char i=0; i<10; i++)
_delay_ms(10); // wait until POR done

rf12_trans(0xC0E0); // AVR CLK: 10MHz
rf12_trans(0x80D7); // Enable FIFO
rf12_trans(0xC2AB); // Data Filter: internal
rf12_trans(0xCA81); // Set FIFO mode
rf12_trans(0xE000); // disable wakeuptimer
rf12_trans(0xC800); // disable low duty cycle
rf12_trans(0xC4F7); // AFC settings: autotuning: -10kHz...+7,5kHz
}

Müsste ich dann diese Zeile jetzt umändern, weil CS da ja aktiviert wird?
RF_PORT=(1<<CS);

mfg

BurningWave
21.04.2008, 15:08
Ich habe noch eine Frage:

Ich habe mal gelesen, dass man bei dem RFM12 Modul die Pin FSK/DATA/nFFS über einen Widerstand mit ca. 10kOhm mit VDD verbinden soll.
Muss man bei dem RFM01 Modul die Pin DATA/nFFS auch mit VDD verbinden?

Danke für eure Hilfe
mfg _R2D2

BurningWave
25.04.2008, 18:35
Kann mir denn niemand weiter helfen??? :(