Skip to the content
2 layers97.8 × 66.2 mmThe Big One, the printed circuit board in 3D

ESP32-S3-WROOM-1 RC car controller PCB with Wi-Fi app control (KiCad, ESP-IDF, MIT App Inventor)

Size
97.8 × 66.2 mm
Copper layers
2
Thickness
1.6 mm
Parts
86
Nets
83
Pads
360
Tracks, vias
524, 53
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
18 Oct 2026
Updated
19 Oct 2026

Overview

The Big One is an open-source printed circuit board by iustinG-afk, from the iustinG-afk/The48ErrCar repository on GitHub, published under the MIT licence. It is a 2-layer board of 97.8 × 66.2 mm with 86 parts on 83 nets, routed with 524 tracks and 53 vias.

It is built around the ESP32-S3-WROOM-1-N8, TPS54331D and DRV8833PWP, with the AMS1117-1.5 among its other parts. Its parts include 24 resistors, 18 capacitors, 6 transistors, 5 ICs and 4 diodes. It belongs with the radio and wireless boards and the ESP32 boards of this library.

Main components

4

README

README.md

The48ErrCar: ESP32-S3 RC Car Controller Board

A custom-designed PCB that turns an RC car chassis into a Wi-Fi-controlled, sensor-equipped vehicle, driven from a mobile app built in MIT App Inventor.

I designed the board from scratch in KiCad, wrote the firmware in C (ESP-IDF) with the help of AI, hand-soldered every component, and built the control app. This was my first PCB project, so this repository also documents what went wrong and what I learned from it.

The48ErrCar assembled board


Highlights

  • Custom 2-layer PCB designed in KiCad, with an ESP32-S3-WROOM-1 at its core
  • Two buck converters from a 7.4 V battery pack (2x 18650 in series): one to 3.3 V for logic, one to 5 V for peripherals
  • Dual-motor-pair drive through a DRV8833 H-bridge, plus servo steering
  • Wi-Fi control: the ESP32 hosts its own access point and a small web server, and the phone app talks to it over HTTP
  • Native USB-C programming through the ESP32-S3's built-in USB controller, so no USB-to-serial chip is needed
  • Hand-assembled with a soldering iron and heat gun (SMD, 0805/1206 passives, SOIC and HTSSOP packages)

Features

FeatureStatusNotes
Forward / reverse driveWorkingPWM speed control through DRV8833
SteeringWorkingServo driven by PWM
Front headlightsWorkingN-MOS low-side switching
Brake / rear lightsWorkingAutomatically on when reversing or braking, with a manual override
Left / right turn signalsWorkingBlinking at 500 ms
Horn / buzzerWorkingHold-to-sound from the app
Water pumpWorkingLow-side N-MOS switch with flyback diode
Temperature & humidity (DHT11)WorkingRead on demand from the app
Ultrasonic rear parking sensorWorkingCuts reverse motor power at 5 cm or closer and beeps
Clap-controlled turn signalsWorking, limitedMicrophone detects volume spikes: 2 claps = left, 3 claps = right, 4 claps = hazard
Camera (OV3660, 24-pin FPC)Not workingSee Known issues

System overview

text
                    2x 18650 (≅7.4 V)
                           |
                   [3A PTC polyfuse]
                           |
          +----------------+----------------+
          |                |                |
   Buck -> 3.3 V     Buck -> 5 V        Motor supply
   (TPS54331)        (TPS54331)           (7.4 V)
          |                |                |
   ESP32-S3, DHT11,   Servo, pump,       DRV8833
   mic, camera LDO    buzzer, US sensor   -> L / R motor pairs
          |
   ESP32-S3 (Wi-Fi AP + HTTP server)
          ^
          | HTTP over Wi-Fi
          |
   MIT App Inventor app (phone)

Schematic


Hardware

Power

  • Battery: 7.4 V (2x Li-Ion 18650 in series), protected by a 3 A resettable PTC polyfuse.
  • 3.3 V rail: TPS54331 buck converter, 10 µH inductor, 22 µF output capacitor. Feedback divider 31.6 kΩ / 10 kΩ gives about 3.33 V. Soft-start, bootstrap and compensation networks are included.
  • 5 V rail: a second TPS54331 stage (52.3 kΩ / 10 kΩ divider) for the servo, pump, buzzer and ultrasonic sensor.
  • Why buck converters instead of linear regulators: they step the voltage down by fast switching rather than burning the difference as heat, which matters when running from a battery.
  • Test points on +7.4 V, +5 V, +3.3 V and GND for easy debugging.

Microcontroller

  • ESP32-S3-WROOM-1 (integrated antenna and matching network)
  • Reset/boot circuitry: RC delay on EN, pull-ups, and two buttons for reset and download mode
  • Local decoupling (22 µF + 100 nF) placed directly beside the module
  • USB-C connector wired straight to the S3's native USB D+/D- (CC pull-downs of 5.1 kΩ)

Motor driver and steering

  • DRV8833 dual H-bridge drives the left-side and right-side motor pairs (connectors J5 / J4)
  • Bulk capacitor on the motor supply to absorb current spikes when starting or stalling
  • Current-sense pins tied to ground (full current)
  • Servo signal on a 3-pin header

Switched loads

Water pump, buzzer and four lights (front, rear, left and right signals) each use a logic-level N-MOSFET low-side switch with:

  • a 10 kΩ pull-down on every gate, so nothing switches on randomly while the ESP32 is booting
  • a Schottky flyback diode on inductive loads (pump, buzzer)
  • 220 Ω current-limiting resistors on the LEDs

Connectors

Sensors, motors, servo, microphone and lights connect through pin headers and jumper wires rather than being soldered to the board, so they can be mounted wherever they fit on the chassis.

PCB layout3D render
PCB layout3D render

Firmware

Written in C with ESP-IDF and FreeRTOS (main.c).

  • Starts a Wi-Fi access point and an HTTP server on the ESP32 (default address 192.168.4.1)
  • Control endpoint /cmd?c=... handles lights, signals, horn, pump, microphone mode and drive commands; /dht returns temperature and humidity
  • Drive and steering use LEDC PWM channels
  • Dedicated FreeRTOS tasks run in parallel for:
    • turn signals / rear lights
    • reverse safety, using an ultrasonic distance check that stops the motors at 5 cm or closer
    • clap detection, sampling the microphone through the ADC and counting volume spikes
  • DHT11 is read with a custom bit-banged driver
  • MJPEG camera stream server on /stream (disabled in practice because the camera hardware does not work, see below)

Security note: the access point name and password are defined in main.c. Change them before using the car anywhere other than your desk.


Mobile app

Built in MIT App Inventor (block-based). The app:

  • shows an intro screen and checks the connection by pinging the car (/cmd?c=ping)
  • enables the Start button only once the car answers, and shows "Connect to Wi-Fi!" if it times out
  • provides the control interface for driving, lights, signals, horn, pump, temperature and microphone mode
  • includes a credits screen with links to my Instagram, LinkedIn and GitHub
StartCredits
App screen2App screen4

The App Inventor block screenshots are in MIT/.


Design revisions

V1 (fabricated and assembled)

  • Built and soldered by hand. Most of the board works, but it has the issues described below.

V2 (current layout in this repository)

  • Corrected the MOSFET footprints (the V1 pinout was wrong, see below)
  • Added a 1.5 V LDO (AMS1117-1.5) with 2x 10 µF capacitors for the camera supply
  • Added 4.7 kΩ I²C pull-ups on the camera SDA/SCL lines
  • Reworked routing around the camera connector

V3 (through-hole version)

  • A through-hole variant of the board for easier hand assembly, built after the SMD experience
SchematicPCB layout3D render
SchematicPCB layout3D render

Known issues

This was my first PCB, and I would rather document the mistakes honestly than hide them:

  1. MOSFET pinout reversed. I used an N-MOS symbol and footprint with a gate-source-drain order that doesn't match the actual SOT-23 parts. On the fabricated V1 board, the six transistors had to be fitted upside down on the back of the board to work. Fixed in V2.
  2. Camera does not work. I designed for an OV2640, but the module I received from AliExpress turned out to be an OV3660. The pinout is very similar, so the firmware targets the OV3660. I didn't realise the 24-pin FPC connector is numbered 1 to 24 and wired my pin mapping in reverse. I tried a reversing workaround, but the camera never came up. The cause may also be a damaged connector or poor pad contact after rework. I also initially forgot the 1.5 V supply that the camera needs, which V2 adds.
  3. Microphone is a spike detector, not an audio input. It only measures volume peaks, which is enough for clap detection but not for recording sound.
  4. Layout is not optimal. The routing was rushed. The V2 layout cleans it up, but it has not been fabricated.

What I learned

  • Always check pin numbering and orientation against the datasheet and footprint, and verify symbol pin order, not just names
  • Add pull-down resistors on MOSFET gates and understand why
  • How buck converters work: feedback dividers, soft-start, bootstrap, compensation, inductor and diode placement
  • The value of decoupling capacitors and keeping switching components away from the antenna
  • Hand-soldering SMD parts with an iron and heat gun is hard, and rewarding
  • Firmware design on ESP-IDF with FreeRTOS tasks

Bill of materials (summary)

QtyPart
1ESP32-S3-WROOM-1
2TPS54331D buck converter (SOIC-8)
1DRV8833PWP motor driver (HTSSOP-16)
1AMS1117-1.5 LDO (V2)
6N-channel MOSFET (SOT-23)
4Schottky diode (SMA)
210 µH inductor
13 A PTC resettable fuse
1USB-C receptacle
124-pin 0.5 mm FPC connector
220805 resistors
9 / 70805 / 1206 capacitors
2Tactile push buttons
1Buzzer
-Pin headers

Off-board: DC motors, servo, DHT11, HC-SR04-style ultrasonic sensor, microphone module, water pump, LEDs, 2x 18650 cells.


Repository structure

text
.
|-- docs/      images, gifs, documentation
|-- Through-hole/     KiCad project, schematic, layout V2
|-- MIT/           MIT App Inventor project pictures, videos, logo
|-- The48ErrCar.apk      Apk to download the app
|-- firmware.c/          ESP-32 Code
|-- hardware.c/          KiCad project, schematic, layout

Assembly

The board was assembled entirely by hand with a soldering iron and a heat gun.

Assembly timelapse

Status

The board, firmware and app work together. The car was not assembled onto a chassis: my focus was the PCB design, schematic and firmware, so mounting is left as a DIY step.

Author

Iustin George: GitHub · LinkedIn · Instagram

Parts

86
QtyValueFootprintReferences
1210kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1, R4, R7, R8, R11, R12, R13, R15, R16, R18, R20, R22
9Conn_01x02Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalBack, Front, J1, J3, J4, J5, J7, Left, Right
6Q_NMOS_GDSPackage_TO_SOT_SMD:SOT-23Q1, Q2, Q3, Q4, Q5, Q6
4220Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR14, R17, R19, R21
4D_SchottkyDiode_SMD:D_SMAD1, D2, D3, D4
4TestPointTestPoint:TestPoint_Pad_D2.0mmTP1, TP2, TP3, TP4
3100nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C4, C13
310uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC3, C8, C11
322uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C6, C15
3Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ_Temp1, J6, J10
210uInductor_SMD:L_Taiyo-Yuden_NR-60xx_HandSolderingL1, L2
210uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC17, C18
22.2nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC7, C14
222kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR6, R9
24.7kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR23, R24
247nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC5, C12
25.1kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2, R3
2SW_PushButton_Switch_THT:SW_PUSH_6mm_H5mmSW1, SW2
2TPS54331DPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU2, U4
110nCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC10
11uCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC16
12.2uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC9
131.6kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5
13AFuse:Fuse_1812_4532MetricF1
152.3kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR10
1AMS1117-1.5Package_TO_SOT_SMD:SOT-223-3_TabPin2U5
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ9
1Conn_01x24Connector_FFC-FPC:Hirose_FH12-24S-0.5SH_1x24-1MP_P0.50mm_HorizontalJ8
1DRV8833PWPPackage_SO:HTSSOP-16-1EP_4.4x5mm_P0.65mm_EP3.4x5mm_Mask2.46x2.31mm_ThermalViasU3
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J2

The 82 most common of 86 parts.

Similar boards

  • 4 layers80 × 52.7 mmVFDClock, the printed circuit board in 3D

    VFDClock

    GraniteGobbler/VFDClock

    ESP32-S3 -based IV-22 desk clock

    84 parts
  • 2 layersEsp32s3 pcb, the printed circuit board in 3D

    Esp32s3 pcb

    prasannan-robots/Energy-Management-using-Surveillance-Camera

    This is a project which uses camera to detect the humans and control indoor appliances

    59 parts
  • 2 layers0.7 × 0.5 mmCartDiem STM, the printed circuit board in 3D

    CartDiem STM

    cartediem/Carte-Diem

    Carte Diem - Smart Shopping Cart (EECS 473 F25)

    110 parts1GPL-3.0
  • 4 layers102 × 34 mmNetscore, the printed circuit board in 3D

    Netscore

    arcticlula/Netscore

    Device that keeps track of a volleyball's game score (points and sets). Ideally it should be mounted on the net, since it has a display on the front and back and buttons on the sides.

    115 partsMIT
  • 4 layers115 × 82.3 mmMainPCB, the printed circuit board in 3D

    MainPCB

    HelloAlex4/Maturitaetsarbeit-Design-and-Development-of-a-Portable-Stereoscopic-Wigglegram-Camera

    Documentation of the merged wigglegram camera

    288 parts12
  • 4 layers33 × 71.5 mmMini pcie breakout, the printed circuit board in 3D

    Mini pcie breakout

    TobleMiner/mini-pcie-breakout

    A small mini PCIe breakout board

    36 parts7
  • 2 layers98.6 × 39 mmGWR pcb, the printed circuit board in 3D

    GWR pcb

    juicykinklabs/TongueTyper

    A talking-gag that acts as a game controller, posture trainer, speaker, and more.

    68 parts1GPL-3.0

Questions

How big is the The Big One PCB?

It measures 97.8 × 66.2 mm and has 2 copper layers, 1.6 mm thick.

What parts does the The Big One use?

86 parts, built around the ESP32-S3-WROOM-1-N8, TPS54331D, DRV8833PWP and AMS1117-1.5. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the The Big One KiCad files?

From the iustinG-afk/The48ErrCar repository on GitHub, at the commit this page was made from: the board is hardware/The Big One.kicad_pcb and its schematic hardware/The Big One.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the The Big One design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).