In this Instructable I am going to cover to use an Adafruit Motor Shield for Arduino V2 along side an nRF24L01 Antenna to make a long range remote controlled robot. I am using an old Adafruit Arduino 101 CurrieBot with an Arduino Uno instead of the Arduino 101 that came with the robot. This tutorial however is applicable to any Arduino project running an Adafruit Motor Shield V2 that would like to use nRF24L01 or nRF24L01+ antennas to control their project.
- Arduino 101 Curiebot Kit (using an Arduino Uno) - https://www.adafruit.com/product/2768
- Universal Arduino Controller - https://www.instructables.com/id/Universal-Arduino-Controller/
- 2x nRF24L01 antennas - https://www.gearbest.com/transmitters-receivers-module/pp_440447.html
- nRF23L01 Breakout Adapter - https://www.addicore.com/1x-nRF24L01-Adapter-p/ad279.htm
- Half a split chop stick
- 3x Bread Ties
- 7x male to female jumper wires - https://www.addicore.com/Male-Female-Jumper-Wires-40-x-200mm-7-8in-p/179.htm
If you are looking for a versatile motor controller Adafruit's motor shield is a great option. It has the capacity for four DC motors or two steppers as well as many servos. The controller accepts a separate power supply if you don't want to share with the Arduino below. This makes it a great option when designing and constructing your own robot giving you lots of options.
Step 1: Grab a Robot to Control
I used a CurieBot with an Arduino Uno as my base robot but you can use what ever frame you choose. To assemble the Curiebot Kit I followed the online instruction however if you are assembling your own robot I would recommend that it powers the motors using an separate power supply. Test the adafruit motor shield before wiring the antenna to make sure it's functioning correctly. I soldiered shield stacking headers to my motor shield instead of the headers that came with the it to make the shield more expandable and easier to connect to. If you motor shield came soldiered or you have already soldiered it that's fine. There is a identical row of connectors right next the pins that connect to the Arduino making it easy to add female headers to the shield.
Step 2: Add Antenna Support
I split a chop stick the other night and it fit into the slot in my robots frame so I used it. For this any kind of support should work. Something to hold the antenna upright and the board off the metal frame.
Step 3: Loosely Attach the Antenna
Use one bread tie to loosely attach the antenna and the breakout board to the robot. Make sure it is positioned where you want it and preferably in an upright position (I found it helps with signal quality and range).
Step 4: Secure the Antenna
When you get it where you want it secure the antenna on the robot. I used two more bread ties to tie both ends of the antenna plus breakout board to the robot.
Step 5: Wire the Antenna to the Robot
When wiring the antenna follow the wiring table on the RF24 library info site. The breakout adapter has a light on it that will light when powered which can be helpful. If it is not working note the antenna usually needs 3.3 volts however if your using the breakout board use 5 volts instead.
Step 6: Attach an Antenna to the Controller
I am using a my test controller as my transmitter. All you really need is five buttons for input and an antenna as an output wired to an Arduino. HERE are my instructions to how I made this controller however a breadboard with buttons would work.
Step 7: Program the Antenna
Attached are two example programs one for the robot and one for the controller. The Arduino IDE is free to download and easy to use. The robot and the controller code need the RF24 library. The code for the controller uses the four buttons on the controllers face as the movement and a fifth button under the joystick as a speed changer. The robot receives the signal code and sends a confirmation and runs the case. The Serial for the robot will show what code the robot is receiving from the controller if it's receiving a signal. The controller will show much more information, if it has found a robot, the signal round trip time, and the code being sent. There is a great trouble shooting guide on the RF24 library info page if the antenna gives you any trouble.