Loading files…
This project was completed as a PCB design assessment using KiCad. It covers the complete PCB workflow — from schematic design through PCB layout to fabrication-ready manufacturing files.
The board is built around an ESP32-WROOM-32, with dedicated schematic sections for power regulation, dual DC motor drive, and an external camera interface. Firmware for the board is included in Code/.
flowchart LR
PWR["Power Block\nDMP3017SFG · MP1584EN · AMS1117-3.3V"]
MCU["ESP32-WROOM-32\n(Core)"]
MOT["Motor Driver Module\nDual H-Bridge (TB6612FNG pinout)"]
CAM["Camera Interface\nOV2640 connector (J9)"]
PWR -- "+5V / +3.3V rails" --> MCU
MCU --- MOT
MCU --- CAM
Diagram reflects the four sections laid out in the schematic sheet. See Schematic/ for the exact nets and pin assignments.
As laid out across the schematic sheet:
| Block | Key Devices (from schematic) | Notes |
|---|
| Power Block | Q1 DMP3017SFG load switch, F1 5A fuse, U2 MP1584EN buck converter, U1 AMS1117-3.3V LDO | Produces the board's +5V and +3.3V rails from the DC input at J1 |
| ESP32-WROOM-32 Core | U3 ESP32-WROOM-32, SW1 / SW2 push buttons, header breakouts J3 / J6 / J7 / J8 | Main controller; antenna keep-out zone observed on the PCB layout |
| Motor Driver Module | U4 dual H-bridge driver (STBY / PWMA / PWMB / AIN1-2 / BIN1-2 / AO1-2 / BO1-2 pinout, matching TB6612FNG) | Drives two DC motors via screw terminals MOTOR A1 and MOTOR B1 |
| Camera Interface | J9, 24-pin connector labelled CAMERA_(OV2640) | Breaks out data (D0–D7), clock (XCLK/PCLK), sync (HREF/VSYNC), control (SIOD/SIOC/PWDN/RESET) |
Confirmed directly from the Gerber job file — not estimated:
| Parameter | Value |
|---|---|
| Layer count | 2 |
| Board thickness | 1.6 mm |
| Board size | 78.55 mm × 61.05 mm |
| Surface finish | None specified |
KiCad-PCB-Assessment/
├── README.md
├── LICENSE
├── Images/ # PCB photos, schematic view, and 3D renders
├── Schematic/ # KiCad schematic file and exported schematic PDF
├── PCB/ # KiCad PCB layout, project file, and exported layout PDF
├── Gerber/ # Gerber files for fabrication
├── Drill/ # NC drill files (plated and non-plated holes)
└── Code/ # ESP32 firmware for the board
|
Schematic Power Block · Motor Driver Module · ESP32-WROOM-32 · Camera Interface |
PCB Layout (Top) Routed top layer, antenna keep-out zone marked |
|
Camera Connector Detail J9 — 24-pin OV2640 breakout |
3D View Angled render of the populated board |
A PCB bottom view has not been added yet.
A few details visible directly in the layout, worth calling out to anyone reviewing the board:
MP1584EN) steps the input down to 5V, followed by an LDO (AMS1117-3.3V) for the 3.3V logic rail.ESP32 firmware for the board lives in Code/, targeting an AI-Thinker ESP32-CAM (ESP32-S, OV2640).
| File | Responsibility |
|---|---|
RoboBot_Firmware.ino | Entry point — brings up Wi-Fi, BLE auth, the camera server, and the control link |
config.h | Central configuration: pins, PCA9685 channel map, timing, and safety limits |
ble_auth.* | BLE peripheral that authenticates a client and mints a session token |
auth_session.* | Session token issuance, TTL, and validation |
net_ws.* | WebSocket control link — Wi-Fi connection and token-gated command handling |
camera_stream.* | Token-gated MJPEG stream over HTTP |
motor_control.* | Dual DC motor control (TB6612FNG pinout) via a PCA9685 PWM controller |
laser_aim.* | Laser aiming servo control |
gps_telemetry.* | Reads GPS fixes over UART and forwards them periodically |
Control flow: a client authenticates over BLE with a shared secret, receives a session token, then uses that token to authorize both the WebSocket control channel and the video stream. Every drive command carries the token; requests without a valid one are rejected.
Design constraint documented in config.h: the ESP32-CAM's camera interface consumes almost all available GPIOs, leaving too few pins to directly drive two motor channels, a laser servo, and a laser diode. The firmware offloads all of that onto a single I²C PCA9685 PWM controller, keeping one hardware UART free for the GPS.
Note:
config.hin this repository holds placeholder values for the Wi-Fi credentials, control server address, and BLE shared secret. The real values are kept in a local, untracked copy and are not published here.
Library dependencies (Arduino Library Manager):
esp_cameraBuild target: board "AI Thinker ESP32-CAM", PSRAM enabled, partition scheme "Huge APP".
This repository includes Gerber files and NC drill files, ready for PCB fabrication.
Gerber/
Drill/
This repository is intended for portfolio and educational purposes.
No comments yet. Be the first to ask about this board.