
Explore designing a four-layer IoT development board in KiCad 9, from components and schematic design to layout, BOM, power grounding, thermal and signal integrity considerations, with 3D visualization.
Master component selection and bill of materials for an IoT development board in KiCad 9, covering ESP32, SD card, sensors, USB-C, power and battery management, and manufacturing readiness.
Explore the IoT development board design powered by the Esp32 C3, focusing on signal conditioning, decoupling capacitors, pull-up resistors, and reliable I2C startup behavior.
Explore a multi-page schematic editor in KiCad 9, organizing power, ESP32, sensors, and pages. Learn four-layer PCB layout with top signal layers, inner ground and 3.3V zones, and zone management.
Balance practical constraints with advanced KiCad 9 design to build an Esp32 IoT board. Acquire datasheets, footprints, and 3D models before design, ensuring a four-layer, manufacturable, wireless microcontroller project.
Design an ESP32-based IoT pcb with dual-core processing, integrated sensors (bme 280, microphone, light), USB and battery power, SD card and on-board flash storage, antenna placement considerations.
Research and pre-collect components for a KiCad project, gathering data sheets, footprints, symbols, and libraries from sources like Snap Magic to ensure smooth design.
Start the Kicad project by running Kicad 8 and Kicad 9 in parallel on macOS, finalize bill of materials with the Esp32, and review datasheets, footprints, and symbols from Naypyidaw.
Navigate KiCad 9 project configuration from creating and saving a new project to tuning schematic and PCB editor grids, display options, crosshairs, plus plugins for free routing and HQ DFM.
Install KiCad project-specific footprints and symbol libraries from the esp32 project folder, selecting footprints and symbols, and organize them under the esp32 project libraries for easy reuse.
Demonstrates starting a KiCad schematic across four pages for USB power, ESP32, sensors, and UI, placing USB receptacle, charger, regulator, and battery connector.
Learn advanced pcb design with KiCad 9 by building a lipo battery charger schematic, wiring pull-down resistors and LEDs, and establishing a 5 volt USB net per the datasheet.
Implement usb port overcurrent protection with a poly fuse on vbus b1, add a 0.1 µf input capacitor, and use no connect flags for unconnected pins while enabling KiCad backups.
Create nets in KiCad using net labels to form differential pairs for USB data pins. Organize vbus and plus-five-volt nets to prepare the USB connector block for layout.
Finish wiring the lipo charger circuit in KiCad by wiring vbus and vbat, adding five-volt usb input, ground, a filter capacitor, and a power flag to satisfy checks.
Design a low-dropout regulator in KiCad, using a 0.1 µF ceramic and 10 µF tantalum near the regulator’s Vout pins, with clearly labeled 5 V in and 3.3 V out.
Rotate the battery connector so the pins face inward, label vbat and ground, and add a power indicator LED with a current-limiting resistor to show 3.3V from the regulator.
Add a hierarchical sheet symbol on page 2 to contain the Esp32 C302 and related hardware, rename the sheet file Esp32 C302, and connect it to the next hierarchy level.
Rewire the Esp32 sheet in KiCad by moving blue to stat two for charging and green to stat one for charged; add labels and set R6 to 20 k.
Navigate to the second schematic sheet to place ESP32 circuitry, including the USB module, SD card module, CP2102 USB-to-UART bridge, and flash memory, and rename designators to match notes.
Designs a USB-UART bridge for the ESP32-C3 in KiCad, wiring USB to serial with Vbus protection, ESD suppression, a voltage ladder, and reset/boot circuitry for programming.
Place a 50 ohm resistor by io6 and connect to sclk nets; label pins and connect io1 to photo sensor, io2 to miso, io5 to microphone.
Design an spi-based sd card module for the esp32 in KiCad 9, wiring mosi, miso, clock and cs with pull-up and signal conditioning, plus 3.3-volt power and ground decoupling.
Wire up the flash memory via spi, duplicating cs, clock, di, and miso pins; connect hold to 3.3 v; add a 50-ohm resistor and a 0.1 μF bypass capacitor.
Create hierarchical KiCad pages for sensors and user interface, assign cyan and orange sheets, populate the legend with Esp32, USB, flash memory, then save and verify.
Add test points on a KiCad 9 PCB to test the SPI interface, placing MOSI, MISO, clock, and CS pads for SD card and flash memory, with mirroring for symmetry.
Design the sensors sheet circuitry in KiCad 9 by placing the microphone preamplifier, Bme280 environment sensor, ambient light sensor, and microphone, all connected via I2C, guided by component datasheets.
Set up a BME280 on I2C bus in KiCad with 4.7 kΩ pull-ups to 3.3 V, ground SDO for address 076 hex, and add a 0.1 μF cap to ground.
Connect the ambient light sensor as an analog device with a 10k pull-up to 3.3 V, routing its output to the ESP32 via the photo C net.
Build the microphone preamplifier with 3.3 V supply, capacitors, and a voltage divider, then route the mic output to the ESP32 page in KiCad via hierarchical sheet pins.
Configure the user interface schematic with connectors J4, J6, and J5, two transistors, boot and enable switches, and i2c oled and gpio breakout for 3.3v, ground, sda, and scl.
Design a boot and enable circuit for the ESP32 S3 dev kit using transistors, pull-up resistors, a debounced boot and reset button pair, and KiCad schematic annotations.
Master symbol-footprint associations in KiCad 9 by assigning footprints to capacitors, resistors, tantalums, and connectors; use filters and multi-select, then validate with the electrical rules checker.
Learn to run KiCad's electrical rules check (erc) to diagnose errors and warnings, fix power flag and ground connections, manage exclusions, and prepare for the layout editor.
Configure a four-layer PCB layout in KiCad, assigning a top component layer and inner plane zones for ground and power, while aligning with NextPCB constraints and designing differential pairs.
Set up net classes in KiCad 9 and assign nets (3.3V, 5V, ground, SPI, Gpio) from schematic to the layout editor, then configure wire thickness, color, and line style.
Use the calculator to size track widths based on total current draw, including external vs internal layer considerations, and to plan power distribution with copper zones.
Relink missing footprints by updating symbol-to-footprint associations with the associations tool and footprints chooser. Re-import the schematic, place the newly linked components, and prepare for routing.
Place components in the layout editor following Espressif guidelines for the Esp32. Arrange SD card, USB, LEDs, and buttons for easy access and clear routing.
Apply Espressif layout guidance to place the ESP32 while avoiding antenna interference. Finalize a layout that places the module on the top-right edge with a cutout.
Place the ESP32, SD card, flash memory, and USB module in the layout using a fine 0.025 inch grid, while highlighting groups across schematic and layout to minimize tracks.
Draw the edge-cut outline with a line tool, ensuring 15 mm clearance from the antenna and no copper below it, then place resistors and capacitors near their main components.
Place capacitors and resistors to condition signals from the esp32 and sensors, using decoupling, bypass, bulk caps, pull‑ups, filters, and current limiting for noise reduction and level matching.
Place C8 near the ESP32 3.3V pin and add C7 to further reduce noise. Rotate components to minimize traces and place C11 to vbus, and R19 pull-up near SD 3.3V.
Learn how to route SPI signals in a bus topology between ESP32, flash memory, and SD card, optimize passive placement, and apply high speed layout guidelines to minimize crosstalk.
Refine the Esp32 and sd card layout in KiCad 9 by placing capacitors and resistors, and optimize rat's nest visibility and SPI routing.
Fix a design bug in KiCad 9 by correcting a ground connection on R3, adding a missing 1 µF capacitor (C19) between R3 and ground, and updating the 0805 footprints.
Refine placement and wiring in KiCad 9 by adding a missing 10 nF capacitor, integrating SMD footprints, and optimizing microphone, ESP32 routing and copper zones.
Refine the board outline on the edge cuts layer by rounding corners, adding mounting points, and using shape modification to chamfer or fill edges to 1-2 mm.
Select mounting holes from footprints library and size them to 2.5mm, then override lock, adjust position, duplicate, and place holes on the board.
Route pcb traces by creating copper zones for ground and power, differential pairs, clocks and high-speed nets like SPI and I2C, finishing with power traces; prefer manual over auto routing.
Create copper zones in KiCad 9 to power and ground the board, naming 3.3V, Vbus and five volt USB zones, and connect pads between layers with vias for solid fills.
Master differential pair routing in KiCad, using the differential pair tool, the six keyboard shortcut, and adjustments to manage clearance, alignment, and symmetry for usb d+ d- and vbus nets.
Route the I2C SCL and SDA traces, isolate them from high-speed signals, and match their lengths within 400 kHz standard; use space under the ESP32 to adjust SDA.
Use KiCad’s length tuning tool to adjust a single track from 41mm to within tolerance, then continue with the SPI interface and I squared c connections.
This lecture covers routing the spi interface on the Esp32, detailing miso and mosi connections to the sd card and flash memory, clock optimization, test points, and top-layer bus routing.
Route power traces by connecting ground and 5V USB pads to the correct copper zones with vias, segment by segment, and also tie 3.3V nets for reliable power delivery.
Route usb differential pairs on KiCad using inner layers to minimize vias, break to other layers as needed, and keep dp and pn traces length-matched and similar.
Continue with the power pads and power tracks in KiCad 9, advancing the advanced pcb design work.
Standardize track widths in KiCad 9 by setting 3.3V nets to 0.5 mm tracks and vias (0.5 mm diameter, 0.3 mm hole), then widen ESP32 power track to 0.8 mm.
Connect remaining signal tracks across front and bottom copper layers, adjust trace widths and differential pairs, and reposition components to finish routes around tight spaces.
Fix missing ground copper zone by correcting misconfigured inner copper layers, reassigning ground and 3.3V zones, and rebuilding patches while validating with the design rules checker in KiCad.
Run the design rules check to reveal unconnected items and warnings, tidy tracks by removing unnecessary turns, and add silkscreen text to finalize a board about 90% ready for manufacturing.
Address unconnected items by wiring the front copper, create a via to pass the line underneath the board, adjust spacing, then run and resolve errors.
Fix KiCad 9 violations by adjusting via sizes and track properties, using edit tracking via properties and footprint editor, and selectively ignoring non-critical issues while running DRC.
Apply final improvements for manufacturability before manufacturing checks, using PCB analytics tools to fix 90-degree angles, remove redundant tracks, shorten long traces, and redraw thicker routes before saving.
Perform design for manufacturing checks with NextPCB's DFM tool to verify KiCad 9 outputs, export Gerber files, and adjust annular ring, via spacing, and copper edge clearances for manufacturability.
Design rich silkscreen graphics and text to explain pins, LEDs, and subcircuits, while configuring borders, logos, and space for future 3d models before exporting the board.
Order pcb and assembly by preparing Gerber and drill files, zipping and uploading to Next PCB, then provide centroid and BOM files for engineer review, with production in 1–2 weeks.
Track post-order pcb production with the assembly dashboard and engineering questions, and learn how BOM questions, part numbers, and footprints are addressed through photos and replies.
Navigate manufacturing delays for the pcb, plan for unpacking the board when it arrives, and follow a rigorous testing and design verification process to ensure the final board works.
Watch this recap of mastering KiCad 9, covering schematic creation, library management, PCB layout routing, and design checks, illustrated with a four layer IoT PCB.
Assess the initial KiCad 9 PCB evaluation, comparing two board versions, and test ESP32, sensors, SD card, USB, and GPIOs while noting button usability and microphone constraints.
Practice uploading sketches to an ESP32-C3 dev module, verify GPIO pins and boot sequence, and test I2C devices (BME280, OLED) plus SPI flash and SD card functionality.
Test the sd card, flash the gpios for the i2c sensor, and verify the bme280 and usb-to-serial bridge; the chip works, but tx and rx leds do not blink.
Test the light sensor and microphone on the board; the microphone output is not supported due to an adc unit limitation. Move to the next iteration, without wifi.
The photo sensor is wired to gpio one (pin 17) and sampled from pin three with a 10k pull-up; some schematics advise sampling on pin one with a pull-down.
The board is about 90 percent operational, with planned redesigns like thumb-size buttons and tests on tx/rx leds, microphone sensor, light and sound sensors, regulator behavior, and battery management.
Review changes to fix mic and sensor issues: flip the CCSD pin to GPIO0 for mic with ADC1, and adjust the photosensor output to pin 1 with added signal-conditioning caps.
Update the schematic in KiCad 9, flip the transistor, map microphone out to gpio zero and CCSD to gpio five, and revise the audio sensor with a variable resistor.
Update schematic for the light sensor and buttons with signal-conditioning capacitors and a pull-down resistor; add new footprints and ferrite bead, and connect mc out to adc1.
Verify symbol-footprint associations in KiCad before layout, assign footprints, fix missing links, and select 0805 SMD capacitors, a trim pot, and SW2330 buttons from ESP32 project footprints; save schematic.
Update pcb from schematic, enlarge the board to fit a capacitor near the photosensor input, place a ferrite bead, and route traces on bottom copper with vias.
Update the pcb layout to accommodate new audio sensor parts, rewire traces, route pin connections for mic out and trim potentiometer across inner and top copper layers, and tidy routing.
Update the layout by deleting legacy tracks, repositioning the light sensor, and rerouting the photoresistor signal to the ESP32, tightening grounds and 3.3V connections in KiCad 9.
Repair the BME280 and USB sub-circuits by correcting ground and 3.3V nets, adding vias, and redrawing traces in KiCad 9 to ensure proper grounding and signal separation.
In KiCad 9, this lecture demonstrates repairing ESP32 wiring by re-routing tracks, adding space for capacitor C25, and validating the layout with edge clearance, vias, and a design rules check.
Run a KiCad 9 design rules check, fix via diameters, silkscreen issues, and unconnected tracks, resolve footprint inconsistencies, adjust text thickness, achieving zero errors before exporting for manufacturing.
Update the 3d model of the second prototype in KiCad by adding ferrite bead F2, trim potentiometer A17, and updated buttons, then pause manufacturing to review costs.
Updated July 2025
I’ve just published the complete, uncut layout design session for the ESP32 KiCad 9 project as a single video.
This video shows the entire layout process from start to finish — including every step, every fix, and all decisions made in real time.
I decided to publish this video after several students asked me a real-time version of the parts of the original lectures where I used fast-forward to speed up parts of the process that I originally considered boring and repetitive.
I hope that it will help you gain a deeper understanding of how the design was built, how I troubleshoot problems, and how I handle real-world layout challenges.
Updated March 2025
I recorded a series of lectures where I redesigned my ESP32 board to fix issues from the first prototype. You will find the new lectures at the end of the course.
I modified the audio and light sensor wiring to both use ADC1, integrated a variable resistor into the audio amplifier for adjustable gain, and corrected the photosensor wiring with proper capacitor placement. I also updated the PCB layout by enlarging the buttons, refining the track routing, adding a ferrite bead to reduce noise, and updating component footprints and 3D models.
About this course
Unlock the full potential of KiCad 9 and learn how to design a fully functional IoT PCB from start to finish. In this comprehensive, project-based course, you will work through the complete design, testing, and manufacturing process of a four-layer PCB using KiCad 9's latest tools and techniques. By the end of the course, you will have a fully designed and tested ESP32-based IoT board, along with the skills to tackle your own advanced PCB design projects.
What You Will Learn:
Design a complete four-layer PCB with KiCad 9.
Create schematics, assign footprints, and route tracks for high-speed signals like SPI, I2C, and USB.
Implement power and ground planes, copper zones, and via stitching for signal integrity.
Troubleshoot and resolve design issues using KiCad's Electrical Rules Check (ERC) and Design Rules Check (DRC).
Run Design for Manufacturing (DFM) checks with NextPCB to ensure production-ready designs.
Test and validate key PCB components such as an SD card interface, flash memory, sensors, microphone, and OLED display.
Analyze analog and digital signals using test scripts, an oscilloscope, and KiCad's simulation tools.
Course Deliverable:
By the end of the course, you will have a fully functional ESP32-based IoT PCB, including:
A professionally designed four-layer PCB, ready for fabrication and assembly.
Complete KiCad project files for your reference and future use.
Practical skills to design advanced PCBs for IoT applications.
Insights into troubleshooting common design issues and preparing files for manufacturing.
Who Is This Course For?
This course is ideal for electronics hobbyists, engineers, and professionals who already have some experience with KiCad and want to take their PCB design skills to the next level. If you are new to KiCad, we recommend starting with our KiCad Like a Pro, 4th Edition course, which provides a solid foundation in PCB design using KiCad.
Why Take This Course?
Real-World Project: Design a complete IoT PCB from concept to fabrication.
Hands-On Learning: Apply best practices for power distribution, signal integrity, and component layout.
Cutting-Edge Tools: Explore the new features of KiCad 9 and learn how to use advanced tools for high-speed and mixed-signal designs.
Manufacturing Insights: Gain practical knowledge about preparing your designs for production with NextPCB.
Watch the free lectures
We invite you to watch the free preview videos available on this page to get a clearer understanding of the course content and teaching style.
Join us today and master the art of advanced PCB design with KiCad 9!
Please know that a version of this course is also available on Youtube as a single video. You can find it by searching for "KiCad 9: Design & assemble an ESP32 IoT 4-layer PCB loaded with goodies". Compared to the YouTube version, this Udemy edition contains additional content, including quizzes and written lecture summaries to help you learn better. And, of course, no ads :-)