Seeing some amazing looking LED sunglasses/shades I've thought about making myself a pair for awhile now. I finally pulled the trigger when I found out that the smart RGB LEDs with integrated PWM controllers, the APA102, were available in 2020 packages. Yes that's right a 2x2mm package.
I sketched out a simple glasses shape with enough room to fit 8 rows of RGB LEDs. I decided to make the PCB the glasses frame, and just 3d print a nose piece and the parts that fit over your ears. With that in mind I used Rhino3d to do the 2d designs. I've found myself very efficient in Rhino for simple 2D work, it's not parametric like fusion 360, but it's DXF export and general file handling are A++. I can export the outlines created with Rhino straight into KiCad as a PCB edge layer. I finished the routing in a weekend thanks to the highly repetitive pattern. In the end the final design has 173 LEDs arranged in a matrix with a pixel pitch of ~5mm.
For ease of programming I've designed the electronics around the Microchip ATSAMD21E18A which can be easily flashed with an Arduino boot-loader and programmed directly from the Arduino IDE. This enables the re-use of the fastLED library which has support fro the APA102 LEDs we're using.
I created a 3d render of the final PCB design using a combination of KiCad STEP native export, Gerbv for PCB textures, and Fusion 360. I think these turn out really well. and even allow you to experiment with different PCB colours. I will have to write a more detailed seperate blog post /youtube video about this workflow.
I opted to not order these boards with a solder paste stencil, instead just use my hot air rework station and a lot of flux. This worked out OK, but each PCB takes about an hour of high dexterity work. I will be using a solder paste stencil with my rework oven next time.
As mentioned above I am assembling these with a hot-air station. Since this is the first PCB I've designed with an arduino compatible ATSAMD21 so I assembled that first then programmed it with the bootloader and using the USB port uploaded a sketch with some APA demo/example code. Testing the LEDs after each row proved quite useful as I did have ~3 shorts while assembling the first prototype. But once assembled it all works!
To help keep the BOM reasonable I used a tag-connect footprint for the SWD (debug) interface, this is only used once during assembly to burn the bootloader onto the micro-controller. After which the USB port can be used for debugging (over a USB to serial interface) and programming though the Arduino IDE. I originally won the tag connect cable from an old 43oh forum competition so I do not have the correct adapter PCB to use it with my Atmel ICE debugger. So I've taken an olde PCB and creted my own adapter.
While I'm still working on the code for these I've put up hardware files onto a github repo. Find them here: https://github.com/gregdavill/led-shades
Can I buy these?
I'm planning to make small batches available though Tindie in early 2018. These will be hand assembled and programmed and packaged by me. I'll update you with more details as they became available.