Hallo zusammen,
das Funkmodul RFM70 verfügt ja bereits über eine Antenne auf der
Platine. Leider ist die Reichweite dieser Antenne nicht besonders gut.
So vom Datenblatt ist der Anschluss einer externen Antenne wohl auch
nicht vorgesehen.
Könnte man nun einfach eine 2,4Ghz Rundstrahlantenne über ein Kabel an
die Platine löten? Oder würde das nicht funktionieren? Hat das schon mal
jemand versucht?
Für Ideen oder Tipps bin ich sehr dankbar.
Viele Grüße
Daniel
Daniel schrieb:> Leider ist die Reichweite dieser Antenne nicht besonders gut.
Definiere "nicht besonders gut". 2.4GHz hat generell Probleme im
bebautem Raum.
Ich komme so auf ca. ~15 Meter Reichweite, dabei geht das Signal auch
durch 2 Steinwände. Im freien liegt die Reichweite bei ~30 Metern.
Leider schwanken die Module stark in ihren elektrischen Eigenschaften.
Teilweise schaffen manchen Module nur eine Reichweite von wenigen Metern
(Freiluft).
Ist das RFM70 nicht abgekündigt und durch das RFM73 ersetzt wurden? Weiß
einer ob diese Kompatibel zueinander sind?
MfG
Lux
Ich habe festgestellt, dass durch Variation Wertes des Reg4 in Bank1 die
Leistung teilweise erheblich verbessert werden kann (z.B. von 0xD99E860B
auf 0x099E860B). Leider ist nirgends dokumentiert was genau dieser Wert
bewirkt. Aber bit 20 hat hat irgendwas mit der RF_PWR zu tun.
Wenn du richtig Power haben willst, solltest du dir mal das RFM70P
ansehen. Das hat einen LA und PA auf 20dBm. Damit kommt man dann auch
gut durch Wände. Freifeld sind mit 2 dBi Antennte etwa 500-600m drin.
Auch ein Footprint für ein SMA-Anschluss ist vorhanden. Gibts auch bei
Octamex
Hallo zusammen,
danke für eure Antworten.
Ich plane aktuell eine neue Version meines RFM70 Boards
(http://projects.web4clans.com/?p=201) zu den Änderung sollte u.a. ein
Antennenanschluss gehören. Mir gefällt dabei nur nicht, dass man die
Verbindung manuell mit einem Draht überbrücken müsste.
Die Reichweite betrug bei mir im Freien ca. 10m, im Haus ging es nicht
mal durch eine Etage. Leider ist das 2.4Ghz Band ja auch sehr
überlaufen, daher überlege ich aktuell, ob es überhaupt Sinn macht mit
dem RFM70 Modul noch ein neues Layout zu machen.
Könnt ihr sonst noch gute und vorallem kleine Module empfehlen, die eine
Reichweite von min. 100m im Freien haben, besser natürlich mehr und
kosten sollten sie auch noch nicht mehr als 10€ / Modul. Von der
Frequenz her bin ich für alles offen, ich benutze die Module
hauptsächlich für Haussteuerungsaufgaben, da sind die Nachrichten nicht
so groß.
Die beiden oben genannten RFM73 und RFM70P nehme ich mal raus. Bei dem
RFM73 sehe ich nicht wirklich Vorteile gegenüber dem RFM70. Das RFM70P
sieht ganz spannend aus, ist wohl auch pinkompatibel.
Gruß
Daniel
Hallo Daniel,
dein Board ist ziemlich ungünstig für das RFM70 und die schlechte
Leistung, die du erzielst, wundert mich auch nicht wirklich.
Deine Antenne liegt genau über einer Kupferfläche. In deinem Schaltplan
gibt es auch noch ein paar Dinge die man verbessern könnte
(Kondensatoren). Ich würde erst einmal diese Dinge bereinigen, dann das
RFM70 nochmal testen bevor du mit 100mW durch den Äther brüllst...
MFG
Bernd
Falls das Thema hier noch aktuell ist:
Ich habe in meiner Anwendung 2 RFM70P laufen, und trotz einstellung auf
voller Sendeleistung hab ich ne Reichweite von lächerlichen ~5 Metern
(Freies Sichtfeld zwischen den beiden Modulen).
Änderung der Frequenzen/Sendeleistung/etc brachten keine änderung bzw
verschlechterung.
Hab ich da ein faules Modul erwischt oder gibts bei dem Modul was das
ich grundlegend falsch machen könnte?
Verwende die Module als Fernsteuerung für meinen Quadrocopter.
In der Fernsteuerung befindet sich das Modul direkt unter dem Sony
schriftzug, aufm heli sieht mans ja.
hier die initialisierung der register:
1
#include"meinRFM70P.h"
2
3
4
//************ Bank0
5
uint8_tbank0Init[][2]=
6
{
7
// address data
8
{(0x20|0x00),0x0B},//Alle Int's am IRQ Pin active low ausgeben, CRC an, CRC Encoding 1 byte, Power Up, Transmitter
9
{(0x20|0x01),0x3F},//Auto Acknowledge auf alle pipes aktivieren
10
{(0x20|0x02),0x3F},//alle Datenpipes aktivieren
11
{(0x20|0x03),0x03},//RX/TX 5 byte lange Adresse für Empfänger/Sender
12
{(0x20|0x04),0x27},//Auto Retransmition delay 500us, Auto Retransmision aus
13
{(0x20|0x05),0x3F},//kanal = 18
14
{(0x20|0x06),0x37},//Air Data Rate 2Mbps, Transmit Power 5dBm, LNA gain -20dB
15
{(0x20|0x07),0x00},// Statusregister
16
{(0x20|0x08),0x00},//Read only Transmit Observe Register, zählt Packet loss und retransmits
17
{(0x20|0x09),0x00},//Read only Carrier Detect (?)
18
{(0x20|0x0C),0xC3},//LSB Addr pipe 2
19
{(0x20|0x0D),0xC4},//LSB Addr pipe 3
20
{(0x20|0x0E),0xC5},//LSB Addr pipe 4
21
{(0x20|0x0F),0xC6},//LSB Addr pipe 5
22
{(0x20|0x11),0x32},// 32 bytes RX Payload in pipe0 ------>?
23
{(0x20|0x12),0x32},// 32 bytes RX Payload in pipe1 ------>?
24
{(0x20|0x13),0x32},// 32 bytes RX Payload in pipe2 ------>?
25
{(0x20|0x14),0x32},// 32 bytes RX Payload in pipe3 ------>?
26
{(0x20|0x15),0x32},// 32 bytes RX Payload in pipe4 ------>?
27
{(0x20|0x16),0x32},// 32 bytes RX Payload in pipe5 ------>?
28
{(0x20|0x17),0x11},// FIFO Flag Register, ansich Read Only
29
{(0x20|0x1C),0x3F},// Dynamic Payload length für alle pipes aktiviert
30
{(0x20|0x1D),0x07}//Enables Dynamic Payload Length,Enables Payload with ACK
31
};
32
33
//**************32 bit Register 0A,0B,10 Bank0 Initialisierungsbefehle
Die Reichweite ändert sich nicht auch wenn ich den Rest der Schaltung
von der Spannungsversorgung nehme.
TREN bzw PAEN wird vom uC über einen Transistor auf 3,3v gezogen (je
nach betriebsart.)
Die Byteorder für Bank1 0-8 scheint in meinenem Array wirklich falschrum
zu sein.
Werds heut abend mal ändern und bescheidgeben danke euch :)
Hab die Bytefolge geändert und das scheints gewesen zu sein (richtiger
test steht noch aus aber die Reichweite hat sich verbessert).
Vielen dank für die Hilfe besonders Timmo :)
Eine Verständnissfrage bleibt noch:
Auf Seite 13 im Datenblatt steht wörtlich
<Command word> MSB Bit to LSB Bit (one byte) <- das is klar
<Data bytes: LSB Byte to MSB Byte, MSB Bit in each byte first> for all
registers at bank0 an registers 9 to registers 14 in bank1
<Data bytes: MSB byte to LSB byte, MSB bit in each byte first> for
register 0 to register 8 at bank1
Dann steht auf Seite 15:
Note: The SPI timing is for bank0 an registers 9 to 14 at bank1.For
registers 0 to 8 at bank1, the byte order is inversed that the MSB byte
is R/W before LSB byte.
Widersprechen sich diese Aussagen oder lese ich das falsch?
Nee das passt schon, ist nur etwas merkwürdig ausgedrückt. Darum
passiert wohl auch sooft der Fehler. Im Beispielcode von HopeRF ist das
schon richtig gemacht, darum verstehe ich nicht warum das alle immer
falsch ".übernehmen".
Um endgültige sicherheit zu haben :) :
Bank0 komplett und Bank1 9bis14 :
LSBByte ----> MSBByte, Register 0x0E (14) laut datenblatt mit
0xFFFFFEF7CF208104082041 gefüttert werden.
also sende ich über SPI 41;20;08;04;81;20;CF;F7;FE;FF;FF
Für Bank1 Reg0 bis 8 dann:
MSBByte-->LSBByte
um register4 wie im Dateblatt gefordert mit 0xD99E860B zu beschreiben
sende ich im SPI
D9;9E;86;0B
sorry das ich so auf der Frage herumreite, will nur wirklich sicher sein
das ich das richtig mache um net ewig auf Fehlersuche zu sein
Die Dokumentationen von HopeRF sind einfach sehr missverständlich
formuliert (zb auch bei der Speicheradressierung des HDPM01). wo is die
Schande wenn ich da lieber nochmal nachfrage bevor ich mich tagelang mit
Fehlersuche rumärgere?