Ding:2.4GHz Funk mit dem nRF24L01+

Aus FabLab Nürnberg Wiki
Wechseln zu: Navigation, Suche
Foto
nrf.jpg
flattr.png
Basisdaten
Status eingeschränkt nutzbar
Schöpfer Don (Diskussion)

nRF24L01+

Nachdem es den nRF24L01+ in der Bucht oft für < 1,5€ gibt und auch noch Arduino Libs vorhanden sind ist der Baustein ausgesprochen interessant für Basteleien.

Diese Seite soll dem Erfahrungsaustausch dienen

Das Datenblatt: http://www.nordicsemi.com/kor/nordic/download_resource/8765/2/8827113

Das Library: https://github.com/stanleyseow/RF24

Anleitung dazu: http://maniacbug.github.io/RF24/classRF24.html#a343e5d23477181011dea030fafb1954f

Ein interessanter Artikel: http://www.mikrocontroller.net/articles/NRF24L01_Tutorial

Ein Scanner für 2.4GHz http://forum.arduino.cc/index.php?topic=54795.0


Bisherige Erfahrungen:

Mit 3V betreiben, NICHT 5V. Die Datenleitungen sind 5V sicher.

Für Noobs like me: SPI hat beim Leonardo eigene Pins

Das Beispiel GettingStarted.pde scheint gut zu laufen, "t"ansmit und "r"eceive über die Serielle schicken nicht vergessen. Beim Leonardo muss man scheinbar erst "r" und dann "t" senden. (sch.. Serielle)

Rainer hat den "poor mans 2.4GHz scanner" zum laufen gekriegt http://forum.arduino.cc/index.php?topic=54795.0


Die Reichweite der Module ohne Antenne (bzw mit dem Kupferhaken auf der Platine) ist auch in verpesteter Umgebung (FabLab) getestet 10m, weiter muss noch ausprobiert werden. (natürlich mit Funkwellen verpestet)

Laut http://www.mikrocontroller.net/articles/NRF24L01_Tutorial hat der Chip Speicher für 3x Payload Empfang.... sexy! Mehrfach auslesen (muss noch getestet werden)


Ideen

Ich will Variablen und ihre Werte übertragen, der Payload ist 32Byte, also dachte ich, wegen der Übertragungssicherheit den Namen und Wert der Variable zu einem String zusammenzufassen und dann zu übertragen. also etwa so:
27 Byte Name der Variable (sollte reichen)
1 Byte Art der Variable (Int, Float, ....)
4 Byte Variablenwert
So sollte auch bei verlorenen Paketen die Daten recht brauchbar bleiben. Ist das ok, oder gibts ne bessere Idee? Was dagegen spricht: angeblich ist bei kleinerem Payload die Übertragung sicherer. Evtl. mit 16 Byte? 12 Byte für den Namen, 4 Byte für den Wert, es gibt nur int? Zum wieder auseinander dröseln: gibt es eine elegantere Methode als charAt()? ich finde kein leftstring oder so ein Zeug..