A quick and easy tutorial to build a line follower robot in as little as 10 minutes.

1 Arduino, Arduino Clone, or make your own custom Arduino board
2 Continuous rotation servo motors
1 Ball caster
1 Infrared sensor array, or a set of 6 IR LEDs and detectors
1K and 10K resistors
2 Robot wheels — select wheels to fit servo
1 Chassis — usually a small acrylic board will do
4 AA Duracell batteries and battery holder
Arduino IDE

Our line follower robot

Line followers are one of the most prominent kinds of robots. They have existed for a long time, but the technologies used for building them have changed significantly. In earlier versions, controller boards the size of bricks were used, but they have since shrunk and become tremendously powerful. Now, technology allows you to build a line follower in just under 10 minutes if you have the parts for it. Have fun with this quick and easy DIY hacking tutorial!

How Does the Line Follower Robot Work?

The workings of a line follower robot are pretty straightforward. These robots have the capability to detect a black or dark line on a lighter surface depending on the contrast. They estimate whether the line underneath them is shifting toward their left or right as they move over them. Based on that estimation, they give respective signals to the motors to turn left or right so as to maintain a steady center with respect to the line.

These robots usually use an array of IR (infrared) sensors in order to calculate the reflectance of the surface beneath them. The basic criteria is that the black line has a lesser reflectance value (black absorbs light) than the lighter surface around it. This low value of reflectance is the parameter used to detect the position of the line by the robot. The higher value of reflectance will be the surface around the line. So in this linear array of IR sensors, if the leftmost or rightmost IR sensor presents the low value for reflectance, then the black line is toward the left or right of the robot correspondingly. The controller then compensates for this by signaling the motor to go in the opposite direction of the line.


Line Follower Block Diagram

The IR sensor array consists of individual IR LEDs and IR photodiodes. The IR light emitted by the LED strikes the surface and is reflected back to the IR photodiode. The photodiode then gives an output voltage proportional to the reflectance of the surface (high value for a light surface and low for a black or dark surface).


IR Sensor Working

Making the Sensor Array for the Line Follower (Optional)

*Only if you don't want to buy the Pololu reflectance sensor. 

To make an IR sensor array, take the six IR LEDs and connect them in parallel with each other. Now, take the IR photodiodes and place each of them just below the six IR LEDs. Wrap each pair together using black insulation tape and leaving their tips exposed. Take these six pairs of IR LEDs and photodiodes and join them in a straight line.  Each pair should be 1.5cm apart from the next.


IR Photodiode and IR LED


Taping them together


Bottom View


Full View

Connecting the Components Together for the Line Follower

Set up the hardware connections with the Arduino and the servo motors. The continuous rotation servo motors are those types of servo motors that cannot be controlled or set at a particular angle, unlike normal servos. Servos have three wires coming from them: Red=Power, Black=Ground, White/Yellow=PWM/PPM Signal. The left servo motor (white/yellow wire) is hooked up to Arduino digital pin 9 and the right servo motor (white/yellow wire) to Arduino digital pin 10. The black wires of both the motors are connected to Arduino GND and the red wires to the positive terminal of the battery holder.


Arduino Connections for Line Follower

Using Pololu QTR-8A Reflectance Array Sensor

If you are using the Pololu sensor, and you don't need all eight IR detectors. You can remove two of them by cutting at the indicated perforation line on the board. The code we are using is only for six of them. Then solder some header pins to the board for VCC, GND, and signals 1,2,3,4,5,6. Connect the VCC and GND of this sensor to the Arduino's VCC and GND. The signals 1,2,..6 are connected to the Arduino's analog input pins A0, A1, A2, ...A5.

Using the Custom Fabricated Sensor Array

If you are using the custom fabricated sensor array, then short the anode terminals of all the IR LEDs together and connect to the Arduino VCC through a 220Ohm resistor. Next, short the cathode terminals together and connect to Arduino GND. Now, connect a 10K resistor to the cathode of each of the IR photodiodes. Short the free ends of all the 10K resistors together and connect it to Arduino Gnd. Now, short the anode terminals of the IR photodiodes together and connect it to Arduino VCC. Last, connect a wire to the cathode of each of the IR photodiodes (between the cathode and the 10K resistor). Connect each of the wires in sequence to Arduino's analog input pins A0, A1,..A5.


Connections for your custom IR sensor array

Uploading the Code for Your Line Follower

You can find the code for the line follower here. After uploading the code, sweep/move the sensor array over the black line from left to right for roughly 3 seconds. This is done in order to calibrate and find the max and min values for reflectance. After that, place the robot on the line and watch the bot follow it. If you're using the Pololu QTR-8A reflectance array sensor, then no significant changes may be required. Try to check the values coming from the sensor through the serial monitor. Based on those values, adjust the values in the code correspondingly.

For those who made the custom board, find the rough values of reflectance over the black line and the outer surface. Substitute these values in the code and calibrate it. You can use normal black insulation tape as the line for your robot to follow. See the line follower in action below.

Arvind Sanjeev
An interaction designer and engineer. Yahoo-Accenture had also awarded him as the "Most Promising Innovator".


Related Projects