Hallo allerseits
Ich habe ein kleines Problem. Ich möchte Daten von meinem Arduino an
meinen Raspberry Pi senden mit einem NRF24L01 Funkmodul.
Die Kommunikation zwischen zwei Arduinos funktioniert einwandfrei. Auch
der "GettingStarted" Sketch funktioniert tadellos mit Arduino und Pi.
Wenn ich anschliessend meinen Code auf den Arduino lade und auf dem Pi
überprüfen möchte, ob es läuft, dann klappt das ebenfalls. ABER, als ich
den Pi ausgeschaltet und zu einem späteren Zeitpunkt wieder angeschalten
habe und mir den "Datenstrom" der vom Arduino gesendet wird, ansehen
wollte, ging das nicht mehr (es findet den Sender nicht).
Ich bin mir jetzt nicht sicher wo genau das Problem liegt. Ich habe
bereits einige Websites durchforstet, bin aber auf keine Lösung des
Problems gestossen. Was ich bereits mehrfach nachkontrolliert habe, ist,
dass die Anschlüsse stimmen. Das Problem kann also nicht dort liegen,
sonst hätte es zuvor auch nicht funktioniert.
Es scheint, als könnte er die Pipe nicht finden. Hatte da mal wer schon
ähnliche Vorkomnisse?
Hier noch der Arduino Sketch:
Der Arduino ist lediglich per USB Kabel an einer Steckdose
angeschlossen, wie auf der Pi. Den Pi steuere ich übers Heimnetzwerk mit
Putty an und die NRF24 Module sind direkt am Arduino/Pi angeschlossen
mit Kabeln von ca. 10cm länge.
Freundliche Grüsse
DerFragende
Hier noch ein Bild der Ausgabe von radio.printDetails(). Was ich hier
auch sehr merkwürdig finde, ist dass was bei TX_ADDR angezeigt wird.
Woher kommt plötzlich diese Adresse? Könnte sein, dass ich beim
Ausprobieren mal die benutzt habe, aber wie kann die jetzt noch da
rumschwirren?
Hat denn der DerFragende auch schön brav Abblock-Kondensatoren
verwendet wie z.B. in
Beitrag "NRF24L01+ test program for Arduino Uno"
beschrieben?
Du sagst das braucht es nicht? Gut, dann braucht es sie nicht.
Nein, habe ich noch nicht, die Kondensatoren sind auf dem Weg. Es
verwundert mich jedoch trotzdem, dass es zwischen zwei Arduinos ohne
ging, auch über längere Distanzen und mit dem Pi macht es nach einem
Reboot Schwierigkeiten.
Du gehts also davon aus, dass die fehlenden Kondensatoren das Problem
sind?
DerFragende schrieb:> Du gehts also davon aus, dass die fehlenden Kondensatoren das Problem> sind?
Nein. Wie soll ich das wissen? Ich konnte ja deine Schaltung
nicht durchmessen welche Störungen auftreten.
Ich gehe davon aus dass fehlende Kondensatoren eine beträchtliche
potentielle Fehlerquelle darstellen.
DerFragende schrieb:> Du gehts also davon aus, dass die fehlenden Kondensatoren das Problem> sind?
Ich sage:
Je länger die Kabel oder/und je schwächer die Versorgung, desto
wichtiger die Kondensatoren.
DerFragende schrieb:> Woher kommt plötzlich diese Adresse?
Wenn es nicht die default Adressen sind, dann wirst du sie da wohl rein
geschrieben haben.
Oder?
Arduino F. schrieb:> Je länger die Kabel oder/und je schwächer die Versorgung, desto> wichtiger die Kondensatoren.
Ok, in dem Fall werde ich das mit den Kondensatoren ausprobieren, sobald
sie ankommen. Ich habe mir 100uF 16v Kondensatoren bestellt. Zuhause
habe ich gerade nur 22pF 50V.
Arduino F. schrieb:> Wenn es nicht die default Adressen sind, dann wirst du sie da wohl rein> geschrieben haben.> Oder?
Ja, irgendwann beim ausprobieren. Ich hab jetzt dem Arduino Sketch noch
folgendes hinzugefügt, obwohl ich eigentlich nichts lesen will:
1
radio.openReadingPipe(0,pipes[0]);
und dem Pi Code:
1
radio.openWritingPipe(pipes[0])
Dies hat nun die TX_ADDR zu 0xABCDABCD71 geändert. Aber er empfängt
immernoch nichts.
DerFragende schrieb:> Ich habe mir 100uF 16v Kondensatoren bestellt. Zuhause> habe ich gerade nur 22pF 50V.
Obwohl ich dich auf eine zuverlässige Quelle hingewiesen
habe scheint dies nicht zu reichen.
Offensichtlich muss ich dich auch noch darauf hinweisen
dass du die Schaltung lesen und verstehen sollst.
Aber du reihst dich damit nahtlos ein in die Masse der
Maker die auf Minimalismus stehen. Auch scheinbar
seriöse Bauvorschläge von Arduino-Schaltungen vermeiden
es mit grosser Ignoranz diesen "unnötigen Ballast"
in geeigneter Weise vorzusehen.
Arduinoquäler schrieb:> Obwohl ich dich auf eine zuverlässige Quelle hingewiesen> habe scheint dies nicht zu reichen.
Ich weiss es nicht. Ich werde es erst mit den Kondensatoren ausprobieren
müssen. Ich werde dir dann aber ein Feedback geben, ob deine Schaltung
funktioniert :P
Und falls du dich wunderst, wieso ich 200uF bestellt habe, an einer
anderer Stelle (im Internet) wurde das gesagt, mit dem Hinweis es seie
dann wie "hardwired". Dies war jedoch bevor ich hier ein neues Thema
eröffnet habe :)
> Offensichtlich muss ich dich auch noch darauf hinweisen> dass du die Schaltung lesen und verstehen sollst.
Habe ich und in der Tat habe ich eine Frage. Was ich nicht verstehe,
wieso einen 10uF und einen 100nF Kondensator? Damit es keine
unzulässigen Spannungsschwankungen gibt, OK. Aber wie muss ich mir das
genau vorstellen? Hast du das irgendwie ausgerechnet oder einfach
herumprobiert bis es lief?
> Aber du reihst dich damit nahtlos ein in die Masse der> Maker die auf Minimalismus stehen. Auch scheinbar> seriöse Bauvorschläge von Arduino-Schaltungen vermeiden> es mit grosser Ignoranz diesen "unnötigen Ballast"> in geeigneter Weise vorzusehen.
Nein, einfach ohne dem Material kann ich auch deine Schaltung nicht
nachbauen. Es leben nicht alle im Baumarkt bzw. haben alle Teile bei
sich Zuhause. Ausserdem, vielleicht gibt es ja auch andere
Lösungsansätze ausser deiner?
Noch ein Fettnapf zum Hineintreten speziell beim NRF24:
Der Baustein hat keinen Reset-Pin. Da bedeuted: alles
was man in die diversen Register hineingeschrieben hat
(inklusive Fehlern) bleibt darin bestehen solange der
Chip unter Versorgungsspannung steht. Erst ein Power-
Zyklus versetzt den Chip wieder in einen vergleichbaren,
reproduzierbaren Ausgangszustand.
Aufgrund dieses Sachverhalts können aneinandergereihte
Versuche mit leicht veränderten Sketches in den absoluten
Dschungel führen.
Auch Störungen auf der Betriebsspannung sowie auf
unsauberen SPI-Leitungen können zu solchen undefinierten
Zuständen führen.
DerFragende schrieb:> Aber wie muss ich mir das genau vorstellen?
Ein Elko (10uF) dient für die Stützung von starken
Spannungseinbrüchen hervorgerufen durch schwankende
Sstromaufnahme des Chips. Und zur zusätzlichen
Stabilisierung der "Quelle", in diesem Fall ein Arduino
oder ein RapBerry.
Ein keramischer Kondensator 100nF dient zur Glättung
von schnellen Pulsen die entweder durch das Arbeiten
des Chips verursacht werden oder ebenfalls auf der
Versorgungsspannung vom steuernden Controller kommen
können. Ein Elko kann dies nicht leisten.
Man beachte auch die Anordnung der Kondensatoren. Nicht
zufällig ist der keramische Kondensator ganz nahe am
NRF24, der Elko sollte auch (zumindest) in der Nähe sein.
DerFragende schrieb:> Ausserdem, vielleicht gibt es ja auch andere> Lösungsansätze ausser deiner?
Da bin ich mir ganz sicher. Die vielen Maker die ohne
auskommen beweisen es. HTML ist geduldig.
Arduinoquäler schrieb:> Der Baustein hat keinen Reset-Pin. Da bedeuted: alles> was man in die diversen Register hineingeschrieben hat> (inklusive Fehlern) bleibt darin bestehen solange der> Chip unter Versorgungsspannung steht. Erst ein Power-> Zyklus versetzt den Chip wieder in einen vergleichbaren,> reproduzierbaren Ausgangszustand.
Heisst das, wenn ich den Arduino ausstecke, reseted er diese Register
nicht? Er würde dann ja nicht mehr unter Versorgungsspannung stehen.
Arduinoquäler schrieb:> Aufgrund dieses Sachverhalts können aneinandergereihte> Versuche mit leicht veränderten Sketches in den absoluten> Dschungel führen.
Das würde die merkwürdige Adresse erklären.
Danke fürs erklären der beiden Kondensatoren! :)
Die Parallelschaltung eines Kondensators mit relativ hoher Kapazität und
eines mit geringer Kapazität ist ein beliebtes Verfahren diesen zu
"verbessern".
Kondensatoren mit hoher Kapazität haben meist schlechte Werte, bei
höheren Frequenzen. Keramischen Kondensatoren geht schnell die Puste
aus, wenn es um energetisch höhere Ansprüche geht. Also Teamwork ist
alles.
Habe das schon in Schaltungen - nicht von mir - mit drei Typen gesehen.
2 X 22000µ + 1µ + 47n. Sozusagen etwas für alle.
Sebastian S. schrieb:> Die Parallelschaltung eines Kondensators mit relativ hoher Kapazität und> eines mit geringer Kapazität ist ein beliebtes Verfahren diesen zu> "verbessern".>> Kondensatoren mit hoher Kapazität haben meist schlechte Werte, bei> höheren Frequenzen. Keramischen Kondensatoren geht schnell die Puste> aus, wenn es um energetisch höhere Ansprüche geht. Also Teamwork ist> alles.>> Habe das schon in Schaltungen - nicht von mir - mit drei Typen gesehen.> 2 X 22000µ + 1µ + 47n. Sozusagen etwas für alle.
Auch dir danke für die gute Erklärung :)
Ich werde hier ein Update posten, sobald die Bauteile angekommen sind
und ich es ausprobiert habe.