Tech News
← Back to articles

Vibe-Coding a PCB – surprisingly good

read original related products more articles

After "vibe coding" a software-based vibing button in my last video, I decided to take things one step further: vibe-coding the actual hardware. The challenge? Let AI design a working ESP32-S3 development board, from scratch.

Tools of the Trade

For this experiment, I used Atopile — a tool that lets you define a hardware project using code and turns it into a KiCad PCB. I also enlisted Claude, an AI coding assistant that seemed to outperform Cursor for this task.

The Prompt

The board needed the basics: an ESP32-S3 module, USB-C power and data lines, a 3.3V regulator, reset and boot buttons, status LEDs, a quick connector, and the usual passives. I specified LCSC part numbers and 0603 sizes for resistors and capacitors, with GPIO 19 and 20 handling the USB data lines for proper differential routing.

Here’s the exact prompt I used:

I want to make an ESP32-S3 dev board. We will need: - ESP32-S3 module - USB-C connector with 5.1K resistor on the CC lines - 3.3V voltage regulator - A red LED showing 5V is connected - A green LED showing 3V3 is available - A blue LED connected to a GPIO pin - A QWIIC connector for peripherals - Reset button - Boot button - Any additional passive components needed for the above - There should be an RC circuit for the enable pin on the ESP32-S3 module The USB-C should provide 5V power and the data lines should be connected directly to the ESP32-S3 module. Don't forget, there are normally 2 pins for each data line. These should both be connected to the ESP32-S3 module. GPIO19 and GPIO20 on the ESP32-S3 module are USB D- and D+ respectively. Make sure these nets are labeled correctly so that differential routing works. Use LCSC part numbers for all components. You will need to search the web for these. Use 0603 for all resistors and capacitors. Use the command to add the component to the project. echo "0" | ato create part -s Add each component one at a time to the main.ato file. Run the ato build command after every change you make to check your work. ato build Be very careful with the pin names/numbers in the components - check that you are using the correct ones. Do not modify the components.

The AI took the prompt and started generating components and wiring instructions. To stay true to the spirit of "vibe coding," I didn't look at the code — I just kept saying “yes” and watched what happened.

The AI Journey (aka, Chaos Ensues)

Initially, everything looked great. The build succeeded, all components were found and added. But when I opened KiCad… nothing was wired up.

... continue reading