nRF24L01+ist ein kleines Funkmodul von NORDIC SEMICONDUCTOR. Die Preise der Module beginnen je nach Bezugsquelle und bestellter Anzahl ab 1€.
In diesem kleinen Howto möchten wir zeigen, wie man einen Raspberry Pi als nRF24L01+ Router einrichtet. Der Router empfängt Daten von einem oder mehreren Boards und sendet die Daten weiter an eine BayEOS Gateway.
Das nRF24L01+ Modul kann direkt mit der GPIO-Schnittstelle des PIs verbunden werden. Am einfachsten geht das mit 8 Breakboard-Kabeln mit Buchsen an beiden Enden.
nRF24L01+ (top view) Raspberry Pi
+-+-+ (header)
|8|7| 1: GND -> 20: GND
+-+-+ 2: 3.3V -> 17: 3.3v
|6|5| 3: CE -> 18: GPIO 24 (configurable)
+-+-+ 4: CSN -> 24: SPI_CS0
|4|3| 5: SCKL -> 23: SPI_SCLK
+-+-+ 6: MOSI -> 19: SPI_MOSI
|2|1| 7: MISO -> 21: SPI_MISO
+-+-+ 8: IRQ -> 22: GPIO_25 (configurable)
Die Kommunikation erfolgt über das Python Modul py-spidev: Zur Installation führen Sie bitte die folgenden Kommandos aus:
sudo apt-get install python-dev
wget https://github.com/doceme/py-spidev/archive/master.zip
unzip master.zip
cd py-spidev-master/
sudo python setup.py install
Als letztes stellen Sie sicher, dass in /boot/config.txt das SPI aktiviert ist.
dtparam=spi=on
Falls noch nicht erfolgt, fügen Sie bayeos repository zu /etc/apt/source.list hinzu
deb http://www.bayceer.uni-bayreuth.de/repos/apt/debian stretch main
und importieren Sie mit
sudo su
wget -O - http://www.bayceer.uni-bayreuth.de/repos/apt/conf/bayceer_repo.gpg.key |apt-key add -
den Schlüssel unseres Repositories.
Die Installation der Router-Software erfolgt mit
sudo apt-get update
sudo apt-get install python-bayeosgatewayclient python-nrf24 nrf24-router
Die Konfiguration des Routers erfolgt über die Datei /etc/nrf24-router.conf. Per default sendet der Router seine Daten an eine gateway auf localhost. Zum Starten des Routers geben Sie ein
sudo /etc/init.d/nrf24-router start
Möchte man, dass der Router bei jedem Neustart automatisch gestartet wird, führen Sie einen update-rc.d aus:
sudo update-rc.d nrf24-router defaults
Als Datenproduzenten nutzen wir einen eigens entwickelten LowPower Arduino. Dieser wird mit einer Knopfzelle betrieben. Der Sleep-Mode Stromverbrauch liegt bei 1-3µA. Je nach angeschlossenen Sensoren und Sendefrequenz sind Batterielaufzeiten von einem Jahr möglich.