Previously I had build couple of RC controlled car with Arduino with Bluetooth, controlled with NodeMCU WiFi and wrote note on it in my diary note Arduino-Based Bluetooth Car, autonomous robot car and Two wheels WiFi control NodeMCU Car.
Now for weeks, I had been itching to build something small, mobile, and intelligent—something that could move around and stream live video, all controlled over Wi-Fi. I wanted to keep it minimal but still functional. That’s when the idea struck: “Why not turn the ESP32-CAM into a roving surveillance car?”
Here’s the journey.
๐ What I Wanted to Build
My goal was to make a wireless car that could be:
-
Driven remotely via a browser
-
Capable of transmitting real-time video
-
Built using low-cost, off-the-shelf components
I also wanted to avoid extra modules like Bluetooth or external camera units. The ESP32-CAM, with its built-in OV2640 camera and Wi-Fi support, seemed like a perfect candidate.
๐ง Gathering the Gear
Here’s what I used:
-
ESP32-CAM board (the AI-Thinker model)
-
L298N motor driver IC
-
Two small DC motors with a wheel chassis
-
A rechargeable battery pack (I used a 12V source)
-
FTDI adapter to upload code to the ESP32-CAM
-
Jumper wires and a breadboard for quick prototyping
I designed a simple two-wheel car with the third point resting on a castor wheel. The ESP32-CAM went on top, like a surveillance tower.
Circuit Diagram
Following is the circuit diagram of
๐ ️ The Build Process
1. Programming the ESP32-CAM
The ESP32-CAM has no built-in USB port, so I connected an FTDI adapter to it:
-
TX → RX, RX → TX (crossed)
-
5V and GND to power it
-
GPIO0 to GND to enable flashing mode
I used the Arduino IDE with the ESP32 board package installed. I wrote a basic sketch that:
-
Connected the ESP32-CAM to my Wi-Fi
-
Started the camera
-
Launched a web server that streamed video and accepted movement commands
2. Motor Control
The L293D module driver was wired to the two motors and four GPIO pins (GPIO 4, 2, 14, and 15). Based on incoming commands from the web interface, these pins turned the motors forward, backward, or rotated them for turning.
๐ Controlling It Remotely
Once the sketch was uploaded, I restarted the board (after disconnecting GPIO0 from GND). The Serial Monitor showed the ESP32-CAM’s IP address. Typing this into a browser pulled up a neat web page—complete with video stream and four control buttons: Forward, Back, Left, Right.
Tapping the buttons controlled the car in real time while showing exactly what it "saw."
๐ What Worked, What Could Be Better
What went well:
-
The video stream was surprisingly smooth on a strong Wi-Fi signal
-
The browser control worked on both PC and mobile
-
The setup was compact and neat
What could improve:
-
There’s no speed control—it’s all or nothing
-
No reverse camera view
-
No obstacle detection
๐ง Next Steps
Now that the basic prototype is done, I’m thinking of adding:
-
Pan and tilt control using servos
-
Battery level monitoring
-
Maybe even voice control using a smartphone!
๐งพ Final Thoughts
Building this project was a fun introduction to using the ESP32-CAM beyond just static video applications. It taught me about GPIO control, web interface design, and embedded camera streaming—all in one package.
If you’re looking to explore robotics or DIY surveillance systems, this is a highly rewarding weekend project.