Board for modular LED wearables

Board design which makes it easy to attach LED light strips (APA102). No soldering is required by the maker who is using this board

Similar projects worth following
Created some fabric wearables during the summer of 2017. First wearable was created with a LilyPad 328 and separate LED's, took about 2 weeks to complete, and required a lot of soldering. Second design was using a LilyPad ATTINY85 with WS2812b LED strips, actually still required some work and soldering, but the result was astonishing. The RGB LED's allowed colors to blend!
I decided to make these wearables with kids, but I didn't want them to solder, and I had to bring the assembly time down to minutes instead of days. Created some concepts with the ATSAMD21G18A and custom WS2812b LED strips. Now it is time to create a more affordable solution based on the ATtiny84a, using standard APA102 strips.

A simple board, which can be used in wearables, using the following specifications:

  1. Simple attachment for APA102 LED strips;
  2. Integrated LIPO charger;
  3. Compatible with Arduino IDE;
  4. Easy to manufacture (with reflow oven).

KiCAD schematic and PCB design

x-zip-compressed - 268.66 kB - 12/09/2018 at 03:46


  • 1 × PCB Custom designed PCB, see Gerber and KiCAD files for more information
  • 1 × ATtiny84a Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × Resistor 5K 0805
  • 5 × Micro push buttons
  • 1 × Battery charger MCP73831

View all 26 components

  • APA102, SK9822 and DotStar LED strips

    Sander van de Bor4 days ago 0 comments

    When I started this project, I ordered different APA102 strips to determine the pin-out. I decided to go with GND - CLOCK - DATA - GND. The strip fits perfect into a 11 pin FFC connector. Each solder pad on the strip connects to two pins on the FFC, creating a pretty reliable connection.

    For this new board I ordered an additional strip, 5 meters, but unfortunately the pin-out is different:

    This new strip switched the clock and data line, and are no longer compatible with the boards I designed. So I did some research on the different strips out there.

    Adafruit has been selling a so called DotStar LED strips which looks exactly like the top strip in the picture above. DotStar is a brand name from Adafruit, and the datasheet reveals the actual type of LED. Here it gets confusing. While the technical details mention APA102, the actual datasheet is for SK9822. Even worse, they have a note with the following: Strips come with 4 solder points per segment, but the arrangement may vary depending on the supplier, so please check when soldering/powering!

    So I found the following link comparing the two different LED's:

    SK9822 – a clone of the APA102?

    So after taking a closer look at the board and strips I have been using so far, I noticed that the LED's on the actual board are SK9822, and the strip is APA102. I have not noticed a difference in performance and they behave well together.

    Last week I contacted different suppliers to confirm the pin-out of the solder pads and I am expecting a new strip at the end of this week. Fingers crossed it is compatible, and I can keep this project moving.

  • Upload firmware and program LED's

    Sander van de Bor12/28/2018 at 01:24 0 comments

    There are not a lot of boards out there using Micronucleus, but Digispark is one of those boards. I created a custom board within the hardware specifications of the Digispark boards were I added a ATtiny84a running at 8 MHz. Unfortunately the core kept compiling at 16 MHz, resulting in the delay being too slow and the SPI not working.

    I moved on with the ATTiny Core from SpenceKonde, but there was no Micronucleus support for that, only AVRDUDE. I found a compromise where I can use the ATtiny core and the upload tool Micronucleus from Digispark. Unfortunately with Digispark installed LTO can no longer be used. Something I have to solve in the next couple of days.

    I am using the Adafruit DotStar library and made some minor changes to add the ATtiny84 to have it compiled correctly. I made a basic program where I update the LED's on each leg individually. The program uses about 65% of the flash memory (randomSeed actually took quite memory), and there should be plenty left to create some great patterns.

    Here is a video of the programming and the rainbow pattern:

  • Manufacturing the first prototype

    Sander van de Bor12/25/2018 at 01:03 0 comments

    I just started my 11 day holiday vacation, allowing me to spend more time on this project. First step is manufacturing of the actual board. I noticed on the stencil that the solder pads for the USB connectors are part of the stencil as well, something I did not do on my other projects. It actually worked out great, because the solder paste that is pushed into these through holes are holding the USB connector very well, and no second operation is necessary.

    Just before I got ready to place the components I bumped into the tray of the ATtiny84a micro-chips. See here the results of bumping into the tray:

    And here are some pictures of the board after placing most of the components. The battery connector and switch are still missing, but those are easy to place after they get in.

    I still needs some manual touch-up since not all the LED's are connected correctly as you can see in the picture above.

    Next step is uploading the firmware and check the hardware.

  • Boards are here!

    Sander van de Bor12/19/2018 at 04:54 0 comments

    It is always exciting when the boards arrive, and you can actually hold the product. The board manufacturer contacted me a couple of days ago to let me know that the silk screen did not turn out correct, but I think it is not a big issue at this moment.

    I am still waiting on some more components, and I just realized that I never ordered the on/off switch. Not a big deal, because I can use a jumper for now. All the other parts should be here before the end of the week.

  • Designing the panel

    Sander van de Bor12/12/2018 at 04:02 0 comments

    For the first concept, designed with the ATSAMD21G18A, I ordered 150 boards and started putting these with a soldering iron. Soon I found out that this was going to take way too long, and so I moved to a reflow oven soon after.

    Placing the components on the paste, and moving it into an oven to do the soldering did speed up the process. Unfortunately supplying the paste, even with the stencil, was messy, complicated and still took a long time.

    With the second concept, designed with the ESP32, I decided to order a panel instead. Since I never designed a panel before, I asked the board manufacturer to design me one. They did a great job, and it did make it so much easier to apply the paste. You actually do 4 boards at the same time, and the larger surface makes it easier to align the stencil. There was just one problem, most of the components are sticking out on this board, and these were interfering with each other.

    There are some very good deals for PCB manufacturing out there, as long as you stay within a 100mm square panel. The panel shown above was just a couple millimeter over, but doubled the price.

    kiCAD panel design

    Using KiCAD to design the panel not only avoids the interference mistake shown above, it also allows you to stay within the 100mm square window, and you can even combine different designs. Depending on the manufacturer you might have to pay more for a panel, so please check carefully if a panel fee is added before placing the order.

    The latest board design, with the ATtiny84a, is just a little over 50mm wide. The board cannot be redesigned for a smaller footprint since the location of the FFC connectors determine the actual size. The location of FFC is important to get about 16.7mm between the LED's (60 LED's per meter).

    Fortunately the new 'hearth' design allows these boards to stack inside each other, and there was only one solution to eliminate parts from interfering with each other.

    And the panel is just within the 100mm square limit:

    The design is accepted by the board manufacturer, and on order. I am expecting these to finish just before the Holidays.

  • PCB final design

    Sander van de Bor12/09/2018 at 03:38 0 comments


    Initially I was planning on using the ATtiny sleep mode to turn the device off, but that will keep power on the peripherals. Apparently the APA102 chips still draw about 1 mA when not in use, and with 5 on board, this will draw the battery. A switch was added to turn off the board entirety.

    On the first schematic the SPI header was missing as well which is required to upload the bootloader. I am going the use the same SPI connector I have used to program the LED earrings.

    The original ATSAMD21 board used custom LED strips with integrated push buttons, one on each arm. For this concept the push buttons are located on the actual board.


    The original board was round, but now, with less and smaller parts, I am able to get to a smaller size. This allows more different shapes when used in the wearable. I was playing around with different shapes, and a heart was actually fitting all the components nicely. Instead of using traces I added some zones to get some weird shapes, giving it a different look after the soldermask is applied.

    Since the board is heart shapes, some people might to wear it as is. For that reason two holes are added to the top for any type of mounting (necklace, pin etc.)

  • Schematic first concept

    Sander van de Bor12/02/2018 at 07:05 0 comments

    Started creating a schematic based on the micronucleus ATtiny84a bootloader configuration (t84_default). According to this configuration, USB D- is on PB0, USB D+ on B1, and LED is on PB2, active Low. PB2 is the interrupt pin (INT0) as well, and probably for this reason the LED is active low. There will be 5V on the INT0 pin to detect an int erupt, and that would turn on the LED with it is set for active high. A mosfet is used to switch between USB and the battery. I have used Schottky diodes in my earlier designs, but the voltage drop caused by the diode would dim the LED's quite a bit. Using the mosfet will also reduce the energy losses when running on the battery. 10uF capacitors are used on the incoming power and at the battery charger. 100nF at the ATtiny and for each LED array. I might add a microphone for future expansion, which will be connected to pin A0 (for an analog in).

  • Design Concepts

    Sander van de Bor11/24/2018 at 06:20 0 comments

      Concept 1: M0 with WS2812b

      First concept for this board was using an ATSAMD21G18A, with custom LED strips using WS2812b. While it was easy to make different shapes by combining different arms, it did have some disadvantages as well:

      1. LED strips were breaking easily;
      2. LED strips were falling out of the FFC connectors;
      3. The data line of the last LED (Pixel) on the LED strip was connected to the board again. A LED strip was required for each FFC connector, otherwise the following strip didn't work;
      4. When one LED was failing, it interrupted the entire data line, and the entire wearable would fail.
      5. Strips were difficult to make;
      6. PWM was too low, and was visible when the wearable was moving (for example while running).

      150 samples were made and used to teach children how to make wearables. The knowledge gathered throughout these workshops was used to design the second concept.

      Concept 2: ESP32 with APA102

      The second concept used ESP32-PICO-D4, with standard APA102 LED strips. This concept was using the FastLED library with parallel data output on CPU#0, so that placing the strips in series was no longer required. The standard APA102 strips were thicker, and held better in place by the FFC connector. The ESP32 allowed changing parameters by BLE, so push buttons to change the patterns or brightness were no longer required. The APA102 were significant brighter, and the PWM is not noticeable because of the higher rate. Unfortunately there were still some disadvantages:

      1. Cost is higher. The ESP32-PICO-D4 is twice the cost of the ATSAMD21G18A, and it required and USB to serial converter;
      2. FCC certificate required before this can be sold, any BLE module is too large, and will drive up the cost even more.

      Concept 3: ATtiny84a with APA102

      While the ATtiny84a doesn't sound as exciting as the ESP32, it actually has some benefits:

      1. Allows a very simple board design, no voltage regulator required, can run directly from a LIPO battery of USB input;
      2. Since the controller can run at the same voltage as the LED strip, no level shifters are required;
      3. Parallel output is not an option, but the Adafruit Dotstar library allows you to change the data line so that you can have multiple strips connected. Since the strips are relatively short, and the APA102 can handle high data transfer rates), switching from one strip to the next will not be noticeable.
      4. USB bootloader for Arduino allows uploading sketches through USB without a USB to serial converter.
      5. Excellent sleep mode to conserve energy

View all 8 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates