Assembling the CC2500 Arduino Shield


Please take note of the following changes and non-obvious issues :

  • The kit described ONLY works with the 1st generation LivingColors which is no longer sold.
  • I have made newer and slightly changed versions of the shield.  Little changes as far as assembly is concerned.  The software has changed : it has been upgraded to Arduino 1.0 and the output power has been increased.
  • Do NOT use JP1 en JP3 unless you understand what the do and how you intend to use them. They can be used for interrupting the Atmel when packets have been sent or received by the CC2500. This would require changes in the library.
  • The via’s of the surface mounted module are too close to the metal USB connector of the Arduino. The via’s are tented but it is best to punt some tape on the PCB just to be on the safe side after assembling the shield.

What is it ?

The CC2500 Shield for Arduino is a kit that interfaces an Arduino to a CC2500 radio transmitter – receiver.
What do you need :

  • An Arduino or Arduino clone like the Freeduino.
  • The Arduino development-environment.
  • (optionally) The Processing development-environment.
  • This kit.
  • Standard tools and skills om needed to assemble an electronics kit. At least you will need a small soldering iron, soldering tin, and diagonal cutters. A multi-meter is useful for finding errors and some solder wick or a solder vacuum. You can find various guides on how to use these tools.


Assembly is fairly easy :

  • Smallest parts first. In this case the two 74LVC125 and the DPAK voltage regulator.
  • If you are assembling the version of the CC2500 module with the eternal antenna, you should solder it now. Check the alignment with the holes in the PCB and the notches on the module.
  • If you have the module with the internal antenna, now is the time to solder the 8 pin header.
  • Solder the rest of the parts.
  • Make sure the IC’s are mounted correctly, pin 1 should be near the 8 pin header.
  • There are two different values resistors on the board. R2 and R3 are  680 Ohm, R4 is 10k Ohm. There is no R1.
  • The LED’s should be mounted with the cathode (the short pin) in the ground plane. The short pen should be near the prototyping area, the long pen near the resistors.
  • Do NOT mount JP1 and JP3 unless you know what you want to use them for. There is no JP2.

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.

Testing the board.

After mounting the parts it is best to check a few things.

  • Check the top and bottom of the board for shorts and faulty connections.  Use the multi-meter to check for a short between 5V and GND on J1.
  • After that you can put the shield on the Arduino without the CC2500 module (if you have the internal antenna version). On the header for the module you should check the voltages. You should measure 3.3 V between pin 6 and pin 1. You can use the cut off pens of the LED’s to put in the 8 pins header.  S1 should reset the board.
  • If everything checks out you can remove the shield from the Arduino, place the CC2500 module on the shield and put the shield back on the Arduino.

Next : the software

The built up Arduino CC2500 Shield
Eagle3D allows you to render an image of the board.
Eagle3D allows you to render an image of the board.

SMD Reflow Soldering

Sparkfun has a tutorial describing reflow soldering with a skillet. A couple of months after I read this “kruidvat” had a cheap skillet on sale.

If you use the skillet for reflowing PCB’s, don’t use it to prepare food.

What I needed too were tweezers and soldering paste. Good tweezers can be expensive and soldering paste is quite hard to find.

A warning about shopping for soldering paste. The name “soldering paste” can be used to two things : one is “flux paste” which will allow the solder to flow but does not contain any solder itself. The other is a paste or gel containing a tin alloy, flux and a carrier gel. You’ll need the last kind.

I was surprised to find out that DealExtreme, my favorite webshop for cheap stuff has both.

Sku 4711 is a quite usable soldering paste. DealExtreme sells both kinds of soldering paste. Make sure you get the right kind.

Notes: 1

Sku 19866 are nice tweezers.

You’ll need some way to get the paste on the pads. I used a syringe to get the paste in a small syringe and used the small syringe to apply the paste.

Air-bubbles or water in the paste cause problems during reflowing.  The water will boil and the air will expand causing the paste to splatter.

It’s messy.

Notes: 2

Then I applied the paste.

One thing I did wrong was putting way too much paste in the syringe. The paste is a mixture of tin powder, flux and a gel. The powder separates from the gel in the syringe and if you put too much paste in the syringe you’ll end up with clogged syringe.

I placed the SMD parts in the paste.

And I baked the PCB. First I measured the max temperature of the skillet and tried to get an idea of the temperature slope.

The sparkfun tutorial has some information about the temperature curve you are looking for. The skillet I had maxed out at about 220 degrees C so it worked fine.

Philips redesigns LivingColors, breaks compatibility

Philips has recently introduced a new generation of the LivingColors lamps called “LivingColors 2nd Generation“. These lamps are incompatible with existing remotes and the new remotes cannot be used with “old” lamps (as described in the manual on page 3).

This also means kits like the CC2500 Arduino shield can not control the new “LivingColors 2nd Generation”.

The exterior and user interface of the LivingColors has not been changed as far as I can see. Internally, a lot has changed.

Instead of the CC2500 + MSP430 combo (shown here) :

Philips has used a CC2530 which is a 8051-alike and a IEEE 802.15.4 RF :

Notes: 2

(you can see the PCB here)

The CC2500 and CC2530 are entirely different devices.

8 x 8 pixel RGB Display

This is a prototype for a 8 * 8 pixel RGB LED display. Multiplexing and PWM-ing should be done by the host controller.

I have it working with 8 intensities per primary color on an Arduino.

LED intensity depends on the current though the LED (the forward current I)

The problem with LED matrices is that the cheaper ones (around 9 EUR) mix LED’s from different batches with different currents (I{{sub|f}}) and intensities at the same voltage. The more expensive models (around 25 USD) use LED’s from the same batch or bin.

Here is an example of one the less expensive LED matrix :

Notes: 4

The way around this is to use constant current drivers like the TLC5916.

<more to follow>