Optimized high speed nRF24L01+ driver class documentation v1.4.11
TMRh20 2020 - Optimized fork of the nRF24L01+ driver
|
RF24 supports a variety of Linux based devices via various drivers. Some boards like RPi can utilize multiple methods to drive the GPIO and SPI functionality.
If SPI is not already enabled, load it on boot:
The default build on Raspberry Pi utilizes the included BCM2835 driver from the BCM2835 Library
Using pin 15(GPIO22) for CE, pin 24(GPIO8 commonly labeled as CE0) for CSN
Can use any available SPI BUS for CSN.
In general, use
for proper constructor to address the correct spi device at /dev/spidev<a>.<b>
Choose any GPIO output pin for radio CE pin.
This RF24 library, as of v1.4.9, uses the Linux kernel's Character Device API to interface with GPIO pins (AKA "lines" in kernel docs). Previous versions used the deprecated "sys fs" interface.
By default, this library attempts to use pins exposed via /dev/gpiochip0
. Some systems have multiple public-facing GPIO chips integrated (ie nVidia Jetson series). If your system exposes the desired GPIO pins via a different chip (ie /dev/gpiochip4
), then the RF24_LINUX_GPIO_CHIP
can be set to the correct value when compiling the library.
See the MRAA documentation for Raspberry Pi support
See the Raspberry Pi documentation about the GPIO pins
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-sclk | (23) |
6 | MOSI | rpi-mosi | (19) |
7 | MISO | rpi-miso | (21) |
8 | IRQ | - | - |
Based on the arduino lib from J. Coliz, the library was berryfied by Purinda Gunasekara then forked from github stanleyseow/RF24 to jscrane/RF24-rpi
Network lib also based on farconada/RF24Network