Skip to content

Commit c44c0f1

Browse files
ianazagIana Zagornean
andauthored
Project/iana.zagornean (#1407)
* Add project page for iana.zagornean * Update project page * Finish project --------- Co-authored-by: Iana Zagornean <ianazagornean@Ianas-MacBook-Air.local>
1 parent bcc7812 commit c44c0f1

2 files changed

Lines changed: 110 additions & 3 deletions

File tree

website/versioned_docs/version-fils_en/project/2026/iana.zagornean/car-4wd-esp32_kicad_v6.svg

Lines changed: 1 addition & 0 deletions
Loading

website/versioned_docs/version-fils_en/project/2026/iana.zagornean/index.md

Lines changed: 109 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,39 @@ A WiFi-controlled 4WD robot car built with ESP32-C3 in Rust, featuring motor con
1111

1212
## Description
1313

14-
A self-contained WiFi-enabled robotic car powered by the ESP32-C3 microcontroller. The system hosts its own wireless network, letting a phone or laptop connect directly and control the vehicle through a simple web interface. A dual-channel TB6612FNG motor driver manages the left and right motors independently, enabling forward, reverse, and turning movements.
14+
A self-contained WiFi-enabled robotic car built around an ESP32-WROOM development board. The
15+
system creates its own wireless network, allowing a phone, laptop, or controller device to
16+
connect directly and control the vehicle through a browser-based web interface. The car uses
17+
TB6612FNG dual-channel motor driver to control the left and right motor groups independently,
18+
enabling forward movement, reverse movement, and turning in place.
19+
20+
The project includes multiple operating modes. In manual mode, the user controls the car from
21+
the web page or through a connected gamepad. In autonomous mode, a VL53L0X
22+
time-of-flight distance sensor is used to detect obstacles, while a servo motor rotates the
23+
sensor to scan left, center, and right before choosing a safer direction. In line-following
24+
mode, a 5-channel TCRT5000 infrared sensor module detects a black line on the ground and
25+
allows the robot to follow it automatically.
26+
27+
An OLED SSD1306 display is mounted on the robot to show important live information such as
28+
current mode, command, distance value, WiFi status, and battery level. An ESP32-CAM module
29+
with an OV2640 camera is used as a separate WiFi camera unit. It connects to the robot’s WiFi
30+
network and provides a live video stream that is displayed inside the main web control
31+
interface.
1532

16-
A time-of-flight sensor (VL53L0X) monitors distance to obstacles, while a servo motor can rotate the sensor to scan the environment. The device exposes live telemetry (movement status, distance readings, safety flags) in the browser and uses a buzzer to signal warnings such as approaching obstacles.
33+
## Motivation
1734

35+
This project was chosen to explore how embedded systems, robotics, and Rust can be combined into a complete, real-world application. It provides hands-on experience with controlling hardware components like motors and sensors while also implementing higher-level features such
36+
as WiFi communication and a browser-based interface. Building a fully standalone system that can be controlled remotely helps in understanding how modern IoT devices operate without
37+
external dependencies. Additionally, it offers valuable insight into debugging hardware-software interactions and lays the groundwork for extending the project with more advanced capabilities like autonomous navigation and obstacle avoidance.
38+
A self-contained WiFi-enabled robotic car powered by the ESP32-C3 microcontroller. The system hosts its own wireless network, letting a phone or laptop connect directly and control the vehicle through a simple web interface. A dual-channel TB6612FNG motor driver manages the left and right motors independently, enabling forward, reverse, and turning movements.
39+
A time-of-flight sensor (VL53L0X) monitors distance to obstacles, while a servo motor can rotate the sensor to scan the environment. The device exposes live telemetry (movement status, distance readings, safety flags) in the browser and uses a buzzer to signal warnings such as approaching obstacles.
1840
The software is fully implemented in Rust and runs directly on the microcontroller, integrating motor control, networking, and real-time feedback into a compact and autonomous embedded system.
1941

2042
## Motivation
2143

22-
This project was chosen to explore how embedded systems, robotics, and Rust can be combined into a complete, real-world application. It provides hands-on experience with controlling hardware components like motors and sensors while also implementing higher-level features such as WiFi communication and a browser-based interface. Building a fully standalone system that can be controlled remotely helps in understanding how modern IoT devices operate without external dependencies. Additionally, it offers valuable insight into debugging hardware-software interactions and lays the groundwork for extending the project with more advanced capabilities like autonomous navigation and obstacle avoidance.
44+
This project was chosen to explore how embedded systems, robotics, and Rust can be combined into a complete, real-world application.
45+
It provides hands-on experience with controlling hardware components like motors and sensors while also implementing higher-level features such as WiFi communication and a browser-based interface.
46+
Building a fully standalone system that can be controlled remotely helps in understanding how modern IoT devices operate without external dependencies. Additionally, it offers valuable insight into debugging hardware-software interactions and lays the groundwork for extending the project with more advanced capabilities like autonomous navigation and obstacle avoidance.
2347

2448
## Architecture
2549

@@ -28,10 +52,66 @@ Main components
2852
* Control Layer – translates commands into motor actions
2953
* Motor Driver Layer – controls TB6612FNG signals
3054
* Sensor Layer – reads distance (VL53L0X)
55+
* Line Sensor Layer – reads the 5-channel TCRT5000 module and determines the line position.
56+
* OLED Display Layer – shows mode, command, distance, WiFi status, and battery level.
57+
* Battery Monitoring Layer – reads the 2S battery voltage through an ADC voltage divider.
58+
* Camera Module – ESP32-CAM provides a live video stream over WiFi.
59+
* Telemetry Module – sends live status information to the web page.
3160
* Safety Layer – prevents collisions
3261
* Telemetry Module – reports system state
3362

3463
```
64+
Phone / Laptop / Gamepad
65+
|
66+
| WiFi + HTTP Requests
67+
v
68+
Web Control Interface
69+
|
70+
v
71+
Control Logic on ESP32-WROOM
72+
|
73+
+--[ GPIO + PWM ]-------> TB6612FNG Motor Driver
74+
| |
75+
| +--> Right Motors
76+
| |
77+
| +--> Left Motors
78+
|
79+
+--[ PWM ]--------------> Servo Motor 1
80+
|
81+
+--[ PWM ]--------------> Servo Motor 2
82+
|
83+
+--[ I2C ]--------------> VL53L0X Distance Sensor
84+
| |
85+
| v
86+
| Distance Data
87+
|
88+
+--[ GPIO Inputs ]-------> TCRT5000 5-Channel Line Sensor
89+
| |
90+
| v
91+
| Line Position Data
92+
|
93+
+--[ I2C ]--------------> OLED SSD1306 Display
94+
|
95+
+--[ ADC ]--------------> Battery Voltage Divider
96+
|
97+
v
98+
Telemetry and Mode Logic
99+
|
100+
v
101+
Web Response with Live Status
102+
103+
104+
Separate Camera Unit:
105+
106+
ESP32-CAM + OV2640
107+
|
108+
| Connects to ESP32-CAR WiFi
109+
v
110+
Camera Stream URL
111+
|
112+
v
113+
Displayed inside Web Interface
114+
=======
35115
WiFi Client (Phone / Laptop)
36116
|
37117
| HTTP Requests
@@ -85,6 +165,29 @@ Connected ESP32-C3 to the motor driver and powered the system.
85165
Tested GPIO signals and verified connections using a multimeter.
86166
Started debugging motor behavior (direction issues, inactive channels).
87167

168+
### Week 9 - 10
169+
170+
Connected the VL53L0X distance sensor through I2C and added distance readings to the web
171+
interface. Added servo control so the sensor could scan different directions. Implemented an
172+
autonomous obstacle-avoidance mode where the robot checks the front distance, stops near
173+
obstacles, scans left and right, and chooses a safer direction.
174+
175+
### Week 11 - 12
176+
177+
Added the 5-channel TCRT5000 line sensor module. Implemented line sensor reading, pattern detection, and a line-following mode. Added calibration and debugging for the sensor values. Updated the web interface to show the detected line pattern and the estimated line position.
178+
179+
### Week 13 - 14
180+
181+
Added an OLED SSD1306 display over I2C. The display shows the current operating mode, active command, distance reading, WiFi status, and battery percentage. Added battery voltage monitoring using a voltage divider connected to an ADC pin. Improved code organization by splitting the project into multiple Rust files such as configuration, motors, servos, sensors, OLED, web page, web server, and application state.
182+
183+
## Hardware
184+
185+
The hardware is built around an ESP32-WROOM development board, which acts as the main controller, creates the WiFi network, runs the web server, and controls the robot. A TB6612FNG motor driver controls the left and right DC motors using GPIO and PWM signals. The robot uses a VL53L0X distance sensor for obstacle detection, a 5-channel TCRT5000 sensor module for line following, two servo motors for positioning, and an SSD1306 OLED display for showing live status such as mode, command, distance, WiFi state, and battery level. The battery level is measured through a voltage divider connected to an ADC pin, while an ESP32-CAM with an OV2640 camera connects through WiFi and provides the live video stream. The system is powered by a 2S battery pack with voltage regulation, and all modules share a common ground.
186+
187+
### Schematics
188+
189+
![Schematics](./car-4wd-esp32_kicad_v6.svg)
190+
=======
88191
## Hardware
89192

90193
The hardware setup is built around the ESP32-C3 microcontroller, which acts as the main control unit and provides WiFi connectivity. A TB6612FNG motor driver is used to control two DC motors for movement (left and right). A VL53L0X time-of-flight distance sensor is connected via I2C for obstacle detection, while a servo motor is used to rotate the sensor for environmental scanning. An active buzzer provides audio feedback for alerts. The system is powered by a battery pack with a voltage regulator, and all components are connected using jumper wires on a prototyping setup.
@@ -101,6 +204,9 @@ The hardware setup is built around the ESP32-C3 microcontroller, which acts as t
101204
|--------|--------|-------|
102205
| [ESP32-C3 Dev Board](https://www.espressif.com/en/products/socs/esp32-c3) | Main microcontroller with WiFi | [35 RON](https://www.emag.ro/placa-de-dezvoltare-esp32-c3-rqiurpn-cu-modul-esp32-c3-mini-1-wi-fi-si-bluetooth5-0-4mb-flash-dimensiuni-compacte-11-kaifaban-esp32-c3/pd/D6NX9S3BM/?ref=history-shopping_479433225_242875_1) |
103206
| [TB6612FNG Motor Driver](https://www.sparkfun.com/products/14450) | Controls DC motors (left/right) | [20 RON](hhttps://www.emag.ro/driver-motor-tip-tb6612fng-ai0383-s299/pd/D6QW8GMBM/?ref=history-shopping_481656189_236249_1) |
207+
| [TCRT5000 5-Channel Line Sensor](https://components101.com/sensors/tcrt5000-ir-sensor-pinout-datasheet)| Detects black line for line-following mode | [15 RON](https://sigmanortec.ro/Modul-Urmarire-Linie-5-Canale-cu-bumper-TRCR5000-p172447718) |
208+
| [ESP32-CAM with OV2640](https://www.espressif.com/en/products/devkits/esp32-cam) | Provides live video stream over WiFi | [60 RON](https://www.emag.ro/placa-esp32-cu-camera-wifi-esp32-cam-ble-4-2-programator-dedicat-negru-esp32-cam-mb/pd/DW8798MBM/?ref=history-shopping_488190962_119667_1) |
209+
| [SSD1306 OLED Display 0.96 inch 128x64](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf) | Displays mode, command, distance, WiFi status and battery level | [20 RON](https://sigmanortec.ro/Display-OLED-0-96-I2C-IIC-Albastru-p135055705) |
104210
| [Wheels with DC Gear Motors (x4)](https://electronicmarket.ro/6v-250-rpm-motor-si-roti?search=roti) | Movement (wheels) | Already owned |
105211
| [VL53L0X ToF Sensor](https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html) | Distance measurement | [25 RON](https://www.emag.ro/senzor-de-masurare-a-distantei-tof-vl53l0x-ai280-s366/pd/DS9D93MBM/?ref=history-shopping_482448154_38837_1) |
106212
| [SG90 Servo Motor](https://www.towerpro.com.tw/product/sg90-7/) | Rotates sensor (scan) | Already owned |

0 commit comments

Comments
 (0)