Arduino UNO-Based Autonomous Obstacle-Avoiding Robot with Ultrasonic Sensor and Motor Driver
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This document provides a detailed overview of a circuit designed to control a robotic vehicle using an Arduino UNO microcontroller. The circuit includes an ultrasonic sensor for obstacle detection, DC motors for movement, a servo motor for directional control, and a motor driver for power management. The system is powered by a 2x 18650 battery pack and includes a rocker switch for power control.
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) 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
- Connected to Arduino UNO
- GND to 2x 18650 Battery Pack gnd and L298N DC Motor Driver GND
- VCC to L298N DC Motor Driver 5V
- 1-V to L298N DC Motor Driver +5V-J2
- 6-S to L298N DC Motor Driver ENA
- 7-S to L298N DC Motor Driver IN1
- 5-S to L298N DC Motor Driver IN2
- 4-S to L298N DC Motor Driver IN3
- 2-S to L298N DC Motor Driver IN4
- 3-S to L298N DC Motor Driver ENB
- 13-V to HC-SR04 Ultrasonic Sensor VCC
- 13-S to HC-SR04 Ultrasonic Sensor TRIG
- 12-S to HC-SR04 Ultrasonic Sensor ECHO
- 12-G to HC-SR04 Ultrasonic Sensor GND
- 11-S to Servomotor SG90 SIG
- 11-V to Servomotor SG90 VCC
- 11-G to Servomotor SG90 GND
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
Documented Code
#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() {
digital