How to create PCBs

8 Feb 2025  •  13 min

Over the past couple of years, I've had a couple of projects where I've designed and ordered PCBs. It's a great way to make more permanent electronics projects look and feel a lot less janky.

I've also come across a couple of open-source electronics projects where I had ordered PCBs from a project. For example, these drone timers (which I unfortunately am still yet to finish), and this drone controller screen adapter. It's super easy to download the design files from the project and upload them to a site and get them ordered - it's often a lot cheaper than finding them sold anywhere online (if they are at all).

I've also adventured into designing my own like a tiny DIY keyboard based on the ARTSEY.io layout.

For this post, I'll go over the basic principles I've learned for creating a PCB from scratch - from design, all the way to ordering. I like to use KiCad which is free and open-source, but there's lots of other great PCB design programs, both free and paid, even ones that work in your web browser. As far as I know, they all work pretty similarly, so these basics should transfer across.

The project I'll make here, is going to be a with a microcontroller, button and LED.

Building a schematic

First up, we need to build the circuit's schematic, this is a high-level overview of components and how they connect.

I'd actually usually start with a breadboard design before doing this, just to check it works in the real-world first, but you could also do this part after designing the schematic. It all depends how you like to work.

To get started, launch KiCad and create a new project. I've called mine simple here. You'll see it's automatically created files for the schematic (simple.kicad_sch), as well as the PCB (simple.kicad_pcb).

A new project created in KiCad

This post is just going to touch on the Schematic Editor and PCB Editor, but I'll give a super quick explanation for a couple of the other options:

If you open up the Schematic Editor, you'll see a blank page with a lot of buttons around the outside.

First off we need to add components to the schematic. Use the 'Add Symbols' button on the right toolbar, which will bring up this window to select a symbol. A symbol is just a component in the schematic. For simplicity, I'll use a built-in one here, an Arduino Nano. The top right of the window shows the symbol as it will appear in the schematic, and the bottom right shows the footprint, which is as it will appear on the PCB. The dropdown in between the two previews lets you select a flavour of the footprint. For this Arduino Nano, there's just with mounting holes or without, but for more complicated components, you might need to select the size of component you're planning to use (e.g. size of a surface mount resistor or type of switch) - essentially make sure the footprint matches the real component you want to use.

After you press OK, click anywhere on the schematic to place the symbol. Now I'll add in a battery, button, LED and a resistor for the LED. The battery and button didn't have footprints for me, so I've left them blank and we'll sort them later. Here's where we're at:

I've moved all the components around so they are laid out better, then finally we'll add in a ground connection using the symbol underneath the one we just added. You could also add in a +5v connection if you wanted. I'm not sure if this is strictly necessary, but it makes the diagram slightly clearer and it may help out later on when we're putting a ground plane on our PCB (but more on that later...)

Now use the next icon down on the right to create some wires to connect all the components. Just click on one of the circles at the connection points on a component, then click one of the circles on another component.

Here's my final schematic:

That's pretty much all we need to do for the schematic, now just save it. You can also add labels to your diagram, using the label and global net label tools near the bottom on the right which can give your connections nicer names. There's not much going on here, but for more complex schematics it can help a lot with laying out things. It lets you have connections between multiple places on the schematic without drawing wires everywhere, just connect a global net label at each end.

Designing the PCB

So now we've got the schematic designed, we can move onto the PCB. Head back to the KiCad project window and open the PCB editor. This window also has a lot of buttons and things.

We can use this button at the top to import the components from the schematic. It'll give you a quick summary of what it's going to change (as you can also go back to the schematic and add more things later, then do this again to update the changes that have been made). Once done, you'll see the footprints added to the PCB.

For the few components that aren't shown, we can go back to the schematic editor and change the footprint to be used by double clicking on the symbol, then change the footprint by clicking the lines in the value box to bring up the footprint selector.

For anything missing, you might need to find something close, or find footprints others have designed online, or create your own. For the battery, I'll select a 2-pin header which will allow the circuit to be powered from an external 5v supply. Strangely, there is push button footprints available, they just weren't linked to the symbol earlier for some reason.

After making these symbol changes, redo the previous step again to import the new footprints. You'll notice some thin blue lines going between the components. This is how they should be connected together according to the schematic.

Now I would lay out the components to near the pins they are going to connect to. Once you're happy with the layout, click on the Edge.Cuts layer on the right side. As the name suggests, this is cuts that the manufacturer will make, so we want to put one around the edge of the board. If you're feeling extra fancy, you could add in rounded corners, mounting holes or other things. You might notice some of the components, for example, the LED already have holes where the legs go through the board.

Some of the layers have F & B prefixes, which means front and back. We'll use the F.Cu (front copper) and B.Cu (back copper) for traces between components and you can add printed text or images to the board using F.Silkscreen and B.Silkscreen (although remember to reverse text if using the back). Click on one of the copper layers then use the first blue line on the right toolbar to create a trace. You'll notice it'll helpfully highlight where it needs to go. Make sure to leave the ground connections for now, because we're going to make a ground plane to connect them all. Here I've used the back copper layer to run a trace along the back of the board because I've got two tracks that overlap. With more complex PCBs it can be a bit tricky to route everything around, but it's all part of the fun!

Now we'll use the copper zone tool which is the blue shape on the right that has a wire going into it. This creates a zone of copper on the board. We should add a ground zone on the board when we're done. This can help with any external interference on the circuit. Select either one of the copper layers in the window that appears, then select the GND net and draw a box around the board again. Finally, go to "Edit" then "Fill All Zones". You'll see the board now has copper everywhere, except where we've got the blue trace going through. And it connects up the ground pins on the components that need it.

Now I like to go to the 3D viewer (icon left of our schematic import tool) and give the board a check to make sure it looks okay and all the traces are connected up where they need to go.

There's also an automated checking tool named DRC which can help spot any issues with your board which I'd recommend using before ordering. But, I'm happy with this board, so lets go and order it!

Ordering the design

Once your happy with your PCB design, it's time to get it ordered. You can find a bunch of manufacturers online and can easily find one to get boards created and shipped for under £10, albeit they take a little while.

Regardless of where you choose to order, we need to export the PCB to gerber files. This is what the manufacturer uses to make your PCB. In the PCB editor, go to "File", then "Fabrication Outputs", then "Gerbers (.gbr)". The settings in here depend on your manufacturer so make sure to check their website for suggested settings. Once dialed in, click "Plot" to export, then "Generate Drill Files..." and do the same there. You should have a bunch of files generated now. If you choose to use PCBWay like me, they actually have a KiCad extension which allows you to upload your design to their site with one click, so there's no need to faff around with these Gerber settings.

You'll want to ZIP up the Gerber files now. I like to then take it to a couple of online Gerber viewers to double check the design again. For example, this one from PCBWay. It's a good idea to check on multiple viewers to make sure there's not an issue that arises with just one of them.

Once I'm happy that the design looks fine, I'll upload the design to the manufacturer. PCBWay have kindly given me some credit towards my next project, so I'm going over the process of ordering with them. There's also many other choices for manufacturers, both local and abroad, basically it depends on how fast you want your design and the quality you'd like.

On PCBWay, when going to order the board, you can use the 'Quick-order PCB' button to upload your files straight away, which will automatically calculate the size and show a preview at the top of the page. Underneath we've got a bunch of options to select. There should be similar options for other manufacturers too.

So first thing we'll do is upload our zipped up Gerber files. You should see a preview of the board after uploading, and it's another good chance to double check your design looks as it should. The site should automatically calculate the size of the board.

For the board type, there's a few choices. Unless you're doing lots of PCB assembly, you don't need a panel. You can see an example of a panel on the right of this screenshot, it's where boards come stuck together on a big board and you would separate them off after assembly.

For quantities, many manufacturers have a minimum order quantity of 5 boards. It might seem like a waste but it's always good to have a spare or two in case you mess up.

For layers, we're using 2, this is because we've got the front & back copper. You'll find anything higher will cost more money, but for most projects you should be able to get away with 2 layers. For more complex projects, you might want layers of copper sandwiched in the middle to give more space for routing.

Now you can head to the checkout to place your order. I'd recommend to double check the shipping method when you checkout. PCBWay, for example, offers a bunch of shipping methods that cater to different price points. I've chosen the Global Direct shipping which is the most cost effective.

After ordering, your design will most likely be checked by an engineer who will get in touch to clarify if there's any potential issues. Then it's just a matter of waiting!

Wrapping Up

Hopefully this quick crash course in PCB design has been useful and inspiring. I had always thought it was quite intimidating until I went to a talk on how someone designed conference PCB badges with some other PCB design software, and it's super cool to build something on your computer and eventually have a physical PCB! Keep an eye out for my next blog post where I'll be assembling my next project. Until next time...

Jake Walker

Website source code is licensed under the MIT License.

Blog content is licensed under CC BY 4.0.