This is an old revision of the document!
SCOUT-CAM is a compact, dual-mode reconnaissance rover designed for inspecting hazardous, confined, or hard-to-reach indoor environments where human entry is unsafe, slow, or simply impractical. Typical use cases include:
The rover streams live video from an on-board ESP32-CAM and is steered with a Sony DualShock 4 controller. It seamlessly switches between two operating modes:
The system has three logical layers, separated by the communication medium they use:
In manual mode the ESP8266 is essentially a translator: it turns network commands into signals for the servos and the DC motors. In autonomous mode it ignores the drive commands from the PC and instead runs a simple behaviour:
The operator can take control back at any moment by pressing the mode-toggle button on the PS4 controller — useful when the rover gets stuck or makes a poor decision.
To address the elephant in the room, the reason the PS4 controller input passes through the Host PC instead of going straight to the ESP32-CAM is that, because the module only has one available antenna, activating both Bluetooth (Classic) and WiFi at the same time would require handling allocating time slices to both protocols on the antenna. This isn't a problem on itself, but the video quality of the live feed (already pretty low) would take a nosedive, together with serious input lag for the controller inputs.
Even after control of the sensor, servos and motors was moved to the newly added ESP8266, the issue persists, as the microcontrollers doesn't have neither internally implemented Bluetooth, nor enough pins to attach a Bluetooth module. While an ESP32 (with integrated Bluetooth) might've been preferable in this situation, time and budget constraints did not allow purchasing of another microcontroller.
| Adafruit Feather HUZZAH ESP8266 |
| ESP32-CAM (AI-Thinker) |
| 3-pin Makeblock ultrasonic sensor |
| 2× resistors (5 V → 3.3 V divider for the ultrasonic SIG line) |
| 2× Makeblock Analog servos |
| L298N dual H-bridge motor driver |
| 2× DC motors |
| MB102 power supply module |
| 9 V battery (MB102 input) |
| 3.7 V Li-Po battery (ESP8266 logic) |
| 6× AA battery pack (motor supply) |
| Host PC |
| Sony DualShock 4 |
| ESP32-CAM-MB USB to serial adapter for flashing |
ESP8266 (Feather HUZZAH):
| GPIO 4 | Servo 1 — signal |
| GPIO 5 | Servo 2 — signal |
| GPIO 2 | Ultrasonic SIG (via 5 V → 3.3 V voltage divider) |
| GPIO 16 | L298N ENA |
| GPIO 14 | L298N ENB |
| GPIO 0 | L298N IN1 |
| GPIO 15 | L298N IN2 |
| GPIO 13 | L298N IN3 |
| GPIO 12 | L298N IN4 |
| BAT/EN | 3.7 V Li-Po battery |
| GND | Common ground |
ESP32-CAM:
| 5V pin | MB102 5 V rail |
| GND | Common ground |
| (all other pins) | Not connected |
TBA