PCBWay PCB Prototyping review (aka how I made an LED word clock)

A while ago my mom saw a clock where the time was shown using only words instead of numbers:

The bright letters say “It is twenty five past one” in Spanish.

If you speak spanish, you can see that there are letters spelling every possible combination of times. You could show any time of day provided you light the correct LED combination (well, technically not every possible combination is available as the time is rounded up to intervals of 5 minutes, so 10:57 would be displayed as “five to eleven”).

Disclaimer: I’ve been approached by the people at PCBWay to review their PCB Prototyping product. They gave me a coupon to try the service out for free in exchange for a review. So this is not a sponsored ad or anything like that. They never prompted me to say anything in particular; these are my own words.

My mom looked for a clock like this and quickly found that they ran for over $200, which is insane! I told her that I could make one for under $20 and thus the journey began.

Arduino Prototype

The first thing I needed was an LED matrix which I made by soldering some addressable LED “pixels” I found on Amazon:

Front side of LEDs. There are TINY!
Each LED has six solder pads: 5V, GND, and DATA (both inputs and outputs)

I cut a small plywood square from a scrap piece that I had, drilled and countersunk some holes. Then I hot-glued all the LEDs in place and pre-tinned each solder pad. Then soldering began. This took A LOT of time!

Pre-tinned solder pads.
All LEDs glued up.
Cutting the wires.
Soldering the 5V line.
Not pretty, but functional.
Running a simple Arduino program to check that all LEDs are wired properly.

After making sure all LEDs were working, I made a test sheet in illustrator with the letters in places, and cut it in the vinyl cutter using some thick cardstock. Remember, this is just the beta version. The final version will have a way nicer look!

Illustrator template. Reversed so that when I cut the vinyl it looks right when I apply it.
Card stock template.
Card stock close-up. Awful looking, I know (remember this is just a beta)!
The black vinyl sheet as it came out of the vinyl cutter.

After cutting the black vinyl template, I applied it over a piece of acrylic, and added a white sheet of paper behind it to act as a diffuser. Then, I went into the shop and made a quick and dirty frame for the whole assembly. It looks like this:

Since I didn’t have any buttons at hand, I decided to use capacitive touch buttons instead using some bolts. They look like this:

The bolts that act as capacitive touch buttons. From left to right: hours, minutes, colour.
Capacitive touch bolts from the back side.
An Arduino Mega with an external RTC (Real Time Clock) that “remembers” the time when the Arduino is powered off.

But let’s be honest. The prototype circuit looks pretty awful. We can do better! Let’s make a PCB!


The cool think about this PCB is that it doesn’t really DO anything. It’s just a bunch of connectors taking signals from here to there. Other than a pretty sizable capacitor to prevent the Arduino from rebooting if I set all the LEDs to white (too much power), the whole thing is pretty straight forward:

The schematic.
The routed board.

I went to the PCBWay website and I uploaded my board to their platform. There are a lot of options to chose but set everything to the default, except that I chose the white colour for the PCBs. The 80s called and they want their green coloured PCBs back!

A cool thing they do is that if you choose a white solder mask, they automatically change the silk screen to black just so that your silk screen doesn’t get lost in the background.

I did have some trouble entering my shipping address in Canada because their system was confusing city and province names, but that seems to be fixed now.

After uploading, their system sets the order on hold until approval (which took less than 24 hours). And after that, the order changed status pretty fast and I could see what they were actually doing. This can be seen in their order status page:

The order goes through different manufacturing stages.

3 days after the last status change I had the PCBs in my hand and they looked spiffy! I love white PCBs!

All the solder pads looked great and all the boards that I assembled worked perfectly. Here are a couple of shots of one of the assembled boards. Note that I soldered the capacitor sideways so that it fit in the particular tight enclosure I was working with.

Assembled PCB, top view.
Assembled PCB side view.

Did you spot the boo-boo? :) Here’s a close-up:

Mistakes happen!

Yes. I screwed up! I usually use the Eagle auto-router and just go with what it gives me. This time I routed the whole board by hand. Doing it this way makes for a much cleaner board and I learned a lot… but… I got so caught trying to make the board look nice that I accidentally swapped the 5V and GND pads! Oh, well…

I’m super happy with the PCBWay service. There were no complications, no delays, and everything worked exactly as I expected. The quality of the silk screen in particular is the best that I’ve seen so far. On other PCB services that I used sometimes the silk screen chips off (in minuscule bits) but this one is perfect all the way.


I love Arduino, but hate breadboards. Everything is so flimsy and when you eventually want to take the prototype to vero board or any of the more permanent alternatives, it takes forever to do so and it’s an incredibly error prone process. Making a PCB leaves everything clean and repeatable. The next time your friend comes to your house you can snap one of these PCB shields on top of an Arduino, load up the software and you are ready to go!

Seeed Studio’s Fusion PCB review

Today I’ll be reviewing a new PCB service from Seeed Studio called Fusion PCB. For that I will be making a simple acrylic LED display. Let’s see how it goes…

Disclaimer: I’ve been approached by the people at Seeed to review their Fusion PCB product. They gave me a coupon to try the service out for free in exchange for a review. So this is not a sponsored ad or anything like that. When they approached me, their exact words were “Just share your pcba shopping experience from Seeed Studio in the review as things really are”. Here’s how it went…

So what is their service all about anyways? The service is in reality three different services.

  1. PCB. You send them your GRBL files and they send you PCBs back.
  2. PCB Assembly. Combined with the above you can send them your BOM and they will assemble your PCB (solder the components to the board)
  3. PCB Stencil. You send them your GRBL files and they send you SMT stencils that you can use to transfer soldering paste to the exact location in your PCB.

The service that I tried was #1 in the above list. For that I initially created an air quality sensor circuit which turned out to be a little more complicated than I thought so I decided to lower my expectations a little bit and, instead, whipped up a quick ATTiny85 based RGB LED strip controller:

The circuit is extremely simple. There is a power input that goes through an LM7805 voltage regulator. This makes it easy to power the board; supply any voltage above 6V and below 23V and the ATTiny85 chip and LED strip will receive a steady-ish 5V. This is shown in the top right of the schematic.

There are also two connectors. The first one (top left) is for the LED strip. It contains VCC, GND, and DATA. There is a 470μF capacitor between VCC and GND to protect the strip from voltage spikes and there is a 560Ω resistor in the DATA line also to protect the strip. The second connector is not really needed but something that might be useful in the future. This connector exposes all the free pins on the ATTiny85 just in case I want to add a button, switch, or whatnot to the circuit and re-purpose it.

After creating the schematic I made a prototype to know everything was working as expected:

Once the schematic was complete and the board was routed on the free version of Eagle, the board looked like this (top and bottom layers overlaid):

You might be wondering what’s up with the seal in the back side of the PCB. Well… wonder away.

So armed with the finished board it was time to send it to Seeed for fabrication. On most PCB manufacturers this usually means generating GRBL files from your design. The only provider I am aware that does not require this is OSH Park (you just send them your Eagle files). Generating GRBL files is pretty much black magic if you are a rookie like I am. What I did in the past was look through the PCB manufacturer’s documentation for a file that I can load up on Eagle and use it to export my design with the proper rules. When I first tried this on Seeed, the damn file was very hard to find in their documentation and I just gave up to try another day. Apparently they had people working on the site during the time that I was working on this too because the next day when I went back to resume my search, there was a link to them right on the upload page which is in my opinion the best place to put them. Of course experienced engineers would be used to the whole GRBL shenanigans but the fact that Seeed took the time to make the process idiot-proof opens up a lot of possibilities for us rookies and of course opens up their business to a wider audience.

As you can see the options provided by Seeed are a lot. There is something for everyone:

Mind you, as soon as you deviate from the defaults, the prices go up pretty fast. Still, for the hobbyist, all the defaults are more than enough. In my case I changed the PCB color to black. OSH Park uses purple, Sparkfun uses red, everyone else in the planet uses green and I might as well try out something else.

One thing struck me as odd was the relationship between PCB quantity and price. I started playing around with the quantity selector and found that the price was not what I expected. You’d think that the more you order the cheaper they get, right? Well, no. I made a quick graph in Excel and confirmed that the price/quantity curve is not straight at all:

(open image in a new tab to see a higher resolution version).

It would seem that the cheapest prices (per board) happen when you order 10, 40, or over 100 units. I don’t know if this is an arbitrary decision to push consumers into buying specific quantities or if this has to do with the fabrication process itself. I ended up ordering 40 boards.

One really cool thing is that once you upload your zipped Gerber files you can preview them instantaneously in a web based viewer. So far Seeed is the only place that I’ve seen this done. OSH Park gives you a JPG rendering of what the board will look like too but I liked this better because you can toggle the visibility of the different layers. This is how the board looks like in the Seeed Gerber viewer:

Top view:

Bottom view:

Notice how the seal looks really pixelated? That must be one of the viewer’s quirks as the seal in the PCBs looks perfect.

So I finished the order and applied my coupon. Next up was choosing the shipping option. I was pleased to notice that they had DHL and FedEx as their carriers. I’ve had multiple bad experiences with the Chinese postal service where items were either never delivered or took months to arrive at their destination. For this order I chose DHL.

Production took 6 days and shipping to Canada took 2 days. All in all, 8 days after I clicked submit on their pay form I had the PCBs in my hand. Packaging was excellent. The boards came shrink wrapped and then wrapped in multiple layers of foam inside a cardboard box. This is what the shrink wrapped boards look like:

Here’s a view of the board itself:

(left: PCB top, right: PCB bottom)

Here’s a view of the assembled board:

The idea behind this was to make the circuit as compact as possible in order to be able to conceal the circuit inside a small box and be able to place a CNC engraved acrylic sign on top of it. I made such sign for my nephew (Plants vs Zombies fan) in my Shapeoko 3 CNC. This is how the acrylic sign looks like with the LED strip underneath it. Note, the enclosure is not shown (because I haven’t made it yet!).


On a side note, this acrylic seems to be a little too thick for this application (I used 1/2″). The ghosting you see is actually the reflection of the engraving on the back side of the acrylic. Maybe a narrower piece could work best.

To sum it up, I had a positive experience using their Fusion PCB service and will use them again. I liked the simplicity of it all and the huge range of options.

PCB Comparison: OSH Park vs. iTeadStudio

I took my 8 RGB LED Controller prototype and decided to try to make a PCB of it (my first attempt at a PCB, that is).

Most people at the Arduino forums had recommended I do this in EAGLE but they warned me that the learning curve was steep. So I tried doing it in Fritzing and failed miserably; couldn’t get the damn thing to do what I wanted. Then I gave EAGLE a try and thanks to Jeremy Blum’s tutorials could get a nice schematic done:

8 RGB LED Controller EAGLE schematic

Holy crap, that took me forever to do. When they say that EAGLE’s learning curve is steep they meant to say really f$#*@ing steep.

But the schematic is half the battle. After that you have to create the actual board layout which, again, took me forever to do. After many hours of getting cryptic errors and solving them by reading random forums, I got this:

8 RGB LED Controller EAGLE PCB

So far so good. Now I had to send them out to get printed.

A lot of people recommended iTeadStudio (a Chinese PCB manufacturer) and some other recommended OSH Park (US based), so I ordered a set of PCBs of each well aware that my design could easily be flawed and end up with a bunch of duds. For the same money OSH Park gives you 3 boards and iTeadStudio gives you 10. I was very curious to see what the quality difference was.

Note: A week after sending my order to iTeadStudio they wrote back saying that my design was 2mm over the limits of my chosen PCB size and they put my order on hold until I sent them the mind boggling amount of $2.90 extra. Yes, they put the order on hold for less than $3!

Three weeks later both orders arrived just a couple days apart. And this is what I got:

OSH Park vs iTeadStudio

Even to the untrained eye (like mine) there are a few differences worth noting. Both providers happily ignored the boundaries I set on my PCB. Note that the word “Controller” is cutoff on both boards (top right). You might be going back to the EAGLE board screenshot above and seeing that there is no word “Controller” there and you’d be right; I took that screenshot a few minutes ago from a more recent version of the board, but trust me, that word was well withing the boundaries of the board. Also note how iTeadStudio’s is much taller and also better trimmed while OSH Park’s is shorter and you can clearly see the marks where they cut the PCB off the neighboring boards.
Another thing to note is that OSH Parks’ board has “golden” pads while iTeadStudio’s has silver pads. I have no idea (and don’t really care) what the material is but the only thing I can say is that the OSH Park board required much less heat for the solder to “attach” to the pads so I guess it was easier to work with. The overall glossy purple finish looks way cooler too.
A funny thing on iTeadStudio: I paid for 10 boards but they’ve sent me 13. After reading around a bit I learned that this is not uncommon for them. Cool, I’ve got 3 more boards to mess with.

So I put it together and after a few minutes of soldering, got this:

8 RGB LED Controller PCB

Those SMD resistors were a bitch to solder, that’s for sure!

Now for the maiden voyage. I hooked it up with some LEDs and the Arduino fully programmed and ready to go… hmmm… why is NOTHING happenning? It didn’t work at all. I checked and double checked everything and every single cable was working correctly. So I soldered the OSH Park version of the board and tried it. Exact same results! Everything was pointing at a fail of epic proportions on my PCB design. So I gave up and went at it the next day.

Armed with my wimpy RadioShack multimeter and the prototype in hand, I soon realized that I had screwed up 2 things on my design:

  1. That “Sensor” label I put there to be able to hook up a button? It was wrong but easily solved by adding just a jumper cable from +5V to “Sensor”.
  2. I must have been really tired when I labeled the screw terminals as I reversed the ST_CP and DS on the shift registers. Nice.

So I hooked up everything like I should have to begin with and, oh yes, the damned thing started to work.

Next step, make this into an Arduino shield!