Arduino Mega 2560-Based Autonomous Parking System with Ultrasonic Sensors and Motor Control
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This document provides a detailed overview of a circuit designed for an auto-parking system. The system utilizes multiple HC-SR04 ultrasonic sensors for distance measurement, an Arduino Mega 2560 microcontroller for processing, an L293D motor driver shield for motor control, and optical encoder sensors for precise motor movement tracking. The circuit is programmed to detect parking spaces and maneuver a vehicle into the space using the sensors and motors.
Component List
HC-SR04 Ultrasonic Sensor
- Description: Ultrasonic distance sensor
- Pins: VCC, TRIG, ECHO, GND
- Purpose: Measures distance to obstacles
Arduino Mega 2560
- Description: Microcontroller board
- Pins: IOREF, RESET, 3V3, 5V, GND, VIN, A0-A15, D0-D53, SDA, SCL, AREF
- Purpose: Central processing unit for the circuit
Optical Encoder Sensor Module
- Description: Optical encoder for measuring rotational position
- Pins: A0, D0, GND, VCC
- Purpose: Tracks motor rotation for precise movement
DRIVER SHIELD L293D
- Description: Motor driver shield
- Pins: RESET, 3.3V, 5V, GND, VIN, 9V, A0-A5, M1-M4, SERVO_1, SERVO_2, RX/D0, TX/D1, D2-D13, ARef, VCC (External Power Supply), GND (External Power Supply)
- Purpose: Controls the motors
Motor with Reducer
- Description: DC motor with gear reducer
- Pins: 3 - 6 VCC, GND
- Purpose: Drives the vehicle
Comment
- Description: Placeholder for comments
- Pins: None
- Purpose: Not used in the circuit
Wiring Details
HC-SR04 Ultrasonic Sensor 1
- VCC: Connected to Arduino Mega 2560 (5V)
- TRIG: Connected to Arduino Mega 2560 (D34)
- ECHO: Connected to Arduino Mega 2560 (D35)
- GND: Connected to Arduino Mega 2560 (GND)
HC-SR04 Ultrasonic Sensor 2
- VCC: Connected to Arduino Mega 2560 (5V)
- TRIG: Connected to Arduino Mega 2560 (D36)
- ECHO: Connected to Arduino Mega 2560 (D37)
- GND: Connected to Arduino Mega 2560 (GND)
HC-SR04 Ultrasonic Sensor 3
- VCC: Connected to Arduino Mega 2560 (5V)
- TRIG: Connected to Arduino Mega 2560 (D38)
- ECHO: Connected to Arduino Mega 2560 (D39)
- GND: Connected to Arduino Mega 2560 (GND)
HC-SR04 Ultrasonic Sensor 4
- VCC: Connected to Arduino Mega 2560 (5V)
- TRIG: Connected to Arduino Mega 2560 (D40)
- ECHO: Connected to Arduino Mega 2560 (D41)
- GND: Connected to Arduino Mega 2560 (GND)
Arduino Mega 2560
- 5V: Connected to HC-SR04 Ultrasonic Sensors (VCC)
- GND: Connected to HC-SR04 Ultrasonic Sensors (GND), DRIVER SHIELD L293D (GND)
- D34: Connected to HC-SR04 Ultrasonic Sensor 1 (TRIG)
- D35: Connected to HC-SR04 Ultrasonic Sensor 1 (ECHO)
- D36: Connected to HC-SR04 Ultrasonic Sensor 2 (TRIG)
- D37: Connected to HC-SR04 Ultrasonic Sensor 2 (ECHO)
- D38: Connected to HC-SR04 Ultrasonic Sensor 3 (TRIG)
- D39: Connected to HC-SR04 Ultrasonic Sensor 3 (ECHO)
- D40: Connected to HC-SR04 Ultrasonic Sensor 4 (TRIG)
- D41: Connected to HC-SR04 Ultrasonic Sensor 4 (ECHO)
- D21/SCL: Connected to Optical Encoder Sensor Module (D0)
- 3V3: Connected to DRIVER SHIELD L293D (3.3V)
- VIN: Connected to DRIVER SHIELD L293D (VIN)
- A0-A4: Connected to DRIVER SHIELD L293D (A0-A4)
- D0 RX0: Connected to DRIVER SHIELD L293D (RX/D0)
- D1 TX0: Connected to DRIVER SHIELD L293D (TX/D1)
- D2-D13: Connected to DRIVER SHIELD L293D (D2-D13)
- AREF: Connected to DRIVER SHIELD L293D (ARef)
Optical Encoder Sensor Module
- VCC: Connected to DRIVER SHIELD L293D (5V)
- D0: Connected to Arduino Mega 2560 (D21/SCL)
- GND: Connected to DRIVER SHIELD L293D (GND)
DRIVER SHIELD L293D
- 3.3V: Connected to Arduino Mega 2560 (3V3)
- 5V: Connected to Arduino Mega 2560 (5V)
- GND: Connected to Arduino Mega 2560 (GND)
- VIN: Connected to Arduino Mega 2560 (VIN)
- A0-A4: Connected to Arduino Mega 2560 (A0-A4)
- RX/D0: Connected to Arduino Mega 2560 (D0 RX0)
- TX/D1: Connected to Arduino Mega 2560 (D1 TX0)
- D2-D13: Connected to Arduino Mega 2560 (D2-D13)
- ARef: Connected to Arduino Mega 2560 (AREF)
- M1 (+): Connected to Motor with Reducer 1 (3 - 6 VCC)
- M1 GND (-): Connected to Motor with Reducer 1 (GND)
- M2 (+): Connected to Motor with Reducer 2 (3 - 6 VCC)
- M2 GND (-): Connected to Motor with Reducer 2 (GND)
- M3 (+): Connected to Motor with Reducer 3 (3 - 6 VCC)
- M3 GND (-): Connected to Motor with Reducer 3 (GND)
- M4 (+): Connected to Motor with Reducer 4 (3 - 6 VCC)
- M4 GND (-): Connected to Motor with Reducer 4 (GND)
Motor with Reducer 1
- 3 - 6 VCC: Connected to DRIVER SHIELD L293D (M1 (+))
- GND: Connected to DRIVER SHIELD L293D (M1 GND (-))
Motor with Reducer 2
- 3 - 6 VCC: Connected to DRIVER SHIELD L293D (M2 (+))
- GND: Connected to DRIVER SHIELD L293D (M2 GND (-))
Motor with Reducer 3
- 3 - 6 VCC: Connected to DRIVER SHIELD L293D (M3 (+))
- GND: Connected to DRIVER SHIELD L293D (M3 GND (-))
Motor with Reducer 4
- 3 - 6 VCC: Connected to DRIVER SHIELD L293D (M4 (+))
- GND: Connected to DRIVER SHIELD L293D (M4 GND (-))
Code Documentation
#include <NewPing.h> // For HC-SR04 sensors
#include <AFMotor.h> // For L293D motor driver shield
#include <Encoder.h> // For encoder support
// Define ultrasonic sensor pins
#define TRIG1 40
#define ECHO1 41
#define TRIG2 34
#define ECHO2 35
#define TRIG3 36
#define ECHO3 37
#define TRIG4 38
#define ECHO4 39
// Set max distance for HC-SR04 sensors (in cm)
#define MAX_DISTANCE 200
// Define motors
AF_DCMotor motor1(1); // Connects to M1
AF_DCMotor motor2(2); // Connects to M2
AF_DCMotor motor3(3); // Connects to M3
AF_DCMotor motor4(4); // Connects to M4
// Encoder pins (example: encoder on motor1 and motor2)
Encoder encoder1(2, 3); // Pins connected to encoder of Motor 1
Encoder encoder2(18, 19); // Pins connected to encoder of Motor 2
// Initialize ultrasonic sensors
NewPing sonarFront(TRIG1, ECHO1, MAX_DISTANCE);
NewPing sonarLeft(TRIG2, ECHO2, MAX_DISTANCE);
NewPing sonarRight(TRIG3, ECHO3, MAX_DISTANCE);
NewPing sonarBack(TRIG4, ECHO4, MAX_DISTANCE);
// Variables