This project was completed for ECE 361: Embedded Systems, where I designed, built, and programmed a four-wheeled autonomous car that detects obstacles and performs collision-avoidance maneuvers. The objective was to develop an embedded system that integrates sensors, motor control, and real-time decision-making to navigate autonomously.
The car was required to:
Move forward autonomously while monitoring for obstacles within a 3-foot range.
Indicate movement status using LEDs, with a forward-travel indicator and a separate LED for obstacle detection.
Emit an audible signal when an obstacle was detected.
Perform an avoidance maneuver to prevent collisions, after which it would resume forward movement.
To achieve precise motor control and bidirectional movement, I incorporated an H-bridge motor driver, allowing the car to reverse and adjust its path dynamically. This real-time control system ensured smooth and adaptive navigation in various environments.
The project focused on integrating sensors, motor drivers, and embedded programming to achieve an intelligent obstacle-avoidance system. The key components included:
Obstacle Detection: Implemented ultrasonic sensors to measure distances and detect obstacles within a 3-foot range.
Motor Control: Utilized an H-bridge motor driver to control the forward and reverse movement of the car, enabling adaptive steering during avoidance maneuvers.
Embedded Programming: Developed real-time decision-making logic using C/C++ and microcontroller programming to process sensor inputs and control movement.
Indicator System: Configured LEDs and a buzzer to provide real-time feedback on car movement and obstacle detection.
Power System: Designed an efficient battery-powered system to ensure consistent performance during testing and demonstrations.
The development of the autonomous car followed a structured engineering approach, ensuring successful integration of hardware and software components:
Hardware Assembly and Component Selection
Constructed a four-wheeled chassis with DC motors and an H-bridge motor driver for directional control.
Installed ultrasonic sensors at the front of the car to detect obstacles.
Wired LED indicators and a buzzer to signal movement status and obstacle alerts.
Software Development and Embedded Programming
Programmed the microcontroller (Arduino) to process sensor data in real-time.
Implemented PWM (Pulse Width Modulation) for smooth motor control via the H-bridge driver.
Developed an adaptive navigation algorithm, enabling the car to detect obstacles, trigger an alert, reverse, and find an alternate path.
Testing and Calibration
Fine-tuned sensor accuracy to ensure obstacle detection at an optimal range.
Adjusted motor speeds and turning angles for effective avoidance maneuvers.
Verified LED indicators and buzzer functionality to align with movement and detection events.
Final Demonstration and Validation
Powered the car and initiated forward movement toward a simulated obstacle.
Observed the LED and buzzer activation upon detection of the obstacle.
Evaluated the autonomous avoidance maneuver and verified that the car resumed forward motion successfully.
Fully Functional Autonomous Car: Successfully detected and avoided obstacles in real time, meeting all project specifications.
Bidirectional Motor Control: Integrated an H-bridge motor driver for smooth forward and reverse movement, improving maneuverability.
Real-Time Sensor Processing: Achieved accurate and responsive obstacle detection using ultrasonic sensors.
Indicator and Alert System: Configured LEDs and a buzzer to provide clear feedback on car movement and obstacle detection.
Efficient Power Management: Designed a battery-powered system that sustained operation throughout testing and demonstrations.
This project provided valuable experience in embedded systems, real-time motor control, and autonomous navigation. Through iterative design and testing, I gained key insights into:
The importance of precise motor control using PWM and an H-bridge to achieve smooth directional changes.
Real-time sensor integration and data processing to enable responsive obstacle detection and avoidance.
Optimizing power efficiency to ensure extended autonomous operation.
Debugging embedded systems through systematic testing and calibration.