Forum: Mikrocontroller und Digitale Elektronik nRF24L01+ läuft nur mit 2 Mbps + Auto ACK?


von The SphereX (Gast)


Lesenswert?

Hi Leute !!!

Zur Übermittlung der Information "Briefkasten voll" bzw. "Briefkasten 
geleert" bin ich gerade dabei, mir ein Sender-/ Empfängersystem zu 
basteln. Der Sender im Briefkasten am Gartenzaun soll dabei die Daten an 
den ca. 30 Meter entfernten Empfänger im Haus übertragen, welcher dann 
wiederum mit einer blinkenden LED den Posteingang signalisiert. Also 
keine allzu komplizierte Geschichte soweit.

Als Funkmodul nutze ich dabei den nRF24L01+ Transceiver (Nordic 
Semiconductor), welcher jeweils von einem ATTiny44A gesteuert wird. Laut 
Produktbeschreibung kommt man damit bis zu 100 Meter weit, mehr als 
genug also für meine Anwendung, dachte ich zumindest. Bereits meine 
ersten Tests brachten dann nämlich die große Ernüchterung. Im Haus komme 
ich so auf ca. 6 Meter ohne großartigen Datenverlust, was ja schon nicht 
wirklich berauschend ist. Sobald ich allerdings den Wohnraum verlasse 
und mich in Richtung Briefkasten bewege, kommt überhaupt keine 
Verbindung mehr zustande. Ein Frequenzwechsel brachte leider auch keine 
Besserung. Blieb also nur noch eine niedrigere Datenrate, also 1 Mbps 
oder 250 kbps, wobei letztere ja speziell für weite Strecken gedacht ist 
und bei etlichen Leuten auch tatsächlich die Reichweite vergrößert hat. 
Und da ich sowieso keine riesigen Datenmengen möglichst schnell 
verschicken will, sondern um genau zu sein eigentlich nur eine 1 für 
"Briefkasten voll" und 0 für "Briefkasten geleert", kann ich auch sehr 
gut mit "nur" 250 kbps leben. Umso erstaunter war ich, feststellen zu 
müßen, daß bei mir sowohl bei 1 Mbps, also auch mit 250 kbps, überhaupt 
keine Übertragung mehr stattfindet, selbst nicht bei einem Abstand von 
nur 10 cm.

Testweise hatte ich dann auch mal "Auto Acknowledgement" (ACK) 
deaktiviert, was allerdings auch nichts brachte, außer, daß das Ganze 
nun plötzlich auch bei 2 Mbps Datenrate nicht mehr funktionierte. 
Zusammenfassend muß ich folglich leider feststellen:

> 2 Mbps mit Auto ACK: funktioniert prinzipiell, leider nicht ansatzweise über 30 
Meter bis zum Briefkasten
> 2 Mbps ohne Auto ACK: keine Verbindung
> 1 Mbps, 250 kbps (mit und ohne Auto ACK): selbst bei minimalem Abstand keine 
Verbindung

Tja, jetzt komme ich mit meinem Briefkastenprojekt natürlich erst mal 
nicht weiter. Naja und mit den Leistungsdaten kann man die Funkmodule 
auch kaum ernsthaft für irgendwelche anderen Anwendungen gebrauchen. 
Deshalb jetzt hier meine Frage an Euch: Sind meine nRF24L01+ Transceiver 
evtl. defekt, oder hat schon jemand ähnliche Erfahrungen bezüglich der 
Datenrate gemacht, und weiß vielleicht, wie sich das Problem lösen läßt? 
Daß die angegebenen "100 Meter" utopisch und praktisch wohl kaum zu 
erreichen sind, dachte ich mir ja schon fast, aber die 30 Meter bis zum 
Briefkasten sollten doch schon drin sein?!

Grüße,
The SphereX

von Georg G. (df2au)


Lesenswert?

Die 100m gelten für optische Sicht zwischen Sender und Empfänger. Wände 
wirken je nach Material mehr oder weniger blockierend. Ich schaffe es 
aus dem Keller nur mit Müh und Not in das Erdgeschoss, gerade mal 15m.

Deine Bausteine werde nicht defekt sein. Wieder aus eigener Erfahrung 
tippe ich auf Fehler in der Initialisierung. Irgend ein Bit hast du 
falsch verstanden.

Ich verwende 1MBps ohne Auto-Ack.

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

Nur so mit der Stange im Nebel gerührt: Wenn du ohne Auto-Ack arbeitest, 
solltest du vor dem send_payload() ein flush_tx_fifo() machen. Sonst 
verklemmt sich das Ding.

von Philipp K. (philipp_k59)


Lesenswert?

Gibt ja noch die Variante mit integriertem Verstärker mit angeblich 
1000m Reichweite

http://www.ebay.de/itm/400776354264

auch beim Standard nicht zu vernachlässigen eine vernünftige Antenne 
kann Wunder wirken, muss aber nicht.

von Georg G. (df2au)


Lesenswert?

Philipp K. schrieb:
> vernünftige Antenne

Schon ein improvisierter Sperrtopf aus einem Stück Koax bewirkt Wunder. 
Die Antenne ist immer noch der beste und preiswerteste Verstärker.

von The SphereX (Gast)


Lesenswert?

@ Georg G.

" ... Ich schaffe es aus dem Keller nur mit Müh und Not in das 
Erdgeschoss, gerade mal 15m. ... "

Na immerhin, das ist ja schon mal mehr als das Doppelte meines 
Indoor-Maximums. Und zwischen Briefkasten und Empfänger, je nachdem, wo 
ich Letzteren schlußendlich stationieren werde, befindet sich auch nur 
eine Wand (ca. 25 cm) und ansonsten eigentlich schon freie Sicht (bis 
auf ein paar Äste vielleicht).

" ... Irgend ein Bit hast du falsch verstanden. ... "

Das ist natürlich die naheliegendste Vermutung. Deshalb jetzt hier mal 
meine Konfiguration für das entsprechende Register RF_SETUP:

> 2 Mbps, 0 dBm: &B00001110
> 1 Mbps, 0 dBm: &B00000110
> 250 kbps, 0 dBm: &B00100110

Wie gesagt, mit 2 Mbps funktioniert noch alles. Verändere ich am 
Programmcode dann nur den Wert für RF_SETUP, setze also entsprechend 
RF_DR_HIGH und / oder RF_DR_LOW gemäß Datenblatt anders, kommt keine 
Übertragung mehr zustande.

" ... Wenn du ohne Auto-Ack arbeitest, solltest du vor dem 
send_payload() ein flush_tx_fifo() machen. ... "

Den Sendepuffer leere ich sicherheitshalber sowieso schon immer vor dem 
Senden, als auch mit Auto-ACK.

@  Philipp K.

Ich dachte eigentlich schon, das Ganze irgendwie auch ohne Antenne 
hinzukriegen. Selbst unsere Funkklingel schafft die Distanz ja auch 
vollkommen problemlos und zuverlässig, und das mit einem popeligen 4 cm 
Draht als "Antenne" ;-).

Grüße,
The SphereX

von Georg G. (df2au)


Lesenswert?

Es gibt vom nRF24l01 etliche Clones, die nicht alle 100% kompatibel 
sind, was die Register Belegung angeht. Als Test solltest du mal nach 
einem Reset die Register Werte auslesen und mit dem Datenblatt 
vergleichen.

Ansonsten siehst du mich ratlos. Ohne weitere Meßtechnik wird das ein 
Stochern im Nebel. Die billigste Lösung, die mir einfällt: Den Sender 
einer Fernbedienung eines kleinen Quadcopters verwenden. Die sollte es 
gebraucht günstig geben, weil von dem Set meist der Copter als erstes 
stirbt. Die arbeiten fast durchgängig mit 1MBps ohne Auto-Ack.

Wo wohnst du (PLZ)?

von Marcel (Gast)


Lesenswert?

Hallo,

ich habe Anfang des Jahres im Rahmen eines Projekts mit den nrf24L01+ 
gearbeitet und unter anderem auch mal Versuche zur Reichweite gemacht. 
Auf einem Parkplatz mit Sichtverbindung kam ich bei 2 MBit/s und ACK auf 
eine Entfernung von ca. 110 m. Danach traten dann vereinzelt 
Paketverluste auf. Natürlich hängt die Reichweite von vielen Parametern 
ab, aber gernerell schaffen die schon eine gewisse Reichweite. Was dein 
Problem betrifft kann ich dir leider nicht wirklich weiterhelfen. Bei 
mir gingen aber auch kleinere Datenraten, auch mit deaktiviertem ACK. 
Aber wie schon gesagt wurde oftmals sind es irgendwelche Register die 
nicht stimmig sind. Ich hatte auch hin und wieder mal Probleme mit'm 
Timing, sodass ich mir Testweise mit delays beholfen habe, ohne diese 
ist der Chip dann schonmal ausgestiegen.
Sind also ein wenig tricky die Funkchips. Aber wenn es denn dann einmal 
läuft, dann eigentlich auch recht zuverlässig.

Viel Erfolg noch!

von Ulrich F. (Gast)


Lesenswert?

Ähnliche Probleme plagten mich auch.
Ein 10µF Konni dicht an die Versorgungspins des Moduls brachte Abhilfe.


Von 100m kann ich auch nur träumen.
60m im Freigelände.
Im Haus, ist nach 2 Mauern Schluss.
Das alles bei 1MBPS


Auffällig:
Bei 250MBPS reicht die Zeit für die Ack+Payload Prozedur nicht.
Eine Wartezeit von 4000us zwischen den Retries musste ich im Baustein 
setzen um es zuverlässig zu bekommen.

von Mike J. (linuxmint_user)


Lesenswert?

Im Freiland habe ich auch Entfernungen von 100 Metern hinbekommen, wenn 
dann aber etwas in der Sichtverbindung steht ist das Signal weg.

Im Haus bin ich eigentlich nur eine Wand weit gekommen.
Das Signal muss an den Wänden reflektiert werden, so dass auf der 
anderen Seite noch irgendwie eine Reflektion des Signals ankommt.

Ich kann an meiner nRF24L01+ Funkklingel mal ein Stück Draht als Antenne 
anlöten, vielleicht komme ich damit weiter.

Mein Empfänger stand bei meinem Test im Eingang des Hauses und den 
Sender hatte ich bis zum Gartentor (Sichtlinie) transportiert, danach 
muss ich 5 Meter um die Ecke zur Straße und da war das Signal dann erst 
mal weg, aber durch die Reflektion an der Hauswand des Nachbarn konnte 
ich dann ein paar Meter weiter wieder etwas empfangen.

Ich übertrage mit 250kbps und 1mW Sendeleistung ohne Acknowledge.


Defekte nRF24L01+ Module:
Die Chips sind manchmal nicht richtig am Zenterpad angelötet, also die 
Beinchen des MLF-Chips sind alle verbunden, aber das GND-Pad in der 
Mitte des Chips bekommt keine richtige Verbindung zu GND der Platine.

Wenn man durch die Durchkontaktierungen unter dem Chip etwas Flussmittel 
fließen lässt und mit Lötzinn diesen Bereich erwärmt, dann funktionieren 
diese Module wieder.

Man kann den Lötstoplack dazu auch vorsichtig etwas wegkratzen, bei 
älteren Versionen der Platine ist dort auf der Rückseite unter dem Chip 
eine verzinnte Fläche, aber das Problem trat bei denen trotzdem auf.
Scheinbar wurden diese Platinen zu kurz im Reflow-ofen verlötet so dass 
das Zinn unter dem Chip nicht richtig geschmolzen ist.

von The SphereX (Gast)


Lesenswert?

Also erst mal noch DANKE Euch allen für die Infos. Der Hinweis von 
Ulrich F. schaffte dann auch bei mir Abhilfe. Offensichtlich sind die 
nRF24L01+ Transceiver doch recht pingelig, was eine nicht absolut 
optimal geglättete Versorgungsspannung angeht, denn nachdem ich die zwei 
10 µF Elkos eingesetzt hatte, funktionierte dann endlich auch der 1 Mbps 
sowie 250 kbps Modus :-).

Inwiefern mich das jetzt auch näher an meinen Briefkasten heranbringt, 
muß ich erst noch testen. Jedenfalls funktionieren jetzt erst mal alle 
Betriebsmodi auf Kurzdistanz.

Grüße,
The SphereX

von Lutz (Gast)


Lesenswert?

Doofe Frage: Die maximale Sendeleistung ist eingestellt? Ich meine, die 
Resetwerte waren auf minimale Sendeleistung eingestellt.
Ansonsten soll ein bischen Antennentuning (Stück Draht) schon enorm 
was bringen.

von The SphereX (Gast)


Lesenswert?

Nee, der Reset-Wert für die Verstärkung ist "RF_PWR = 11" im Register 
"RF_SETUP", also Maximalleistung.

Aber wie gesagt, jetzt läuft's ja zumindest auf Kurzdistanz wie 
geschmiert, insbesondere nachdem ich dann mit 2,5 GHz auch noch eine 
Frequenz außerhalb der WLAN-Spezifikation eingestellt habe. Zum Tuning 
der Print-Antenne muß ich entsprechend bei meinen 30 Metern 
Zielreichweite dann hoffentlich auch nicht mehr greifen.

Grüße,
The SphereX

von Georg G. (df2au)


Lesenswert?

Die Print Antennen sind i.A. gut - bezogen auf die Fläche. Wenn du mehr 
willst, wird es ohne passende Meßtechnik schwierig.

von The SphereX (Gast)


Lesenswert?

Also meinst Du nicht, daß es im Notfall was bringt, wenn ich an die 
Print-Antenne einfach mal einen etwas längeren (evtl. gewickelten) Draht 
anlöte? Wie gesagt, wenn ich mir das Innenleben unserer Funkklingel so 
anschaue, sehe ich da nicht mal eine Print-Antenne, sondern nur einen 
ziemlich kurzen und dünnen Draht, der an der Platine angelötet ist. Das 
Teil sendet zwar auf 433,92 MHz, aber macht das bezüglich der 
notwendigen Antenne so einen großen Unterschied aus? Warum hat man sich 
bei den nRF24L01+ Transceivern eigentlich für das 2,4 GHz ISM 
entschieden? Vielleicht weil Anwendungen in diesem Band nicht 
genehmigungspflichtig sind?

Grüße,
The SphereX

von Georg G. (df2au)


Lesenswert?

Bei einer Antenne ist (wie so oft im Leben) Länge nicht alles. Wenn du 
es nicht schaffst, deine Antenne mit passendem Wellenwiderstand zu 
bauen, schlägt sie nur Schaum (bildlich).

Für 433MHz ist die Antennenfrage etwas entspannter, Faktor 4 größere 
Toleranz.

433MHz ist total voll mit diversem Müll. Mittlerweile ist aber auch 
2.4GHz schon heftig überlaufen. Allerdings kann man hier mit z.B. 
Frequenzsprungverfahren noch versuchen, etwas störunempfindlicher zu 
werden.

von Mike J. (linuxmint_user)


Lesenswert?

@  The SphereX (Gast)
Bei 2.4GHz wirkt die Strahlung schon fast wie Licht, das bedeutet dass 
diese Strahlung (auch bei 200mW im W-Lan Bereich) nicht so weit kommst, 
das bedeutet dass du jemanden der hinter einem Haus oder ein paar 
Büschen steht nicht mehr mit deinem Signal stören kannst.

Man will aber auch gar nicht so weit kommen, wenn du z.B. deinen Router 
so hinstellst dass der Garten und die Etagen im Haus abgedeckt werden 
dann ist das okay und vielleicht senkst du auch die maximale 
Sendeleistung in der FritzBox weil du nicht willst dass sich irgend 
jemand in dein W-Lan einklinken kann auch wenn er sehr weit entfernt 
ist.

Es gibt sogar dieses Projekt mit den weißen LEDs, da wird die 
Raumbeleuchtung dazu verwendet um mit dem Laptop zu kommunizieren.
Das ist die abgewandelte Form der Infrarot-Kommunikation, nur eben mit 
sichtbarem Licht.
Du gehst dann quasi über die Deckenbeleuchtung ins Internet.

Der Grund weshalb man das so macht ist ganz einfach, wenn man in einer 
größeren Stadt viele Internetkaffees hat und dann noch tausende 
W-Lan-Geräte hinzukommen ist trotzdem der ganze Frequenzbereich 
zugemüllt und jeder empfängt nur noch Störungen.
Wenn man normales Licht nutzt dann muss man nur das Rollo runter machen 
oder eine dunkle Gardine vorziehen, schon wird keiner mehr gestört und 
man hat selbst eine hohe Up-/Downloadrate ... solange man im Licht 
bleibt.

von The SphereX (Gast)


Lesenswert?

Na dann lasse ich mich ganz einfach mal überraschen, ob's jetzt bis zum 
Briefkasten reicht.

@ Mike J.

Die LiFi Geschichte klingt ja auch sehr interessant. Hat sich aber wohl 
noch nicht so wirklich durchgesetzt.

Grüße,
The SphereX

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.