I recently received my first couple of nRF24L01+ modules. But soon, I realised that the Arduino UNO onboard 3.3V regulator was not capable of driving the nRF24 modules at full power.
I ended up with lots of wiring between the Arduino UNO, breadboard with 3.3V regulator, and nRF24 module. Thus I decided to build a set of shields to make it easier for me testing these modules.
Step 1: The Shield Design
Nothing too complicated. It is a standard shield layout, with an on-board LM2937 3.3V regulator for the nRF24 module. The nRF24 module plugs into a set of header connectors.
Additional items are not essential, but include the following:
- Power LED
- Reset button
- Jumper to select INT0 or INT1 if the mudule's interrupts will be used
- LED for "BIND" status
- 2 Extra LEDs
- 2 Extra push buttons
Step 2: The PC Board
I used the free version of Eagle to create the PC Board. To keep the design simple, I opted for a single layer design. However, there are 5 jumpers that needs to be soldered on the top side.
Extra holes are provided for extra headers if required.
Step 3: Testing the Shields
To test the nRF24, two modules are required. Thus I ended op making two shields.
I created two sketches, one for Transmitter, and one for receiver. It is a simple one-way communication link.
When both units are powered up, the red LED on both shields will be on, indicating data is sent correctly, and received by the receiver.When a button on the transmitter is pressed, the corresponding LED on the receiver will turn on.
The link can be tested by pressing the RESET button on either the transmitter or receiver for a while. The "BIND" LED on the other unit will turn off, indicating loss of the communication link.
Step 4: NRF24 Remote Control for Electric Wheelchair
My first nRF24 project. a Remote control for my friend's electric wheelchair. This will enable him to use his wheelchair normally to reach his car. Once in his car, he can use the remote control to move the wheelchair into the garage, and out of the sun and rain.
The transmitter uses a PS2/3 joystick, and transmit the data to the chair's receiver. The receiver takes this data, and convert it into standard R/C Servo signals (PPM) which is then fed into the wheelchair controller.
Both Tx an Rx uses a ATMega328P.
For this project, I made the following changes to the standard nRF24 setup to increase the range of the link:
- Set output power to maximum
- Set data buffer to only 7 bytes
- Set baud rate to lowest setting