Hallo, Ich habe ein großes Problem mit dem Funkmodul. Aufgrund der Benutzung eines ESP8266 in verbindung eines Nrf24l01 moduls benötige ich eine Neue Library für meinen AVR (atmega328). Für meinen AVR benutzte ich folgende Library: https://github.com/kehribar/nrf24L01_plus Mit der Funktioniert alles, ich kann von einem AVR zum anderen Senden. Für den ESP8266 habe ich folgende Library verwendet: https://github.com/nRF24/RF24 Dort kann ich auch problemlos vom einem ESp8266 zum anderen meine Daten verschiken. Wenn ich beide zusammen benutzen möchte, funktioniert dass nicht. Ich habe schon mehr als 4 Tage in Fehlersuche gesteckt und komme überhaupt nicht weiter, habe auch schon verschiedene Librarys auf beiden Geräten versucht ohne erfolg. Hoffe das mir bei diesem Problem jemand weiterhelfen kann
Hallo, um zwei Geräte am selben Mikrocontroller ansteuern zu können, brauchst Du getrennte Chip-Select-Leitungen. Ebenso müssen die beiden Software-Teile die beiden Pins getrennt ansprechen. Mit freundlichem Gruß
> um zwei Geräte am selben Mikrocontroller ansteuern zu können, brauchst > Du getrennte Chip-Select-Leitungen. Ebenso müssen die beiden > Software-Teile die beiden Pins getrennt ansprechen. Nein, beide Mikrocontroller haben ein eigenes Funkmodul. Einer Sendet die Daten aus (AVR) und einer Empfängt diese daten über Funk (ESP8266) mfg
Christian S. schrieb: > brauchst Du getrennte Chip-Select-Leitungen. Ich wüsste jetzt nicht dass man einen ESP8266 mit einem Chip Select bedienen müsste.
> Ich wüsste jetzt nicht dass man einen ESP8266 mit einem > Chip Select bedienen müsste. Muss mann auch nicht, Das erledigt alles die Arduino-Lib. Nur wenn ich die Payloads mit der AVR-Lib empfangen oder senden möchte, kommt bei beiden nichts an. Ich denke, das man nur die richtige Config der Module braucht, denn die Software läuft ziemlich gleich. Allerdings kenne ich micht nicht mit den Registern aus. Deswegen wäre es nett, wenn sich jemand mal das schauen würde. mfg
Steh auf dem Schlauch schrieb: > Für den ESP8266 habe ich folgende Library verwendet: > https://github.com/nRF24/RF24 > Dort kann ich auch problemlos vom einem ESp8266 zum anderen meine Daten > verschiken. So so. Du verwendest eine NRF24 Library um den ESP8266 anzusteuern. Das grenzt an schwarze Magie. Bist du auch sicher dass du weisst wovon du hier überhaupt redest? Dieses Posting lässt vermuten dass du generell auf dem Schlauch stehst.
NRF senden und ESP hat einen NRF-Protokolstack? Oder ESP bedient NRF-Modul? Falls letzteres, benutzen die nicht beide das gleiche Frequenzband und kann der NRF-Empfänger mit dem daneben liegenden WLAN-Sender umgehen?
Carl D. schrieb: > Falls letzteres, benutzen die nicht beide das gleiche Frequenzband und > kann der NRF-Empfänger mit dem daneben liegenden WLAN-Sender umgehen? Zumindest scheint es trotz aller Bedenken zu funktionieren. Auch WLAN macht mal Sendepausen ... Steh auf dem Schlauch schrieb: > Dort kann ich auch problemlos vom einem ESp8266 zum anderen meine Daten > verschiken.
Vermutlich konfigurieren die beiden Libraries den Chip unterschiedlich, so dass sie sich inkompatibel zueinander verhalten. Kannst Du nicht auf beiden Geräten die gleiche Library benutzen? Beim kurzen Überfliegen des Codes ist mir z.B. folgendes aufgefallen: https://github.com/nRF24/RF24/blob/master/RF24.cpp
1 | // Reset NRF_CONFIG and enable 16-bit CRC.
|
2 | write_register( NRF_CONFIG, 0x0C ) ; |
https://github.com/kehribar/nrf24L01_plus/blob/master/nrf24.c
1 | // CRC enable, 1 byte CRC length
|
2 | nrf24_configRegister(CONFIG,nrf24_CONFIG) |
https://github.com/kehribar/nrf24L01_plus/blob/master/nrf24.h
1 | #define nrf24_CONFIG ((1<<EN_CRC)|(0<<CRCO))
|
Einer benutzt also 16 Bit CRC, der andere standardmäßig 8 Bit. Probier mal bei beiden 16 Bit zu benutzen:
1 | #define nrf24_CONFIG ((1<<EN_CRC)|(1<<CRCO))
|
Vielleicht ist das schon das Problem. Kann aber gut sein, dass es noch mehr relevante Unterschiede gibt. Da hilft nur Code und Datenblatt des Chips zu studieren. Wenn Du durch Lesen bzw. Debuggen des Codes nichts findest, müsstest Du eine Ebene tiefer ansetzen und vergleichen, wie per SPI mit dem Chip kommuniziert wird.
Versuch mal diese Bibliothek: https://github.com/nRF24/RF24 Die sollte auf dem Arduino sowie dem ESP8266 gleichermassen funktionieren.
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.