ScrolLED watch

Scrolling LED display on your wrist

Similar projects worth following
This is a watch design with LED display. Unlike others, it does not use an off-the-shelf LED matrix as the display. Rather, contains a charlieplexed 16x5 SMD (0603) LED array to display the time and other information. The advantage is smaller form factor. It is the same size as a regular digital watch (e.g the Casio DB-E30).

Todo features:
Add 32768Hz RTC to get better time accuracy
Add rocker switch for scrolling and selection
Add PCB rotary encoder
Implement a way to monitor cell voltage using ADC pins
Add SMD buzzer

Here is the charlieplex SMD LED matrix circuit implemented on the PCB:

Here is the character set for the watch display:

  • 80 × SMD LED 0603 Can be any color of choosing but avoid frosted/diffused packages which cause light leakage as explained in the project log
  • 1 × ATMEGA88V-10AU AVR Microcontroller which works down to 1.9V. TQFP32 package
  • 1 × 32.768kHz SMD crystal
  • 2 × 22pF 0805 capacitors
  • 3 × SMD tactile push buttons

View all 7 components

  • Points about adding solar panel

    Vikas V08/13/2016 at 12:15 0 comments

    A different idea is to add a small solar panel/cell with some changes:

  • Points about using an ARM uC

    Vikas V08/13/2016 at 12:14 0 comments

    Switching over to an ARM based solution is much better than an AVR+RTC chipset solution. Been looking at the STM32F030 chip and it is a perfect fit for this application! It has the following very desirable characteristics:

    • 32.768kHz oscillator on-chip. Just need to hook-up the crystal. This might not be as simple as I thought. It has OSC_IN and OSC_OUT for HSE oscillator and OSC32_IN and OSC32_OUT for LSE oscillator. The OSC32 pins are not available on STM32F030 TQFP32 package
    • RTC on-chip with calendar and leap year correction
    • 8MHz RC oscillator on-chip for running the actual application
    • Serial Wire Debug (SWD) based programming using just 2 pins (SWDIO and SWCLK). Need to use the STLinkV2 programmers which are inexpensive ($3 delivered!) on aliexpress
    • Works down to 2.4V which is the end-of-life voltage of a 3V CR2032 battery
    • 20mA max I/O drive current which can directly drive display LEDs
    • Available in QFP32 package. Just enough number of IO needed

    Need to use the NDK crystal mentioned in the clocking application notes (page 28). The NX3215SA part is available on aliexpress.

    All information for getting started on using STM32 bare bones is mentioned in this excellent article (we don't need no dev boards!) :

    Or maybe a low power version like the STM32L031 or STM32L051. It works down to 1.8V. Its actually less expensive than the ATMEGA88V (in single quantities on digikey)

  • LED matrix issues

    Vikas V08/09/2016 at 06:08 0 comments

    The dense LED matrix has some issues:

    1. Light leakage. In traditional dot matrix displays, there are opaque barriers between adjacent LEDs which eliminate light leakage. In this project, when an isolated LED is lit, the light coming off of its sides slightly illuminate the adjacent LEDs. This reduces visibility. This effect is more pronounced in the board where I have used white LEDs and not so much in the board where red LEDs are used. I guess in case of white LEDs, the yellow phosphor coating is getting illuminated on the adjacent LEDs from the stray side light of the illuminated LED. Couple of ways to fix this problem,
      1. Use narrow beam angle LEDs. These are expensive and taller than regular LEDs
      2. Add opaque barrier between the LEDs. Couple ideas here:
        1. Add a laser cut acrylic which has cutouts for the LED placements. This can be challenging as the gap between LEDs is very small and runs into the limit of laser cutter. Also need to consider the variation in movement of LEDs after reflow soldering
        2. Use an opaque epoxy coating in the gaps between the LEDs. The commonly available black electronics potting compound can also be used for this purpose. The epoxy needs to be dispensed from a syringe between the LEDs and let to set. Because the epoxy flows when it is in the liquid phase, a barrier might be needed on all four edges of the LED matrix to make sure it does not flow and run off the edges
      3. Use transparent LEDs instead of frosted/diffused. This largely eliminates the problem because the stray sideways light will just pass through the transparent material of the adjacent LEDs and not disperse the light. This applies particularly to white LEDs
      4. Use thin LEDs. SMD 0603 LEDs are available in thicknesses of down to 0.25mm. If there is no sideways light, there would be no light leakage. Also, if it is thin, it being diffused instead of transparent would not be a problem. Some examples of thin form factor LEDs
    2. LED orientation. The design assumes that LEDs sit flush on the PCB after reflow so that all of them orient exactly perpendicular to the PCB. But this might not always be the case as can be seen from the pictures. The surface tension of molten solder helps a lot for this but not always. I have observed that the pads which have a little more solder paste applied to them have trouble pulling the LED upright when molten. So, need to use as little solder paste as possible so that this does not happen. Also, while placing the LEDs, it might help to completely seat them on the PCB
      1. This would be less of a problem if thin LEDs are used (as pointed above)

View all 3 project logs

Enjoy this project?



Vincent wrote 10/30/2018 at 20:18 point

Hi Vikas, this project is amazing.. Turning around for month and always come back to it :) when batch on tindie? :))

  Are you sure? yes | no

Vikas V wrote 10/30/2018 at 20:42 point

Hi Vincent. I'm glad you like my project. I am not sure when I can get it on tindie. I will surely let you know when I do. Thanks again :-)

  Are you sure? yes | no

Vincent wrote 10/31/2018 at 22:50 point

I like the way you're pointing and challenging the LEDs side leaking issue that actually seems to be a major point on this kind of dense matrix display. Looking forward your sign Vikas :)

  Are you sure? yes | no

Vikas V wrote 10/31/2018 at 22:57 point

Thanks @Vincent. For the light leakage, I am thinking of going with the epoxy solution which seems would work and look the best. I still need to test it out.

  Are you sure? yes | no

Alexis wrote 01/26/2017 at 23:02 point

Nice project!! Do you have a github repo to download all the files? Could you share them? 


  Are you sure? yes | no

Vikas V wrote 01/27/2017 at 03:57 point

Thanks @Alexis . I'm still in the process of putting the files up on github. Will let you know once its on there. BTW, which part of the project do you want to look into and interested you? Just curious. Is it the code, PCB etc?

  Are you sure? yes | no

Alexis wrote 01/27/2017 at 09:51 point

Thanks a lot! 

Yeah is the PCB and the code above all. I really like to check PCBs and try to modify them, or making them smaller etc... Also, this allows me to make the project for myself and have some fun while doing it. The code is also important because I must tell you that I only know a bit of coding with the arduino IDE. 

So all in all, with your github repository, I would check if I can upload the code and if so, I would start looking at the board and ordering the components to make one. 

Again, your project is really cool! 

  Are you sure? yes | no

Tibor Simon wrote 08/22/2016 at 12:54 point

Hi Vikas, very nice project! Have you considered reverse mount leds? That could potentially solve the light leaking problem you encountered with.

  Are you sure? yes | no

Vikas V wrote 08/22/2016 at 15:02 point

Thanks for the suggestion. Yes, I guess reverse mount LEDs would solve the light leakage issue. In my PCB layout, there is a CR2032 retainer mount on the back side which overlaps the matrix, so it might be difficult to implement. Will try it out.

  Are you sure? yes | no

qquuiinn wrote 08/10/2016 at 01:49 point

Have you considered connecting a 32.768khz crystal directly to the atmega and running an RTC routine through timer 2? It's what I did in #bioloop and it allowed me to keep accurite time without having to worry about a didicated RTC

  Are you sure? yes | no

Vikas V wrote 08/10/2016 at 03:53 point

Thanks @qquuiinn for your comment. I looked into this. The problem is I need a pretty fast CPU (maybe about a 1MHz at least) to compute and scan the LED matrix. Because the AVR does not have an internal PLL to multiply frequencies, I had to use the minimum frequency crystal required. I could run the RTC routing in software using the higher frequency but that would compromise timing accuracy as the higher frequency crystals are not that accurate. And also that I did not have enough space on the PCB and pins on the microcontroller to interface to and RTC chip over SPI/I2C. So, I thought of the integrated solution of using an STM32 uC which has the low speed oscillator built in.

  Are you sure? yes | no

drojf wrote 08/10/2016 at 00:54 point

If you're thinking of switching over to the STM32F030, beware that some of the lower end STM32 parts with low pin counts don't support an external 32khz oscillator. This is because on the F030 series, there are dedicated pins for the high speed oscillator, and for the low speed oscillator, and some packages are missing the low speed oscillator pins. Open your desired package in CubeMX and check that it actually allows you to select the oscillator!

Namely, the 32QFP package you mentioned doesn't support an external low speed oscillator, even though it has an RTC!

  Are you sure? yes | no

K.C. Lee wrote 08/10/2016 at 01:22 point

You can use the HSE to run the RTC.  Unfortunately that means no sleep mode if you want to keep it running.  :(  If you already use external RTC chip, then that's not an issue.

  Are you sure? yes | no

drojf wrote 08/10/2016 at 02:31 point

good point, that would be the use case of the RTC (or using the low accuracy internal low speed oscillator). Vikas specifically wrote "32.768kHz oscillator on-chip. Just need to hook-up the crystal" so I wanted to warn him before he gets too far into development.

  Are you sure? yes | no

K.C. Lee wrote 08/10/2016 at 03:15 point

Should take a look at STM32L low power series chips. 

There is a 48 pin QFN STM32L100R8/RB with 32kHz oscillator. It can run down to 1.8V, 214 µA/MHz Run mode. 

STM32L031 in 32pin LQFP package with 32kHz oscillator.  Runs down to 1.65V and even lower power.

  Are you sure? yes | no

Vikas V wrote 08/10/2016 at 03:47 point

Thanks @K.C. Lee for the STM32L031 chip recommendation and the other comments

  Are you sure? yes | no

Vikas V wrote 08/10/2016 at 03:43 point

Thanks @drojf. Appreciate your heads up. Looking at the datasheet for the STM32F030, it seems I can connect 32kHz crystal onto the OSC_IN and OSC_OUT pins. I'm new to the ARM world and did not know about the separate pins for HS osc and LS osc. Also did not know about the pin omissions in different packages. I need to read the datasheet in detail. Thanks again

  Are you sure? yes | no

oshpark wrote 07/25/2016 at 20:51 point

This project looks very interesting.  Is there a git repo for it?

  Are you sure? yes | no

Vikas V wrote 07/25/2016 at 21:03 point

Hi Laen. Thanks for your interest in my project. Wouldn't have been possible without your service. I haven't created a file repo yet. I will let you know as soon as it is done.

  Are you sure? yes | no

r.brandon.c wrote 12/02/2015 at 19:01 point

How many layers is your pcb?

I have a project where an smd matrix that dense would be really useful

  Are you sure? yes | no

Vikas V wrote 12/03/2015 at 04:30 point

The LED matrix is implemented in a single layer and that is the differentiating aspect of the layout. I will upload the PCB design shortly and you can see how it is done. If you want to reuse that pattern, be aware that the LEDs are arranged in a charlieplexed manner and hence only one LED can be turned on at a time. That's the tradeoff for getting such a dense matrix. But for my application, it seemed reasonable.

  Are you sure? yes | no

davedarko wrote 05/21/2015 at 23:02 point

Congratulations - now you can design and order a case for it :) 

  Are you sure? yes | no

Vikas V wrote 05/22/2015 at 05:05 point

Its nowhere close to completion yet. The picture is that of a prototype to check if the multiplexing scheme would work

  Are you sure? yes | no

Vikas V wrote 05/22/2015 at 05:18 point

Thanks. I get it now. You were referring to the 3D printed parts prize. Yeah. I was thinking of making a case for the watch using acrylic sheets. But I can design and get it 3D printed now. Cool.

  Are you sure? yes | no

davedarko wrote 04/29/2015 at 15:12 point

So 10 pins control 80 LEDs? I love charlieplexing! There's a trick to get a not so complicated layout for a matrix - draw a 10x10 matrix, cross of a diagonal and skip a row/column reconnecting everything. But how will you do that with a 5 x 16 matrix? 

  Are you sure? yes | no

Vikas V wrote 04/30/2015 at 01:40 point

Hi davedarko. Yeah, charlieplexing makes layout tough. So, to make it possible in a single copper layer, I had to leave out many charlieplexing combinations. So, I'm using 18 pins to control 80 LEDs. I'll be updating the layout pictures soon.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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