---
# System prepended metadata

title: Tracing Self-driving Car
tags: [IoT]

---

# Smart Tracing Self-driving Car
**IoT Project**
**Github:** https://github.com/jschen9999/TrancingCar
[**Demo Video1** ](https://drive.google.com/file/d/1iHbgE7BhOogBMD05aesq9NW11m7E7JIo/view?usp=sharing)
[**Demo Video 2**](https://drive.google.com/file/d/1ENs3ucQwAOWbB5dM1LXoz0-QcCmVhPUz/view?usp=sharing)
## Project Functionality Description

**RFID Card Recognition:**
- Operators use an RFID card reader to identify the self-driving car's designated path (blue or green line).
- During the journey, a green LED light is lit along the path, and the camera captures images to detect colored line segments' positions, adjusting the car's direction accordingly.

**Ultrasonic Obstacle Detection:**
- Ultrasonic sensors check for obstacles in front of the car.
- If an obstacle is detected within 20 cm, the car stops, a red LED light is lit, and a warning sound is played until the obstacle is removed.
- 
**Stop at Red Line Zone:**
- A red line zone can be set on the path.
- When the car detects this zone, it stops, a yellow light is lit, and a broadcast announces the current time, followed by recycling truck music.
- After the music ends, the car resumes its journey.

**Remote Control for Temporary Parking:**
- Blue path allows remote control for temporary parking via an IoT platform.
- If an operator insists on temporary parking on the green path, the car emits a warning signal against stopping.
        
**Accelerated Return to End Point:**
- When the camera detects a black line, indicating the completion of the designated route, the car stops distance measurement, parking, and remote control functions.
- The car accelerates along the black line back to the endpoint recycling facility.
- Upon reaching the designated point, the speaker reminds the operator to press "q" to end the program.

## Project Operation and Execution Flow

1. **RFID Card Recognition:**
   - Prepared two RFID cards; the card reader identifies the card's ID to determine whether the self-driving car should follow the blue or green line.

2. **Smart Tracing Movement (See Figure 2 and Figure 3):**
   - The self-driving car uses a camera to capture images, identifying three specified pixel positions in front to determine the path's color.
   - Depending on the color:
     - Left pixel turns left for 0.1 seconds.
     - Middle pixel moves forward.
     - Right pixel turns right while moving forward, achieving self-driving car smart tracing.

![Screenshot 2024-01-22 at 18.05.17](https://hackmd.io/_uploads/HJEXNcstT.jpg)


3. **Ultrasonic Obstacle Detection (See Figure 4):**
   - Uses an ultrasonic distance sensor to check for obstacles in front.
   - If an obstacle is within 20 cm, the car stops, a red light is lit, and a warning sound is emitted.

4. **Stop at Red Line Zone (See Figure 5):**
   - When the camera reads a red line, the car stops, a yellow light is lit, and music is played.

5. **IoT Platform Remote Control for Temporary Parking (See Figure 6):**
   - The team set the blue line as a zone where temporary parking is allowed; the green line is a no-parking zone.
   - Uses the ubidots IoT platform for remote control of the self-driving car's temporary parking.
   - In parking zones, the car stops, a yellow light is lit, and music is played; in no-parking zones, a warning is issued, and the car continues moving.

![Screenshot 2024-01-22 at 18.05.42](https://hackmd.io/_uploads/SJ8tV9iKp.jpg)


6. **Accelerated Return to Endpoint (See Figure 7):**
   - Upon reaching a black line, the program stops fetching cloud data from the IoT platform, significantly reducing loop execution time.
   - The self-driving car accelerates along the black line back to the designated endpoint.


7. **Arrival at Endpoint (See Figure 8):**
   - The endpoint is designed as a long black line perpendicular to the original route.
   - When the camera identifies three specified pixels as black, the car stops, three lights are lit, and the operator is notified to end the program.

![Screenshot 2024-01-22 at 18.06.16](https://hackmd.io/_uploads/ByOv4qita.png)


## Hardware Circuit Diagram
![Screenshot 2024-01-22 at 18.02.00](https://hackmd.io/_uploads/rJONQqsKT.jpg)

## Software Program Execution Flowchart
![Screenshot 2024-01-22 at 18.02.15](https://hackmd.io/_uploads/HyCS79jYa.png)

   

## Most Time-Consuming Part

The most time-consuming part of the project was determining the color and position of the lines to ensure the self-driving car could follow the designated path accurately. Challenges included adjusting color values to accommodate different environmental conditions, as well as fine-tuning the walking distance to balance accuracy and smooth movement. Additional time was spent on mitigating external light interference by adding a shield above the camera. While these challenges were eventually addressed by adjusting parameters and optimizing hardware, some manual assistance was still required for the car to move smoothly.
