Hallo liebe Community, ich versuche schon das ganze Wochenende ein Raspberry PI Model B mit einem RF24L01+ Modul zu verbinden und Daten zu senden sowie zu empfangen. Als Libary nutze diese RF24 (https://tmrh20.github.io/RF24/). SPI aktivieren: Wurde über "rasp-config" aktiviert. Habe dazu noch ein kleinen Test gefunden (https://gist.github.com/chrismeyersfsu/3317805), es konnten Daten gesendet und empfangen werden also denke ich das man den SPI-Port als Fehlerquelle ausschließen kann. Verkabelung des Modules an den RPI (Laut Lib. Dokumentation): PIN NRF24L01 RPI RPi -P1 Connector 1 GND rpi-gnd (25) 2 VCC rpi-3v3 (17) 3 CE rpi-gpio22 (15) 4 CSN rpi-gpio8 (24) 5 SCK rpi-sckl (23) 6 MOSI rpi-mosi (19) 7 MISO rpi-miso (21) 8 IRQ - - Installation der Libary: Download the install.sh file from http://tmrh20.github.io/RF24Installer/RPi/install.sh wget http://tmrh20.github.io/RF24Installer/RPi/install.sh Make it executable: chmod +x install.sh Run it and choose your options ./install.sh Run an example from one of the libraries cd rf24libs/RF24/examples_RPi make sudo ./gettingstarted Nachdem die Libary kompieliert wurde, kann man ein Beispiel aufrufen was direkt wür den RPI ist. Deren Ausgabe habe ich etwas hier aufgeführt, also wenn kein Modul angeschlossen ist kommen bei den "ADDR" nur 000, also so falsch kann es nicht angeschlossen sein, denn es wird ja was angezeigt. In diesen Menü kann ich dann wählen ob ich etwas senden möchte, wenn ich etwas sende habe ich folgende Ausgabe: Now sending... failed. (Ich denke das dieses failed dafür steht das nichts gesendet werde konnte, dies habe ich den Code entnommen, der hier zu sehen ist) Failed, response timed out. printf("Now sending...\n"); unsigned long time = millis(); bool ok = radio.write( &time, sizeof(unsigned long) ); if (!ok){ printf("failed.\n"); } ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO22 Clock Speed = 8 Mhz ================ NRF Configuration ================ STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 RX_ADDR_P0-1 = 0x65646f4e32 0x65646f4e31 RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6 TX_ADDR = 0x65646f4e32 RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00 EN_AA = 0x3f EN_RXADDR = 0x02 RF_CH = 0x4c RF_SETUP = 0x07 CONFIG = 0x0e DYNPD/FEATURE = 0x00 0x00 Data Rate = 1MBPS Model = nRF24L01+ CRC Length = 16 bits PA Power = PA_MAX ************ Role Setup *********** Choose a role: Enter 0 for pong_back, 1 for ping_out Ich habe versucht alles so gut wie möglich wiederzugeben ein kleines Pinout vom Modul habe ich noch mit angehängt, ich hoffe des es mit der Größe passt. Leider bin ich mit meinen Latein am Ende, und hoffe das ihr mit etwas helfen könnt. Es stehen zur verfügung: Multimeter 2x Raspberry pi 2x Module RF24L01+ Bauteile wie Kondensatoren Widerstände Leider kein Oszi
:
Bearbeitet durch User
Tut mir leid hab ich vergessen zu erwähnen, diese ist genau gleich aufgebaut. Auch ein Rpi mit dem gleichen Modul und selbigen Fehler.
Ich habe bisher nur RF24Network (welches auf RF24 aufbaut) benutzt. Ein schneller Test zeigt, dass bei mir das "GettingStarted" aus RF24 auch nicht funktioniert das "helloworld" Beispiel aus RF24Network jedoch schon. Ob der Fehler nun am Beispielprogramm oder etwas anderem liegt, kann ich dir leider nicht sagen. Aber vielleicht bringt dich diese Information ja ein wenig weiter. Viel Erfolg ;)
Wie sieht Deine Initialisierung aus? Bei mir funktionierte RF24 radio(RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); ansonsten habe ich die gleiche Library und die Anschlussbelegung; allerdings nutze ich den Teil mit dem "Mesh" vg Joachim
Daneke für die Tipps hat aber leider nichts gebracht, habe es mit der Network lib versucht leider auch innerhalb des Sendevorganges ein Fehler. Dann habe ich die Initialisierung mal so gelegt wie @jk, aber da bekomm ich leider "RF24 HARDWARE FAIL: Radio not responding, verify pin connections, wiring, etc.". Ich weiß echt nicht mehr weiter. Hab gestern auch einen älteren Kernel getestet glaub 3.18.7, dachte es liegt daran aber auch kein Erfolg.
Meine init. sieht so aus: RF24 radio(RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ);
ok; da sind unsere Hardwareeinstellungen etwas anders: meine (mit der eben beschriebenen Initialisierung) sind: CE -> 22 mosi -> 19 miso ->21 sck-> 23 csn-> 24 der CE-pin unterscheidet sich bei uns. Eigentlich müsste es mit Deiner Konfiguration dann auch klappen; aber das mag wirklich am Programm liegen. Ich kann morgen evtl einen zweiten rpi mit dem gettingstartet.cpp ausprobieren, ob das Programm überhaupt vernünftig funktioniert. Ansonsten habe ich mit dem Modulen relativ wenig Probleme; sie arbeiten auch mit arduinos mit der tmrh20 library vernünftig zusammen
Würde mich sehr freuen wenn du das für mich testen könntest, am besten mit einer aktuellen wheezy oder Jessi version von Raspian. Und der neusten RF24 Lib. Hast du nen anderen RPI oder warum unterscheiden sich die Pins? Ich hab das B Model.
bei mir läuft jessie; und das Modell ist auch B. Die Pins kann man ja wahlfrei nehmen (falls das Betriebssystem das nicht irgendwie anders nutzt); und bei mir hat es aus der Historie heraus mit dem PIN22 (=GPIO25) funktioniert. Die lib ist relativ aktuell; allerdings habe ich sie nicht über den Installer, sondern "zu Fuß" installiert. Sollte aber identisch sein.
jk schrieb: > ok; da sind unsere Hardwareeinstellungen etwas anders: > meine (mit der eben beschriebenen Initialisierung) sind: > CE -> 22 > mosi -> 19 > miso ->21 > sck-> 23 > csn-> 24 > der CE-pin unterscheidet sich bei uns. Eigentlich müsste es mit Deiner > Konfiguration dann auch klappen; aber das mag wirklich am Programm > liegen. Ich kann morgen evtl einen zweiten rpi mit dem > gettingstartet.cpp ausprobieren, ob das Programm überhaupt vernünftig > funktioniert. > > Ansonsten habe ich mit dem Modulen relativ wenig Probleme; sie arbeiten > auch mit arduinos mit der tmrh20 library vernünftig zusammen Habe das mal so versucht, aber leider auch das gleiche Ergebnis. FEHLER beim senden :(.
Hannes H. schrieb: > RF_CH = 0x4c Dein Problem könnte von dieser Einstellung herrühren. Bei meinen Modulen geht ab 30 (dezimal) nichts mehr. Liegt vermutlich an den lausigen Quarzen.
:
Bearbeitet durch User
Bin mir nicht sicher wo ich das einstellen kann, aber ich such mal in der gettingstarted danach und stell es unter 40. Danke :)
Hi, wie hast du das Modul verkabelt ? Steckbrett ? Meine Erfahrung mit dem Modul war das wenn die Kabelzulang oder man ein Steckbrett verwendet das ganze nicht stabil funktioniert. Da die initialisierung bzw. das auslesen des Modules klappt vermute ich eher in diese Richtung. Versuch doch mal die Übertragung mit kleinster Geschwindigkeit. Aktuell nutzt du ja 1MBPS, 125kBPS ist glaube ich die kleinst mögliche Einstellung. Das die RX und TX Adresse gleich ist macht nix ??? (Habe meinen Code gerade nicht hier) >RX_ADDR_P0-1 = 0x65646f4e32 0x65646f4e31 >TX_ADDR = 0x65646f4e32 Grüße, Mario
Hab es ohne Steckbrett verkabelt, aber mit ca 25cm langen Kabeln. Ich werde mal nach den RF_Ch und den MBPS schrauben wenn ich finde wo. Danach wenn es nicht geht Kabel kürzen. Das die Adresse gleich ist bei RX TX gleich ist kann ich mir jetzt nicht erklären.
Hannes schrieb: > stell es unter 40. Ich würde mit 2 anfangen. Wie bereits oben schon erwaehnt: ab 30 geht bei mir nichts mehr.
Hannes schrieb: > aber mit ca 25cm langen Kabeln. Bei mir sind die Dinger ebenfalls mit ca. 25cm langen Kabeln an ein Discovery Board angeschlossen. Keinerlei Probleme.
Ich hatte gestern versprochen, meine beides raspberries mit gettingstarted zu verbinden. Nun, das merkwürdige ist, dass, obwohl beide Systeme gleich konfiguriert sind, das Senden nur von pi_1 nach pi_2 funktioniert; starte ich das Programm neu und nehme die umgekehrte Richtung geht es nicht mehr..... Da muss ich mal nachsehen, warum das passiert; momentan bin ich ratlos Ansonsten: ich hatte es auch eine Zeitlang auf breadboards aufgebaut; jetzt hängen die Funker an ca. 20cm langen Kabeln am pi. Wie schon gesagt, alles relativ problemlos
Also als erstes habe ich versucht an den Übertragungsrate etwas zu ändern mit der kleineren bekahm ich auch nur beim senden ein Fehler, bei der ganz kleinen Rate wurde irg. wie das Modul garnicht mehr erkannt, kann mir nicht vorstellen wie das in zusammenhang liegen kann. RF_CH konnte ich bis jetzt nicht ändern, ich habe bis jetzt nicht gefunden wo oder wie ich das festsetzen kann. Habe noch probiert an das Modul einen 22uF Elko dran zu hängen aber auch kein Erfolg damit gehabt das eine änderung eintritt.
Konnte den Channel ändern siehe hier meine Detailausgabe: Leider hier auch keine Besserung, kannst du mir mal deine Ausgabe von den RPI geben der funktioniert mit dem Modul? ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO22 Clock Speed = 8 Mhz ================ NRF Configuration ================ STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 = 0x65646f4e32 0x65646f4e31 RX_ADDR_P2-5 = 0x33 0xce 0x3e 0xe3 TX_ADDR = 0x65646f4e32 RX_PW_P0-6 = 0x20 0x20 0x20 0x20 0x20 0x20 EN_AA = 0x3f EN_RXADDR = 0x3e RF_CH = 0x02 RF_SETUP = 0x0f CONFIG = 0x0e DYNPD/FEATURE = 0x00 0x00 Data Rate = 2MBPS Model = nRF24L01+ CRC Length = 16 bits PA Power = PA_MAX Now sending... failed. Failed, response timed out. Now sending... failed. Failed, response timed out.
Empfänger: ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO25 Clock Speed = 8 Mhz ================ NRF Configuration ================ STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 = 0x65646f4e32 0x65646f4e31 RX_ADDR_P2-5 = 0x33 0xce 0x3e 0xe3 TX_ADDR = 0x65646f4e32 RX_PW_P0-6 = 0x20 0x20 0x20 0x20 0x20 0x20 EN_AA = 0x3e EN_RXADDR = 0x3e RF_CH = 0x4c RF_SETUP = 0x07 CONFIG = 0x0e DYNPD/FEATURE = 0x00 0x00 Data Rate = 1MBPS Model = nRF24L01+ CRC Length = 16 bits PA Power = PA_MAX ************ Role Setup *********** Choose a role: Enter 0 for pong_back, 1 for ping_out (CTRL+C to exit) >0 Role: Pong Back, awaiting transmission Got payload(4) 4293148516... Got payload(4) 4293149719... Sender: ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO25 Clock Speed = 8 Mhz ================ NRF Configuration ================ STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0 RX_ADDR_P0-1 = 0x65646f4e31 0x65646f4e32 RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6 TX_ADDR = 0x65646f4e31 RX_PW_P0-6 = 0x20 0x20 0x00 0x00 0x00 0x00 EN_AA = 0x3f EN_RXADDR = 0x02 RF_CH = 0x4c RF_SETUP = 0x07 CONFIG = 0x0e DYNPD/FEATURE = 0x00 0x00 Data Rate = 1MBPS Model = nRF24L01+ CRC Length = 16 bits PA Power = PA_MAX ************ Role Setup *********** Choose a role: Enter 0 for pong_back, 1 for ping_out (CTRL+C to exit) >1 Role: Ping Out, starting transmission Now sending... Failed, response timed out. Die Response fehlt; aber das stört mich erst mal nicht. Im Programm muss auch noch die Variable radioNumber gesetzt werden if(myChar == '0'){ radioNumber=0; entsprechend 1 für den else-Zweig
Aber bei dir kommt dieser Fehler nicht beim senden, das versteh ich einfach nicht warum das nicht auch bei mir geht. Dumm gesagt aber kannst du evtl. deine gettingstartet.cpp hochladen und mir deine genaue verkabelung mitteilen, dann mach ich es ganau wie du. Was anderes fällt mir gerade nicht mehr ein :(.
Ich wollt nur kurz los werden das ich erstaunt bin wie hier alle meinem Fehler so annehmen Danke! Ich versuch es weiter..
Habe es mit deiner gettingstartet zum laufen bekommen kann jetzt nicht direkt beurteilen an was es alles gelegen haben könnte. Werde mich noch etwas damit beschäftigen müssen um ein brauchbaren Sketch entwickeln zu können für mein Attiny. Aber besten Dank an alle!
dann poste mal, was es mit dem attiny gegeben hat. Ich hatte es zwar schon mal mit dem attiny84 geschafft, nach einer Rechnerneuinstallation aber die passenden libraries (SPI) resp. die Controllerdefinitionen nicht mehr gefunden; was immer einen Fehler beim Übersetzen/Linken lieferte
Bin noch am bastelln, aber hab komplett neu angefangen ohne dieses hin und her gepinge. Einfach nur dauer empfangen und dauer senden. Werde wohl heut noch eine ganze Weile senden.
Läuft super mit dem ATtiny, bin begeistert. Es werden Temperatur sowie die Spannung zum Empfänger geschickt und in eine Datenbank gespeichert. Sitze gerade an der optimierung der Sketches, um evtl. hier und da noch ein paar mA zu sparen. Betreibe das RF-Modul mit 3V also 2AA Batterien, es wundert mich da vom Modul mindestens 3,3-3,6 gefordert werden das es überhaupt gehtS.
Hannes schrieb: > es wundert mich da vom Modul mindestens 3,3-3,6 gefordert werden das es > überhaupt gehtS. nRF24L01 hat ein supply range von 1,9V - 3,6V. Aber wenn Du Batterien hast, achte daruf, dass die Angabe von 900nA im Powerdown-Mode von den China-Imitaten nicht eingehalten wird. Mit meinen Modulen komme ich bei weitem nicht auf diese Werte und habe deshalb ein Highside-Switch, mit dem ich das Modul ganz abschalte. Darf ich fragen, welchen Kanal Du eingestellt hast?
Ich werd heut noch ein paar Messungen machen, habe gestern nur mal grob durchgemessen und den Sleepmodus für den Attiny getestet. Den Kanal hab ich jetzt nicht im Kopf könnt ich später erst berichten.
Für den Fall das mein Modul im Powerdown Modus auch so viel schluckt, wäre es auch möglich es über ein Transistor zu deaktivieren?
Also heute sind die Module aus China gekommen, gehen leider nicht mit meiner Konfiguration.
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.