-
Notifications
You must be signed in to change notification settings - Fork 0
Home

As my midterm project for ECE387, I chose to make use of two nRF24L01+ (RF24) radio transceiver modules in order to create a remote control car. The remote features dual joysticks to control the car's forward/backward and steering movements, and the car itself features a DC motor as a drive train and a servo motor-controlled steering system. The RF24 modules allow for quick, simple communication between the remote and car, and each module, along with other sensors and actuators required, is controlled by an Aruduino Uno. To achieve the actual car required for a remote control car, I used a chassis from a cheap RC car. The final result ended up having issues due to the cheap motor/drive train of this RC car, but despite this issue the functionality was successful as expected. Read more about the evolution of the project here.
- (2x) nRF24L01+ radio transceiver
- (2x) Three-axis analog joystick (2-axis also works)
- Servo motor (standard rotation)
- DC motor
- (2x) Arduino Uno
- RC Car (for chassis)
- (2x) PNP Transistor (2N3906 used)
- (3x) NPN Transistor (2N5088 used)
- (2x) 9V Battery (or other mobile power source)
The nRF24L01+ can operate as both a transmitter and receiver, making it versatile and perfect for this sort of project. The modules operate at a working frequency of 2.4 GHz. More about the RF24 can be found here.
Two analog joysticks are used to capture the forward/backward and steering movements of the car's desired direction. Each joystick works as a dual-axis return-to-center potentiometer. Because it was desired to have two joysticks, one for speed control and one for steering, only one axis was used per joystick. The joysticks connect to Vcc and ground, and return a voltage between the two that can be read by the Arduino's analog input pins. To see how these joysticks were wired, see the wiring connections shown here.
The joysticks added a neat aesthetic touch to the remote, and I added to this aesthetic with a "DIY" motif that made use of a strip of breadboard.
Both a DC motor and a servo motor are used to propel the car and control its direction, respectively. The wiring connections for both motors are found here.
The servo motor wires directly to a pulse-width modulation (PWM) enabled pin on the Arudino, and its direction is controlled by data received from the steering joystick. The joystick's data is an integer between 0 and 1023, so it must first be mapped to a degree value between 0 and 180 to appropriately position the servo.
The DC motor cannot be directly connected to the Arduino due to its current consumption being dangerous to the Arduino's hardware, so the DC motor is connected through a transistor H-bridge. This allows the motor to be controlled by an external power source, and also allows the motor to turn either direction (to allow for forward and reverse) without needing to switch any hardware. The H-bridge uses 4 transistors and two digital pins on the Arduino to control the motor direction, and a fifth transistor utilizes a PWM pin to control the motor's speed.