Arduino UNO-Based Autonomous Obstacle-Avoiding Robot with Ultrasonic Sensor and Motor Driver
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This circuit is designed to control a robotic vehicle using an Arduino UNO microcontroller. The vehicle is equipped with an ultrasonic sensor for obstacle detection, DC gear motors for movement, a servo motor for directional control, and a motor driver for managing the motors. The circuit also includes a rocker switch for power control and a battery pack for power supply.
Component List
Arduino UNO
- Description: Microcontroller board based on the ATmega328P.
- Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
HC-SR04 Ultrasonic Sensor
- Description: Ultrasonic distance sensor.
- Pins: VCC, TRIG, ECHO, GND
Gearmotor DC Wheels (Left)
- Description: DC motor for left wheels.
- Pins: PIN1, PIN2
Gearmotor DC Wheels (Right)
- Description: DC motor for right wheels.
- Pins: PIN1, PIN2
Servomotor SG90
- Description: Small servo motor for directional control.
- Pins: SIG, VCC, GND
L298N DC Motor Driver
- Description: Dual H-Bridge motor driver.
- Pins: OUT1, OUT2, 12V, GND, 5V, OUT3, OUT4, 5V-ENA-JMP-I, 5V-ENA-JMP-O, +5V-J1, +5V-J2, ENA, IN1, IN2, IN3, IN4, ENB
Rocker Switch (SPST)
- Description: Single-pole single-throw switch.
- Pins: 1, 2
Arduino Sensor Shield v5.0
- Description: Expansion shield for Arduino UNO.
- Pins: VCC, SD-VCC, SD-GND, SD-D11, SD-D10, SD-D13, SD-D12, URF01-VCC, URF01-A0, URF01-A1, URF01-GND, GND, SEL1, SEL2, A0-SIG, A0-VCC, A0-GND, A1-SIG, A1-VCC, A1-GND, A2-SIG, A2-VCC, A2-GND, A3-SIG, A3-VCC, A3-GND, A4-SIG, A4-VCC, A4-GND, A5-SIG, A5-VCC, A5-GND, IIC-SCL, IIC-SDA, IIC-GND, IIC-VCC, COM-TX, COM-RX, COM-GND, COM-VCC, APC220-, APC220-D0, APC220-D1, APC220-VCC, APC220-GND, BLUETOOTH-3V3, BLUETOOTH-GND, BLUETOOTH-D0, BLUETOOTH-D1, BLUETOOTH-VCC, AREF-S, AREF-V, AREF-G, GND-S, GND-V, GND-G, 13-S, 13-V, 13-G, 12-S, 12-V, 12-G, 11-S, 11-V, 11-G, 10-S, 10-V, 10-G, 9-S, 9-V, 9-G, 8-S, 8-V, 8-G, 7-S, 7-V, 7-G, 6-S, 6-V, 6-G, 5-S, 5-V, 5-G, 4-S, 4-V, 4-G, 3-S, 3-V, 3-G, 2-S, 2-V, 2-G, 1-S, 1-V, 1-G, 0-S, 0-V, 0-G, ParallelLCD-VCC, ParallelLCD-D13, ParallelLCD-GND, ParallelLCD-D12, ParallelLCD-D2, ParallelLCD-D11, ParallelLCD-D3, ParallelLCD-D10, ParallelLCD-D4, ParallelLCD-D9, ParallelLCD-D5, ParallelLCD-D8, ParallelLCD-D6, ParallelLCD-D7, SerialLCD-D4, SerialLCD-VCC, SerialLCD-D3, SerialLCD-, SerialLCD-D2, SerialLCD-GND
2x 18650 Battery Pack
- Description: Battery pack with two 18650 cells.
- Pins: vcc, gnd
Wiring Details
Arduino UNO
- Connected to the Arduino Sensor Shield v5.0.
HC-SR04 Ultrasonic Sensor
- VCC to Arduino Sensor Shield v5.0 (13-V)
- TRIG to Arduino Sensor Shield v5.0 (13-S)
- ECHO to Arduino Sensor Shield v5.0 (12-S)
- GND to Arduino Sensor Shield v5.0 (12-G)
Gearmotor DC Wheels (Left)
- PIN1 to L298N DC Motor Driver (OUT2)
- PIN2 to L298N DC Motor Driver (OUT1)
Gearmotor DC Wheels (Right)
- PIN1 to L298N DC Motor Driver (OUT4)
- PIN2 to L298N DC Motor Driver (OUT3)
Servomotor SG90
- SIG to Arduino Sensor Shield v5.0 (11-S)
- VCC to Arduino Sensor Shield v5.0 (11-V)
- GND to Arduino Sensor Shield v5.0 (11-G)
L298N DC Motor Driver
- OUT1 to Gearmotor DC Wheels (Left) PIN2
- OUT2 to Gearmotor DC Wheels (Left) PIN1
- OUT3 to Gearmotor DC Wheels (Right) PIN2
- OUT4 to Gearmotor DC Wheels (Right) PIN1
- 12V to Rocker Switch (SPST) pin 2
- GND to Arduino Sensor Shield v5.0 (GND) and 2x 18650 Battery Pack (gnd)
- 5V to Arduino Sensor Shield v5.0 (VCC)
- +5V-J2 to Arduino Sensor Shield v5.0 (1-V)
- ENA to Arduino Sensor Shield v5.0 (6-S)
- IN1 to Arduino Sensor Shield v5.0 (7-S)
- IN2 to Arduino Sensor Shield v5.0 (5-S)
- IN3 to Arduino Sensor Shield v5.0 (4-S)
- IN4 to Arduino Sensor Shield v5.0 (2-S)
- ENB to Arduino Sensor Shield v5.0 (3-S)
Rocker Switch (SPST)
- Pin 1 to 2x 18650 Battery Pack (vcc)
- Pin 2 to L298N DC Motor Driver (12V)
Arduino Sensor Shield v5.0
- GND to 2x 18650 Battery Pack (gnd)
- VCC to L298N DC Motor Driver (5V)
2x 18650 Battery Pack
- vcc to Rocker Switch (SPST) pin 1
- gnd to Arduino Sensor Shield v5.0 (GND) and L298N DC Motor Driver (GND)
Code Documentation
#include <Servo.h>
volatile int IN1 = 11;
volatile int IN2 = 6;
volatile int IN3 = 5;
volatile int IN4 = 3;
volatile int rightDistance;
volatile int leftDistance;
Servo servo_4;
void left_side_forward(int speed) {
analogWrite(IN1, speed * 0.92);
analogWrite(IN2, 0);
}
void right_side_forward(int speed) {
analogWrite(IN3, speed);
analogWrite(IN4, 0);
}
void left_side_backward(int speed) {
analogWrite(IN1, 0);
analogWrite(IN2, speed * 0.92);
}
void right_side_backward(int speed) {
analogWrite(IN3, 0);
analogWrite(IN4, speed);
}
float checkdistance_A1_A2() {
digitalWrite(A1, LOW);
delayMicroseconds(2);
digitalWrite(A1, HIGH);
delayMicroseconds(10);
digitalWrite(A1, LOW);
float distance = pulseIn(A2, HIGH) / 58.00;
delay(10);
return distance;
}
void forward(int speed) {
left_side_forward(speed);
right_side_forward(speed);
}
void backward(int speed) {
left_side_backward(speed);
right_side_backward(speed);
}
void left(int speed, int time) {
left_side_backward(speed);
right_side_forward(speed);
delay(time);
stop();
}
void right(int speed,