Arduino Projects: RF Controlled Robot

Here we present a simple Arduino-board based robot that can be driven remotely using an RF remote control. -- Robin Chalana

114793
Advertisement

HT12E is permanently enabled for transmission by connecting its TE pin to ground. When any switch, say, S1, is pressed, the corresponding data is serially transmitted from DOUT pin through the RF ASK transmitter module. A 9V battery is used to power the circuit.

Fig. 4: An actual-size, single-side PCB for the RF transmitter
Fig. 4: A single side PCB for the RF transmitter
3F5_Fig_5
Fig. 5: Component layout for the PCB in Fig. 4
Fig. 6: An actual-size, single-side PCB for the RF receiver
Fig. 6: A single-side PCB for the RF receiver
Fig. 7: Component layout for the PCB in Fig. 6
Fig. 7: Component layout for the PCB in Fig. 6
Fig. 8: Author’s prototype
Fig. 8: Author’s prototype of the Arduino based RF controlled robot

Download PCB and component layout PDFs: click here

Receiver and motor driver circuit. Assuming that address pins on the encoder and the decoder are identical, when any of the switches on the transmitter (marked as FWD, REV, RIGHT, LEFT) is pressed, the corresponding data pin of the decoder goes low. The data outputs from D8 through D11 of HT12D (IC2) are fed to pins 2 through 5 of Arduino UNO board to generate appropriate logic outputs from pins 8 through 11 of Arduino UNO board.

Outputs from pins 8 through 11 of Arduino Uno board are fed to IN1 through IN4 of L293D (IC3) to drive both the motors M1 and M2 as shown in Fig. 3. Outputs OUT1 and OUT2 drive motor M1, and outputs OUT3 and OUT4 drive motor M2. Enable pins EN1 (pin 1) and EN2 (pin 9) are connected to Vcc for always enabled output. Regulator 7805 (IC4) provides regulated 5V to the receiver.

Construction

A single side PCB for the RF transmitter (Fig. 2) is shown in Fig. 4 and its component layout in Fig. 5. The PCB for the receiver (Fig. 3) is shown in Fig. 6 and its component layout in Fig. 7. A suitable connector arrangement has been made on the RF receiver PCB in order to extend connections to the drive motors and the battery mounted on the chassis of the RF robot.

37D_RF

Download source code: click here

Software

The source code file (RFROBOT.INO) for this project is listed at the end of this article. The Arduino Uno is programmed with Arduino IDE software. The ATmega328 on Arduino Uno comes pre-burned with a bootloader that allows you to upload new code to it without using an external hardware programmer. It communicates using the original STK500 protocol. You can also bypass the bootloader and program the microcontroller through the ICSP (in-circuit serial programming) header but using the bootloader makes the programming quick and easy.

Select Arduino Uno from the Tools→Board menu (according to the microcontroller on your board) in the Arduino IDE and burn the program through the standard USB port in the computer.


The author is a B.Tech in electronics and communication from Lovely Professional University

Advertisement


15 COMMENTS

  1. Are the inputs “latched” or can it be made to do so? I’m looking for a way to press the button (fwd), and have it keep moving without having to hold it. Then switch off when the opposite button (rev) is pressed, or add in a stop button.

    If that was silly, forgive me, I’m very new to this.

  2. Motor is not running though i have checked the connection 5-10/times and we also checked program.

SHARE YOUR THOUGHTS & COMMENTS

Please enter your comment!
Please enter your name here