Designing and assembling my first PCB
Designing and assembling my first PCB
Published: July 11, 2026
The beginning
About a couple months ago I purchased an Arduino Nano<br>ESP32 dev board. I had this sudden itch and I wanted to<br>play around with hardware. I don't really have much<br>experience in this space, besides working on firmware<br>for an IoT company over a decade ago, but I've written<br>tons of software over the years. I was very surprised how<br>quickly I was able to get the built-in LEDs to blink<br>with Arduino IDE and some help from LLMs. After that I<br>moved on to figure out how to build and flash firmware<br>directly from the command line without having to deal<br>with all these custom abstractions. I like operating<br>from CLI. That was also somewhat easy and gave me<br>confidence that I can go back to my normal tools (nvim)<br>for working with code.
The devboard itself does not have much going on. Next<br>was getting some peripherals so I ordered a small LCD<br>and BME280 temperature/humidity sensor breakout boards.<br>Both of these I was able to wire up to the ESP32 chip and<br>get them to talk over the I2C protocol.
Figure 1: Playing around with Arduino Nano and random things attached to it via breadboard.
Naturally, we cannot continue assembling pre-existing<br>modules for a variety of reasons. I think they are great<br>for prototyping, but I like getting out of the prototyping<br>phase as soon as possible and getting into a more "release"<br>or "production" workflow. I was thinking maybe I should<br>recreate the Arduino board with all these components<br>hardwired so I can ditch the breadboard. That sounded<br>great, but it felt a little bit ambitious. There's lots<br>of components and it would make it hard for me to test<br>everything. Instead, I decided to create the BME280<br>sensor module. This would let me get a feel for what it<br>takes to design something starting with schematics and<br>ending up with a custom PCB. In the picture above you<br>can see the small brown board that I got from Amazon,<br>that's a BME280 sensor board which only has a handful of<br>components. If everything goes as planned I should be<br>able to swap-in my custom board and everything should<br>continue working as before. That was the plan.
Schematic and PCB design
There seem to be several tools available for<br>schematic/pcb design. I needed something that's free and<br>runs on Mac OS. Some people praise EasyEDA, others like<br>KiCad. I didn't do much research on this topic, it seemed<br>like either of them would fit the bill, but I picked KiCad<br>since it's free GPL licensed software.
All sensors, chips and components come with what's<br>called a datasheet. A datasheet is a technical document<br>made available by the manufacturer describing how the<br>component functions, at what temperatures it can<br>operate, reflow (soldering) temperature curves, size and<br>exact dimensions, example wiring and many other things<br>depending on the component.
For my sensor module, I needed to wire the BME280 for an I2C interface to make it plug-and-play. The module that I purchased from Amazon actually supports both I2C and SPI. So what I'm doing is not an exact copy, but actually a more narrow implementation. The<br>BME280 datasheet<br>has pin-out and connection diagrams<br>starting on page 38. It actually provides examples for<br>both SPI and I2C connections. I took the provided I2C<br>connection diagram and transferred it to KiCad.
Figure 2: Schematic design of my sensor module.
I wouldn't call KiCad the most intuitive<br>application for first-time users. However, I was able to<br>draw up the exact schematic as was shown on the<br>datasheet.
To transfer a schematic to a PCB you need to select<br>what's called a footprint for each component. For example,<br>there's only one type of BME280 sensor and it really has<br>only one shape/size (aka footprint) available. That's not<br>the case for other types of general use components such as<br>resistors or capacitors. What footprints you pick will<br>dictate the size of your board, how easy it is to assemble<br>and most likely many other factors that I'm not aware of<br>(such as heat dispersion).
Through my research I discovered that most commonly<br>you're going to encounter SMD and THT components. THT or<br>through-hole components are more old-school looking tech<br>(though it's not old), generally larger in size and they<br>get installed by pushing component legs through the holes<br>in the PCB and soldering the legs to the board after. This<br>can be done in most cases with a regular soldering<br>iron.
SMD stands for surface mounted devices and are what<br>you'd find in almost all modern electronic<br>devices. They are much smaller in size, and as the size<br>gets smaller, they will require more specialized<br>equipment for installation. When I started looking at<br>the footprint library in KiCad I got very confused because<br>it wasn't immediately clear to me whether I needed to find a<br>footprint for the exact component brand that I was<br>planning to use or not. Lots of general SMD components<br>have standardized footprints, I discovered. They follow<br>standard codes...