This week, we’re continuing our Creating A PCB In Everything series, where we go through the steps to create a simple, barebones PCB in different EDA suites. We’re done with Eagle, and now it’s time to move onto Fritzing.
Fritzing came out of the Interaction Design Lab at the University of Applied Sciences of Potsdam in 2007 as a project initiated by Professor Reto Wettach, André Knörig and Zach Eveland. It is frequently compared to Processing, Wiring, or Arduino in that it provides an easy way for artists, creatives, or ‘makers’ to dip their toes into the waters of PCB design.
I feel it is necessary to contextualize Fritzing in the space of ‘maker movement’, DIY electronics, and the last decade of Hackaday. Simply by virtue of being an editor for Hackaday, I have seen thousands of homebrew PCBs, and tens of thousands of amateur and hobbyist electronics projects. Despite what the Fritzing’s Wikipedia talk page claims, Fritzing is an important piece of software. The story of the ‘maker movement’ – however ill-defined that phrase is – cannot be told without mentioning Fritzing. It was the inspiration for CircuitLab, and the Fritzing influence can easily be seen in Autodesk’s 123D Circuits.
Just because a piece of software is important doesn’t mean it’s good. I am, perhaps, the world’s leading expert at assessing poorly designed and just plain shitty PCBs. You may scoff at this, but think about it: simply due to my vocation, I look at a lot of PCBs made by amateurs. EE professors, TAs, or Chris Gammell might beat me on volume, but they’re only looking at boards made by students using one tool. I see amateur boards built in every tool, and without exception, the worst are always designed in Fritzing. It should be unacceptable that I can even tell they’re designed in Fritzing.
Fritzing has its place, and that place is building graphical representations for breadboard circuits. Fritzing has no other equal in this respect, and for this purpose, it’s an excellent tool. You can also make a PCB in Fritzing, and here things aren’t as great. I want to do Fritzing for this Creating A PCB In Everything series only to demonstrate how bad PCB design can be.
For the next few thousand words, I am going to combine a tutorial for Fritzing with a review of Fritzing. Fritzing is an important piece of software, if only for being a great way to create graphics of breadboard circuits. As a PCB design tool, it’s lacking; creating parts from scratch is far too hard, and there’s no way to get around the grid snap tool. No one should ever be forced to create a PCB in Fritzing, but it does have its own very limited place.
Not Making A Part In Fritzing
As with all tutorials in this Making A PCB series, I would like to start off by making a part, specifically an ATtiny85. Does Fritzing come with an ATtiny85? Yes, it does, but that’s not the point. You do not know how to use a PCB design tool unless you know how to make a part for yourself — what you own owns you, self-sufficiency, and all that jazz. It’s the mindset required for any hacker or maker philosophy, and necessary for anything that bills itself as an engineering tool, because sometimes you are the first person to use a particular part.
You cannot create completely new parts in Fritzing. This is from a blog post highlighting the new Parts Editor released in version 0.7.9. Packages can be edited into new parts, and most jellybean components have drop-down menus for different values; in the parts library, the through-hole resistor is a 220 Ω, but there’s a drop-down menu for the most common values you’ll need.
Of course, you can create new parts in Fritzing, and that blog post saying you can’t is an oversimplification. The parts already in the Fritzing library got there somewhere, but recreating the efforts of the devs is a pain. First, you need to download Inkscape, draw your package with pins and pads and text on an unreasonable number of layers. Save that as an SVG, go into Fritzing, edit an existing package, do the macarena, sacrifice a goat on the night of the blood moon, and eventually, you’ll have your completely custom Fritzing part. This is unnecessarily complex for any EDA suite.
I will not be demonstrating how to make a part in Fritzing. It’s far too much effort for far too little payoff. No one should use Fritzing to create a PCB, anyway, much less create their own parts from scratch.
Step 1: Create Your Board On A Breadboard
There are three steps to creating a PCB in Fritzing. The first is to create a breadboard circuit, the second is to turn that into a schematic, and the last is turning that schematic into a board. This is simple enough, the search function works, and the circuit we’re building can be easily built on a breadboard.
It’s important to note this skeuomorphic design pattern shouldn’t be taken too literally. You can build things in Fritzing with an Arduino or Raspberry Pi, but neither of these are breadboard friendly. Here, you need to drop things off to the side of the solderless breadboard and run a few wires. That’s what I did with my USB port here.
Step 2: The schematic
At the beginning of every school year, first-year engineering students are rounded up into a lecture hall for an introduction to the program. Around the end of this lecture, the head of the department walks up to the podium and says, “Look to your left, look to your right, one of you will not make it to graduation.” Fritzing sat between two mirrors. The following schematic says it all:
There are no nets and no busses in the Fritzing schematic view. The only way to connect parts together is by connecting individual pins together. You can’t name connections like you can in Eagle, or in any other EDA suite. This is the bare minimum of what schematic design can be. It can be done, but it’s not done well.
One of the more annoying unfeatures I found was the inability to rotate a part by right clicking. To rotate a part in Fritzing, you need to go through a contextual menu. This is horrifying and seriously cuts down on productivity.
Fritzing’s schematic design philosophy is based on wires connecting two pins, instead of nets between pins. Try to ‘tap into’ a wire in the schematic view in Fritzing. You can’t, unlike every other schematic capture application on the planet. In comparison, Fritzing’s schematics are terrible.
Step 3: Making A PCB
This is the meat of this post. No one needs to know how to connect parts together on a physical breadboard and a bunch of wires. The breadboard interface makes sense – it should, anyway, since the greatest use case for Fritzing is creating graphics of breadboard layouts. The schematic is ugly, but it “works”. Now it’s time to actually build a board in Fritzing. What does that look like?
Putting the obvious aside, let’s go over what we actually have here. In Fritzing, you can make a two-layer board. The color for the top layer is yellow, the color for the bottom layer is… darker yellow. Several board outlines are included, from a resizable rectangle to Arduino and Raspberry Pi shields (a neat feature!). Holes are possible, and despite what nearly every PCB made in Fritzing says otherwise, traces with a width smaller than 24 mil are possible. This is important because the micro USB port we’re using is unusable with 24 mil traces.
There are a few cool features to the Fritzing PCB mode. Nets are color-coded, for instance, which would be welcome in any piece of software intended to build PCBs. There are shortcomings, though. Copper pours are separated into two categories: ground fills and copper fills. What’s the difference between these two? Ground fills may only be applied to ground signals. Copper fills can be applied to any signal. It doesn’t take expert knowledge of PCB design to see this distinction is arbitrary; all a copper/ground fill does is draw a polygon, fill that with copper, and connect the relevant pads. There is no way to define the shape of this polygon in Fritzing. This is harder than it needs to be.
One frequently repeated falsehood concerning Fritzing is that it is fundamentally incapable of doing curved traces; that’s why all boards made by Fritzing look terrible. This is not true. You can curve a trace by holding CRTL while dragging it. In fact, a lot of what makes PCBs made in Fritzing look bad can be corrected by pressing either CTRL or Shift while dragging a trace. Traces snap to 90° if you hold down Shift.
Of course, there are problems. Vias, or running a trace from one layer to another, is unnecessarily hard. I would rather use any other EDA suite except for Fritzing, but you can make a board in it. Check it:
Does it work? Yes, probably. If that’s the measure of a success, Fritzing is an acceptable PCB design tool. I’m a little more particular, and like usability in my tools.
Turning A Fritzing Board Into A PCB.
Right at the bottom of the screen, you can find a ‘Fabricate’ button that will send your board to a fab house in Berlin. The cost for my board is €6.26 for one. Of course, you can export a Fritzing board as a Gerber, and send that off to any fab house on the planet. For my board, OSH Park will give me three for $7.15. I could get ten of these boards made by the Fritzing fab for €55.44, but I already bought twenty of them for $36.29 from Seeed Studio.
Is Fritzing a good PCB design tool? No, no it’s not, and friends don’t let friends use Fritzing. If you have zero money, but still want to design a board, Eagle is free. Making parts in Eagle is easier, and there’s a link to a really great guide below. KiCad is also free (speech and beer), and and you can literally design anything with it. There are better options.
Fritzing has a place, though, and that’s making graphics for your Medium blog on how you made a Raspberry-Pi-powered weather station. Here, Fritzing excels. It has everything you need, a relatively simple user interface, and makes great graphics. Friends don’t let friends use Fritzing for PCB work, but if you need a graphic of a breadboard layout, I haven’t seen anything better.