The different iterations of the shields..

Clockwise from top left, the V05 shield with socketed module, the original protoype, the V06 shield new with new CC2500 module and the V05 shield with external antenna.
Stuff I design and build and take apart
I just got a batch of PCB’s in from MakePCB : 25 Arduino MP3 shields. The design is from brokentoster.
I have tweaked the layout a little to allow for larger tolerances. 12 mil minimal trace width and 12 mil minimal clearance.


I wanted to try something new and chose a yellow solder-mask. The white is still readable. I suspect the color did cause a little delay.
Ordered : 25-April-2010
Shipped : 28-May-2010
Delivered : 7-June-2010
As mentioned earlier, MakePCB does not communicate very well. They use 3rd party website to keep you posted on the status of your delivery. This delivery seems to be stuck on “in production”.
One board had some rework done :

Other than that, the boards are fine and the price is hard to beat.
The PCB’s for the kits and projects on this blog are made by cheap manufacturers. These manufacturers don’t especially cater to hobbyists but would like to have filler orders to keep production running when there are no large orders available. The PCB manufacturers sell this production time cheaply, the downside for the customer is the long or uncertain delivery time.
When shopping for PCBs you can sometimes tweak two parameters : the delivery time and the number of boards. A longer delivery time will lower the cost, a larger number of boards will raise the total cost but in general lower the cost per board, sometimes by a lot.
The manufacturers will typically want you to deliver gerber files. Making and checking gerbers is a blogpost by itself, the BatchPCB FAQ has an entry about them and Sparkfun has a tutorial. Before I have PCB’s made I check them at circuitpeople.com and if the board is really new I usually render it with Eagle3D.
Here is a list of PCB manufacturers I have used and some that I have not yet used but offer interesting services.
MakePCB is by far the cheapest PCB manufacturer I have found. The site is not as detailed as the competitors site and the communication is not very helpful at all. The price is unbeatable. I have used their service in the past expect to use them in the future.
BatchPCB is Sparkfun’s PCB Pooling service. The designs are panelised by BatchPCB and the panels are made and cut by by Gold Phoenix and sent to the US in bulk. BatchPCB then sends out the PCB’s to the end customers. Specs and tolerances can be found here, prices are here. BatchPCB is a great service and offers other services like selling your boards to other users. I have stopped using BatchPCB because BatchPCB is expensive and located in the US. Sending boards from China to the US and sending them from the US to Europe adds to the cost and delivery times.
Eurocircuits have their own manufacturing and pooling service. The quality of the boards is high and the price is too. Where MakePCB keeps communication to just below the bare minimum, Eurocircuits has a hand-full of sites in different languages, and a coice of 4 or 5 different PCB services. The result is pretty confusing. The price calculator is shared between all sites but needs magic parameters in the URL to determine the price. I suspect they have different prices for different kinds of customers. Eurocircuits have been partnering with Elektor and offer Elektor PCB’s no longer offered by Elektor themselves.
Say we’d like to have 25 Arduino shields made. The shields are double sided, with double sided solder mask and a single silkscreen. The PCB’s are not rectangular but have the traditional Arduino Shield bump and holes. The board is 69 x 53 mm. Shipping is to the Netherlands.
| Manufacturer | clearance | trace | via | Price 1 | Price 25 | S&H 1 | S&H 25 | Total 1 | Total 25 | Lead time |
|---|---|---|---|---|---|---|---|---|---|---|
| MakePCB | 0.2 mm (8 mil) | 0.2 mm (8 mil) | 0.3 mm (12 mil) | 26.72 € | 56.76 € | 6.21 € | 14.73 € | 32.48 € | 71.49 € | about 4 weeks |
| BatchPCB | 8 mil (0.2 mm) | 8 mil (0.2 mm) | 20 mil (0.5 mm) | 15 USD | 375 USD | about 18 USD | about 18 USD | 33 USD | 393 USD | about 20 days |
| Eurocircuits | 8 mil | 8 mil | 0.35 mm | 53.81 € | 121.13 € | 10.01 € | 10.16 € | 63.81 € | 131.29 € | about 30 days |
There are a couple PCB services that I have not used yet but that seem to offer interesting services.
Gold Phoenix PCB is the manufacturer that supplies the PCB to BatchPCB. BatchPCB collects orders to fill up panels. Once a panel is full, BatchPCB has the panel made, cut up to the individual boards and sent to BatchPCB. This “buy a panel” service is also available to end users. The panel sizes for 2 layers are 1000 cm2 or 650 cm2. The shield in this example has an area of about 37 cm2. One panel would yield 27 Arduino shields. Gold Phoenix is a bit more expensive than the cheapest option I have used but is interesting because they support tighter tolerances and, for a fee, inner cuts, different color soldermasks and different color silkscreens. You could do stuff like white PCB’s with black lettering.
PCB-Pool is one of the older PCB manufacturers that offer their services online. PCB-Pool is interesting because the offer solder paste stencils, sometimes for free. They also have a Front panel service.
Two notes about the prices here :
| Manufacturer | clearance | trace | via | Price 1 | Price 25 | S&H 1 | S&H 25 | Total 1 | Total 25 | Lead time |
|---|---|---|---|---|---|---|---|---|---|---|
| GoldPhoenixPCB | 7 mil | 7 mil | 15 mil | 99 USD | 99 USD | 10 USD | 10 USD | 109 USD | 109 USD | 8 working days |
| PCB-Pool | 0.15 mm (6 mil) | 0.15 mm (6 mil) | 0.3 mm (12 mil) | 43.73 | 198.30 Euro | ? | ? | ? | ? | ? |
–
( the hardware is described here )
Update #2 : the LivingColors library has been updated, the transmit power is higher and the range should be longer.
Update : the example program and library has been updated to Arduino version 1.0. New version of the example program is here : a_LiCo_Control_A1.zip , the LivingColors library is here : LivingColors.zip
The software consist of a library for the Arduino that can control a Philips LivingColors and a couple of sample programs. The library takes care of sending an receiving of messages using the CC2500 and can be used as a basis to communicate between two shields.
The library can be found here for Arduino version 1.0 (and here for older versions) and should be saved in the “libraries” directory of the Arduino environment (this is the “hardware/libraries” directory in older versions of Arduino). You should have a “<arduino>\libraries\LivingColors” directory with the files :
The library can be found here for Arduino version 1.0 (and here for older versions) and the files are well documented.
The source code has a GPL license. The code is based on code by Jeroen Domburg, known from various hacks on Hack a day and Tweakers, and described in an article van of the dutch edition of Elektor in May 2008. George Mathijssen cleaned up the code and got it working as an Arduino library.
The library is likely to have bugs and omissions. The RGB to HSI conversion seems a bit wrong and we ignore the ACK and NACK responses from the LivingColors lamp. Fixes and improvements are welcome !
To test the library i have made an application to control LivingColors lamps. The application receives commands by serial over USB, you can control it with something like Putty or HyperTerminal.
When LiCo is ready to execute a command it sends a “!”. If it did not understand a command it sends a “?”.
The available command’s are :
| Command | Function |
|---|---|
| r | reset |
| wn-rrr-ggg-bbb | r, g and b are numbers 000 to 255. Example “w000-255-000\” for bright green. n is the lamp number. |
| hn-hhh-sss-iii | h, s and i are numbers 000 to 255. No example for now. n is the lamp number. |
| i | print info |
| nn | turn lamp number n on |
| fn | turn lamp number noff |
| ee | e = 0 echo off, e = 1 echo on. |
| l | listen for addresses. Use i to list addresses. |
| saabbccddeeffgghhii | store address in a..i. 9 numbers as 2 digit hex |
| ? | dummy command. |
Using the application to control a LivingColors lamp :
In LiCo-Control you can get control over the lamp by :
Its best to hardcode the learned addresses in the LiCo-Control application.
WheelColor is a Processing application that sends commando’s to LiCo_Control. You can set the color of the LivingColors lamp with a colorwheel. The application is simple and ugly but it contains a useful example for robust communication between Processing and Arduinio and in this case WheelColor and LiCo_Control.
Here an example using WheelColor :
The schematic (as pdf).
The printlayout (as png).
The BOM (as txt).
The Arduino library for Arduino < 1.0 (as zip), library for Arduino 1.0 (as zip).
An Arduino example for Arduino < 1.0 (as zip), example for Arduino 1.0 (as zip).
A Processing example that uses the Arduino example (as zip).
The datasheet of the CC2500 chip from TI. (mirror). There are important bugs mentioned in the errata on the TI site !
The datasheet of the CC2500 module from Quasar. (mirror)
The datasheet of the 74LVC125. (mirror)
The datasheet of the LP2950 voltage regulator. (mirror)
The CC2500 and Atmel on the Arduino use SPI to communicate. TI has a application note about SPI.
Please take note of the following changes and non-obvious issues :
The CC2500 Shield for Arduino is a kit that interfaces an Arduino to a CC2500 radio transmitter – receiver.
What do you need :
Assembly is fairly easy :
I have made a couple of clips showing how the prototype was assembled.
Mounting the SMD’s part 1.
Mounting the SMD’s part 2.
The LED’s and the 8 pin header.
The pin headers.
After mounting the parts it is best to check a few things.
Next : the software

