Saturday, 7 May 2016

Arduino-based RF Controlled Robot

Arduino-board based robot that can be driven remotely using an RF remote control. This robot can be built very quickly in a small budget. The RF remote control provides the advantage of a good controlling range besides being omni directional.


Circuit description

The block diagram of the robot is shown in Fig. It has two major sections: (a) transmitter and (b) receiver and motor driver. The transmitter circuit is built around encoder IC HT12E 433MHz RF transmitter module (TX1) and a few discrete components. The receiver and motor driver circuit is built around Arduino UNO board, decoder IC HT12D , 433MHz RF receiver module (RX1), motor driver IC L293D , regulator IC 7805  and a few discrete components.



Arduino UNO board.
The Arduino Uno board is based on the ATmega328 micro-controller. It consists of 14 digital input/output pins, six analogue inputs, a USB connection for programming the on-board micro-controller, a power jack, an ICSP header and a reset button. It is operated with a 16MHz crystal oscillator. It contains everything needed to support the micro-controller. It is very user-friendly; simply connect it to a computer with a USB cable to get started. The micro-controller on the board is programmed using the Arduino programming language and the Arduino development environment.



Remote control.

For controlling the robot remotely, Holteks’ encoder-decoder pair (HT12E and HT12D) together with a 433MHz transmitter-receiver pair is used.

HT12E and HT12D are CMOS ICs with working voltage ranging from 2.4V to 12V. Encoder HT12E has eight address and another four address/data lines. The data set on these twelve lines is serially transmitted when transmit-enable pin TE is taken low. The data output appears serially on DOUT pin.

Transmitted four times in succession. It consists of differing lengths of positive-going pulses for ‘1’ and ‘0,’ the pulse-width for ‘0’ being twice the pulse-width for ‘1.’ The frequency of these pulses may lie between 1.5 and 7 kHz depending on the resistor value between OSC1 and OSC2 pins.



The internal oscillation frequency of decoder HT12D is 50 times the oscillation frequency of encoder HT12E. The HT12D receives the data from the HT12E on its DIN pin serially. If the address part of the data received matches the levels on A0 through A7 pins four times in succession, the valid transmission (VT) pin is taken high. The data on pins AD8 through AD11 of the HT12E appears on pins D8 through D11 of the HT12D. Thus the device acts as a receiver of 4-bit data with 8-bit addressing.

Transmitter circuit.
Switches S1, S2, S3 and S4 are interfaced with AD8 through AD11 of encoder HT12E for forward (FWD), reverse (REV), left (LEFT) and right (RIGHT) motions, respectively. Resistor R1 is connected between oscillator pins 15 and 16 to set the transmitter frequency.

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.

component List


PCB and component layout


                                        The RF transmitter

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 is pressed, the corresponding data pin of the decoder goes low. The data outputs from D8 through D11 of HT12D 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.


                            The RF receiver

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

Construction

An actual-size, single-side PCB for the RF transmitter is shown in Fig. and its component layout in Fig. The PCB for the receiver is shown in Fig. and its component layout in Fig. 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.

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 boot-loader 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 micro-controller through the ICSP header but using the boot-loader makes the programming quick and easy.

Select Arduino Uno from the ToolsBoard menu in the Arduino IDE and burn the program through the standard USB port in the computer.



1 comment: