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.

How to program a Dorkboard with an FTDI breakout

I’ve been playing with my Arduino long enough to realize that it is much cheaper to maker my own breadboard Arduino and transfer that into either a PCB or Veroboard than to actually buy a full Arduino for every little thing I make.

In order to program my breadboard Arduino I’m using Sparkfun’s FTDI Basic Breakout. I think this is the easiest way to program (and re-program) a breadboard Arduino; just stick some 6-pin headers, hook them up, and you’re good to go.

Now I’ve recently acquired a few Dorkboards. These are a very minimalistic PCB version of an Arduino (fully compatible since they use the same chip) and are also very quick to assemble. I’m using these as a starter for my projects now. The only problem is that whoever designed them thought it would work better for them to have a 5-pin connector instead of a 6-pin one. This means that in order to program them the same way you do an Arduino you need to convert this into a 6-pin connector. This is easy enough to do and there are two ways that I can show you. Both are conceptually the same and pretty much consist of creating some sort of connector using the following schematics:

Dorkboard to FTDI connector

Option 1: Custom cable

You can easily create a custom cable by taking 5 pieces of solid core wire and soldering them. The resulting cable will look like this (if done poorly like I did):

Dorkboard adapter cable

In this picture you can see that I’ve included the FTDI adapter on the left.

Option 2: Custom PCB

I’ve made this little PCB board (download link below) that you can use over and over that will resist wear and tear much better than the cable above.

Dorkboard to FTDI PCB adapter

Download the Eagle Schematics and Board files.

As you can see this is just a tiny little board but serves its purpose. In this case I’ve soldered male headers to both ends but that will depend on what you’ve soldered to your Dorkboard. In my case I didn’t have pre-bent headers so I bent them with pliers, that’s why they look a little crooked, but the connection is quite snug. Since the Dorkboard connector is on the edge of the board you can even connect straight headers and it will work too but I prefer mine bent. The best part is that you can get three of these boards made for only $2.50 at OSHPark.com (that includes shipping too!) so that you can make a male version, a female version, and still have a spare.

Once this adapter is in place, programming the Dorkboard is done exactly the same way as the Arduino!

 

Calibrator: An Arduino library to calibrate sensors hooked to analog inputs

Once you get past your first few projects with the Arduino, you soon realize that the calibration method they show on their webpage is just a sample and cannot be used with many sensors without polluting your code with a ton of variables.

So, here it is. My own take on sensor calibration library. You can download the source code and a more detailed explanation on the github Calibrator page.

This is how you use it:

 

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!

8 RGB LED Controller

UPDATE: I’ve now made a custom PCB out of this.

This is my first experiment with Arduino. Like most people starting out with Arduino, I wanted to make stuff blink! So after finishing up the Arduino Starter Project Book I started hooking up LEDs to my Uno’s outputs. I very quickly ran out of outputs and a quick search through the Arduino Forum led me to the wonders of shift registers. These are basically serial to parallel ICs that allow you to just use three pins on the Arduino to control eight outputs. You can daisy chain them like I did and if you do, you can control many more outputs yet still using three pins to control them. I few days later, my SparkFun order had arrived and it was time to test my spanking new 74HC595N set.

Ingredients:

  • 3 x 74HC595N shift registers.
  • 8 x RGB LEDs, diffused.
  • 8 x 200Ω resistors
  • Lots of jumper cables
  • 1 x Solderable PC Breadboard.

After some trial and error, I arrived at this. The gray cables are telephone cables that connect the controller to the LEDs.

8 RGB LED Controller prototype

Yikes, that looks ugly. I soon realized that I shouldn’t have soldered the LED cables to the board as it makes it very impractical to repair any LEDs or reuse parts. Even though it looks flimsy, so far it’s still in one piece.

I’ve put together a video that shows some of the build process and also the whole thing put together and working. At the end of the video you can see the presets that come with Elco Jacobs’ awesome ShiftPWM library which is what I used to control the LEDs.