Making a wireless remotely controlled robot is a dream of many electronic hobbyist. So I thought of publishing a article that could you in making one. Also I wanted to refine the design as many design available on web has several flaws. Many design that you will find on the web would be based on a HT12D/HT12E based encoder/decoder pair coupled with some logic chips or microcontroller and a L293D motor driver chip. The problem with these designs is that HT12D/HT12E encored/decoder pair can only transmit four bits of data. This implies that very limited kind of control is possible.
Moving on to next popular design, i.e. the HT12D/HT12E coupled with a microcontroller is the silliest design any one could invent. But this is very popular! This is due to the fact the most novice embedded programmers are NOT real programmers. Thus they cannot do much more than simple programs. To cover up their limitations, they use a encoder/decoder chips for preparing data to be sent over RF modules. But this very simple task of encoding-decoding can be easily done in the microcontroller itself! Relying on HT12D/HT12E for encoding/decoding you are limited to only four bits of data transfer in each packet. While, if you design your own data packet format, then you are free to transmit any number of bits. Further it reduces the cost design and board size too.
Here is a live example of this kind of solution http://www.efxkits.us/radio-frequency-remote-controlled/ these people claim themselves to have 7 or more years of expertise and other hypes.
In my design I have added a very useful function, to facilitate the speed control of robot. That means we will be having a total of six buttons on the remote control unit. Four of these would be standard directional keypad providing forward, backward motion and as well as turning left and right. Two extra buttons that we would be implementing is NOT found in other designs available. The two would be the FAST and SLOW button. Normally when you drive the robot without pressing any of the keys, it will run at the normal speed. Pressing the FAST button will move it faster, on the other hand pressing SLOW button will move it move slower, allowing you to maneuver tricky paths without colliding, as slow robot is in better control of the operator.
One last enhancement that I have implement is "drifting". On other designs of wireless robot when the user press the LEFT or RIGHT turning keys, the robot stops moving in the direction in which it was going (forward or backward) and start turning. In drifting mode, if you press LEFT or RIGHT keys while you are already going forward or backward (by pressing forward or backward keys of course) the robot won't stop moving and start rotating. Instead, it will just start drifting toward left or right just like a real car. This is made possible by slightly slowing down the respective motor.
Also while designing a wireless robot we should keep in mind that when robot is NOT in the range of controller it should stop. Some design of robot requires stop command to be received from the remote control unit in order to be stopped. This is again a big flaw in the design. Because once the robot goes out of range, you will not be able to stop it and it may fall off the building or go bump into your table (and hopefully breaking itself!)
For the design of radio controlled robot we have chosen AVR ATmega8 microcontroller. Which is a very popular, low cost and easily available microcontroller. It receives data from RF module on its serial data receive pin, that is RXD (PIN 2). Then it processes the data and generates control signal for the two motors (left and right). It also generates the PWM signal on its OC1A and OC1B pins (pin 15 & 16), this PWM signal is used to control the speed of the two motors. OC1A controls the speed of left motor, while OC1B controls the speed of right motor. Four general purpose input output lines of PORTD(PD1, PD2,PD3 and PD4) are used to control the direction of motors. The output from the microcontroller's pins are not strong enough to provide enough voltage and current to drive motors directly. So we need to use motor driver IC like L293D.
The microcontroller is clocked from a 16MHz crystal oscillator which you can see in the left hand side of the circuit diagram. It is connected to pins XTAL1 and XTAL2(pin 9 and 10) of the microcontroller.
In the right of schematic you can see the bi colour LED(D1). It serves a very helpful purpose! It indicates if the robot is control range of the operator or not. When the transmitter is not in range or is switched off. This LED will turn RED. Other wise if the robot is receiving signals from the controller without any problem, it will turn a sweet green colour.
The whole circuit should be powered using regulated 5v supply only. This can be easily designed using a 7805 voltage regulator IC. Also note one important thing that one of the up pointing arrow which is pin 8 of the L293D IC (motor driver) should be connected to 12V supply. This can be obtained from a 12V battery like those used in UPS of PC or using 9 AA cells.
NEVER USE SMALL 9V BATTERIES FOR ROBOTICS PURPOSE! They have very high internal resistance and cannot source enough current to drive any kind of motors. If loaded with motors, their voltage drops to an unacceptably low level. This causes erratic behavior of the microcontroller.
Bill of Materials
|01||R1||4K7||1/4 Watt Resistor||1|
|02||R2, R3||330 ohms||1/4 Watt Resistor||2|
|03||C1, C2,C3||100n||Ceramic Disc Capacitor||3|
|04||C4,C5||22pF||Ceramic Disc Capacitor||2|
|06||U1||28 PIN||IC Socket||1|
|07||U2||L293D||Dual Motor Driver IC||1|
|11||D1||RED/GREEN||Bi colour LED (Red+Green), common anode||1|
|12||-||200 RPM||12V DC Gear Motor||2|
We cordially thanks the following peoples who shared this page on various social networks and insprided us to develop more quality contents!
Pratik Mahale, Delwar, John, Hasanen,