Hallo, ich verzweifel nochmal an den Dingern, die zu meinem Lieblingsspielzeug gehören. Habe 10 bekommen und gleich in die Platinen gesteckt, die nachweislich miteinander reden können. Die CPU prüft das Vorhandensein der Module,liest einige Register aus und beschreibt sie testweise. Aber was der eine sendet kriegt der andere nicht mit ! Nur 3 von 10 Module sind im Empfänger ok. Meine Befürchtung: Die Module verstehen sich nicht, weil die Kanäle nicht ganz synchron sind. Ist das realistisch? Der Master funkt auf Kanal 50, also sind die Slaves auch auf 50 eingestellt. Logisch sind die Module alle in Ordnung. Hat dazu jemand eine idee? Gruss, Christian
Viellicht einfach die falschen erwischt..... Der Run auf die nRF24L01 hat einiges an Getöse verursacht. Viele Anbieter von gefälschten Modulen. Als nRF24L01 angepriesene, hinter welchen sich ganz andere Bausteine verbergen. Irrtümer in den Produktbeschreibungen der Anbieter. Alles dieses, und sicherlich noch mehr. Zeige doch mal das Angebot, oder ein Foto von den Dingern.
Chris J. schrieb: > Meine Befürchtung: Die Module verstehen sich nicht, weil die Kanäle > nicht ganz synchron sind. Ist das realistisch? Kann sein, die Frequenzen der einzelnen Module liegen durch die Quarztoleranzen ein paar 100KHz auseinander, das geht aber meiner Erfahrung nach nur soweit dass die Emfindlichkeit leidet. Hast du denn schön brav für eine DC- und HF-Abblockung mit reichlich Kondensatoren gesorgt? Da hapert es oft .... Nach dem Motto: also bei mir geht's. Im Englischen: ... works on my machine.
Die Module bei ebay sind alle "gefälscht", es gibt wohl gar keine echten Nordic mehr, weil die rund 5 Euro/Chip kosten. Und geblockert habe ich nur mit dem üblichen 10uF an dem VCC. Manche Module überziehe ich auch mit Kupferfolie über dem Chip, die ich erde. Damit hat man bei den LNA Modulen mehr an Reichweite. Allerdings fiel mir auf, als ich mit diesem spziellen Bit einen Scanner baute, dass die Zahlen der Frequenzen auch nicht genau stimmen. Ist recht easy, man wechselt im PRX Mode alle 200us (laut Datenblatt) die Frequenz und prüft dieses CARRIER DETECT Bit. Ist es 1 addiert man in einem Array 0-128 eine 1 auf der Stelle der Frequenz. Nach so 10 Minuten hat man im Umfeld so ziemlich alles abgedeckt was so an wlan sendet. Die Arraystelle mit der größten Zahl ist dann die Mittenfrequenz und die war eben 49 und nicht 50. Das Einzige was mir noch einfällt ist dass die beiden sich gegenseitig erst ausmessen, der Slave also solange scannt bis er sauber das Paket kriegt. Im datensatz an den Slave steht die Anzahl Retries (OBSERVE_TX:PLOS_CNT) drin, die der Master bis dahin gemacht hat. Der Master muss nämlich teilweise mehrfach senden (die 15 Retrys mit 4ms Pause) reichen nicht aus), damit er sein ACK kriegt.
Chris J. schrieb: > Nur 3 von 10 Module sind im Empfänger ok. Ich hatte mir damals eine UART-Brücke damit aufgebaut um zu testen ob alles läuft. Einige Module liefen einfach nicht, erst nachdem ich diese nachgelötet hatte liefen sie. Anleitung: Beitrag "Re: nRF24L01(+) Problem & Fragen" Einfach mal testen, vielleicht sind sie nur falsch verlötet worden. Wenn nicht, dann probiere einfach noch einen 100nF Kerko an den Pins des Steckers zu platzieren. Ich habe dort sogar teilweise einen 47µF/6.3V Elko befestigt um ganz sicher zu gehen.
Chris J. schrieb: > Die Module bei ebay sind alle "gefälscht", es gibt wohl gar keine echten > Nordic mehr, weil die rund 5 Euro/Chip kosten. Welche Module genau hast Du wo gekauft? Magst Du Bilder hochladen, auf denen man auch den Chip gut erkennt? > Allerdings fiel mir auf, als ich mit diesem spziellen Bit einen Scanner > baute, dass die Zahlen der Frequenzen auch nicht genau stimmen. Ist > recht easy, man wechselt im PRX Mode alle 200us (laut Datenblatt) die > Frequenz und prüft dieses CARRIER DETECT Bit. Ist es 1 addiert man in > einem Array 0-128 eine 1 auf der Stelle der Frequenz. Nach so 10 Minuten > hat man im Umfeld so ziemlich alles abgedeckt was so an wlan sendet. Die > Arraystelle mit der größten Zahl ist dann die Mittenfrequenz und die war > eben 49 und nicht 50. Interessanter Ansatz. Würdest Du erläutern, was 49 und 50 bedeutet? Wäre es nicht besser, verschiedene Empfänger gegen den selben nrf24-Sender zu testen? > Das Einzige was mir noch einfällt ist dass die beiden sich gegenseitig > erst ausmessen, der Slave also solange scannt bis er sauber das Paket > kriegt. Wie kommst Du darauf? Eine solche Funktion "gegenseitig ausmessen" ist nirgends beschrieben, oder?
Lars R. schrieb: > Würdest Du erläutern, was 49 und 50 bedeutet? Wäre > es nicht besser, verschiedene Empfänger gegen den selben nrf24-Sender zu > testen? Das ist der Frequenz-Offset in MHz zur Basis 2400 MHz, profan auch Kanal genannt. Genau genommen kann man mit den NRF24 von 2400 bis 2527 MHz übertragen, in 1 MHz Schritten. Lars R. schrieb: > Wie kommst Du darauf? Eine solche Funktion "gegenseitig ausmessen" ist > nirgends beschrieben, oder? Das können die Module alleine nicht, aber eine "Intelligenz" auf zwei Controllern könnte das leisten.
Lars R. schrieb: > Welche Module genau hast Du wo gekauft? Magst Du Bilder hochladen, auf > denen man auch den Chip gut erkennt? Nee, fehlt mir der Nerv jetzt zu einen Makroaufsatz auf meine DSLR zu schrauben, sind zu klein. 0815 Zeugs halt, 10 Stück kosten 5,95 beim Schlitzauge. Ich habe das grad alles noch mal getestet. Sie funktionieren aber sie haben nur eine Reichweite von 2-3m. Also die, von denen ich erst sagte dass sie defekt sind. Die Sache mit dem Vermessen ist nur für arme Leute, da kein echtes CD Signal gibt mit einer Anzeige der Feldstärke. Nur 1 Bit, was zeigt, dass da überhaupt was ist. Aber auch mit 1 Bit kann man über eine Reihe Messungen eine statistische Aussage treffen. Und das sind natürlich Kanäle. PS: Der Empfänger eines der guten Chips reagiert auch wenn ich den Empfang statt auf Kanal 50 auf 49 einstelle. Auf 48 allerdings nicht mehr. Also scheint das alles doch zu streuen. 2 benachbarte Kanäle lassen sich demzufolge nicht trennen. Habe mir das aber schon gedacht. Hier die Scan Funktion
1 | uint8_t RF_ScanChannels() |
2 | {
|
3 | uint8_t channels[128] = {0,}; |
4 | uint16_t treffer = 0; |
5 | |
6 | RF_PowerUpRx(); |
7 | |
8 | while (1) { |
9 | for (int i = 0; i < 128; i++) { |
10 | RF_SetChannel(i); |
11 | delayUS_DWT(200); |
12 | if (RF_ReadRegSingle(NRF24L01_REG_RPD) & 0x01) { |
13 | treffer++; |
14 | channels[i]++; |
15 | RF_FlushRX(); |
16 | CLEAR_STATUS(); |
17 | }
|
18 | }
|
19 | }
|
20 | return 0; |
21 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.