In my process of building a Wireless Sensor Network, I obtained a few low cost RF module from Inhaos that are compatible with Nordic Semiconductor nRF24L01. My plans are to have these low cost RF modules replaces the wires for my sensor network on Arduino and connect them to Raspberry Pi as the IP gateway to the rest of the Internet.
|
Raspberry Pi with nRF24L01-PA-LNA with BT module and USB Wifi |
This entry will show you on how to setup both Arduino UNO & Raspberry Pi to connect to these nRF24L01 modules.
Some basic information on these low cost RF modules, they communicate using SPI to the microcontroller and works on raw speed of 250Kbps, 1Mbps and 2Mbps.
I'm using the following hardware & software:-
RF modules used here :-
------------------
|
nRF24L01+ PA+LNA+2dBi ant |
|
Inhaos RF2400P |
|
nRF24L01+ |
Too many to choose from, just google for the above keyword on eBay or choose the cheapest as they sells in bulk of 10 pieces for a very low cost...
*** The main differences between the regular nRF24L01+ modules and the Inhaos RF2400P modules are that the RF2400P have a higher output power of 5dBm but could not do 250Kbps speed.
I'm running my setup using 1Mbps speed.
Setting up Arduino
Connect using jumper wires from the above pin to the nRF24L01+ modules
Upload the sketches/program to the Arduino, download it
here from Dropbox.
|
Arduino UNO with nRF24L01+/PA/LNA/2dBi ant |
Arduino connections to the nRF24L01 modules :-
Arduino Pin 11 to RF Module Pin 6 ( MOSI)
Arduino Pin 12 to RF Module Pin 7 ( MISO )
Arduino Pin 13 to RF Module Pin 5 ( SCK )
Arduino Pin 7 to RF Module Pin 4 ( CSN )
Arduino Pin 8 to RF Module Pin 3 ( CE )
Arduino 3.3V to RF Module Pin 2 ( VCC / 3.3V ) *** RF Module can only take 3.3V
Arduino GND to RF Module Pin 1 ( GND )
RF Module Pin 8 (IRQ) is not connected
*** All the other pins are 5V tolerant
Optional LCD Module to display the received payload & payload length :-
I'm using Arduino Pin 7 & 8 for the SPI because my LCD module is using the following pins :-
Arduino Pin 9 - LCD Pin 4
Arduino Pin 10 - LCD Pin 6
Arduino Pin 3 - LCD Pin 11
Arduino Pin 4 - LCD Pin 12
Arduino Pin 5 - LCD Pin 13
Arduino Pin 6 - LCD Pin 14
Arduino Pin 2 - connect to buzzer ( for sound feedback when it received a valid packet )
Setting up Raspberry Pi
Upgrade your Raspberry Pi firmware to Adafruit
Occidentalis V0.2 that support hardware SPI.
Download the above firmware and flash your SD card according to the instruction on Adafruit/Raspberry Pi website.
Refer to the two Raspberry Pi GPIO pinout and the physical pinout.
|
Raspberry Pi GPIO |
|
GPIO with pin functions |
RPi GPIO9 (Pin 21) to RF Module Pin 7 ( MISO )
RPi GPIO10 (Pin 19) to RF Module Pin 6 ( MOSI )
RPi GPIO 11 (Pin 23) to RF Module Pin 5 ( SCK )
RPi GPIO8 (Pin 24) to RF Module Pin 3 ( CE )
RPi GPIO 25 (Pin 22) to RF Module Pin 4 ( CSN )
RPI 3.3V (Pin 17) to RF Module Pin 2 ( VCC/3.3V )
RPi Gnd (Pin 25) to RF Module Pin 1 (GND)
Instructions on using github version for RPi :-
Using git, issue the following instructions on Raspberry Pi command prompt :-
$ git clone https://github.com/stanleyseow/RF24.git
$ cd RF24
$ cd librf24-rpi/librf24
$ make <--- Compile the files
$ sudo make install <--- This will install the librf24.so.1.0 into the shared libraries
$ sudo ldconfig -v | grep librf
librf24.so.1 -> librf24.so.1.0
$ cd ../examples/
$ make
To run the programs, type
$ sudo ./rpi-hub
or
$ sudo ./scanner
*** You need sudo/root to access the spidev0.0 device
Instruction on Arduino :-
Got examples/RF24/rpi_hub_arduino ( make sure the pins matches the above Arduino pinout )
Compile and upload to the Arduino
Optional :- Connect a small buzzer to digital Pin2 to hear a beep when the packet is returned to sender
If everything is working, you should see a screenshot below :-
|
rpi-hub screenshot |
Summary Links :-