About: PLC, Arduino - Do it yourself project

I had planned to buy a Neopixel Ring 60 Led to make a clock but unfortunately I couldn't buy it. Finally, I bought a Neopixel Ring 35 Leds & came up with a simple way to make an internet clock which can display hour, minute & second with this LED Ring 35. Let's get started.


Main components are included:


This is very simple circuit. The NEOPIXEL RING has 2 x 3 pads marked as follow: 5V, DI, GND and 5V, DO, GND. To control it, all we need to do is to solder 3 connections to these 3 pads 5V, DI, GND on the ring. 5V and GND of NEOPIXEL RING connect to +5V and GND of external power supply and data DI pin is connected to ESP8266 NODEMCU at pin D4.

Note: I could not find NEOPIXEL RING 35 LED in the FRITZING library, so I used NEOPIXEL RING 60 LED to replace it in the circuit diagram.


Firstly, I removed original cables from NEOPIXEL RING, then I soldered 3 pin male header at 5V, DI, GND pins on NEOPIXEL RING.

I cut the DIY PROTOBOARD CIRCUIT 5X7cm into a small piece, soldered 2 rows of female headers for plugging ESP8266 NODEMCU on it. In this picture, I have soldered some extra components like: 8P female header for MPU6050, one RGB LED with 3pcs x current-limiting resistors and 2P screw terminal block.

Soldering 3 pin female header (5V, D4, GND) at bottom of DIY PCB following the schematic on previous step. This female header will connect to male header of NEOPIXEL RING.

Glue a small box to cover ESP8266 NODEMCU. I wish I had a 3D printer to make small boxes like this. I drilled a hole on box in order for female header of DIY PCB can go through this hole and connect to NEOPIXEL RING.

It’s very simple. DONE.

I used cell phone charger to supply 5V power to counting ring clock.


My idea is shown in picture below:

Hour will be displayed as a binary number and we need 4 LEDs equivalent to a 4-bit binary number to show hour (max. 12).
Minute and second are represented by counting the number of LEDs in the tens digit (max. 5) and units digit (max .9). Totally, we need (5+9) x 2 = 28 LEDs to show minute and second.

This NEOPIXEL RING has 35 LEDs so 3 remaining LEDs are used as a separators to clarify hour, minute & second. It is marked by BLACK color in the picture.

We can see picture below to understand how this clock displays the time.

The position of the LEDs is declared in the following arrays:

byte HHHH[4] = {16, 17, 18, 19};                    // Hour - 4 Bit Binary Number
byte M0[5] = {14, 13, 12, 11, 10};                  // Minute - Ten digit
byte M1[9] = {9, 8, 7, 6, 5, 4, 3, 2, 1};           // Minute - Unit digit
byte S0[5] = {21, 22, 23, 24, 25};                  // Minute - Ten digit
byte S1[9] = {26, 27, 28, 29, 30, 31, 32, 33, 34};  // Minute - Unit digit
byte SEPERATOR[3] = {0, 15, 20};                    // 3 Seperator leds

This Counting Ring Clock can read time information from the NTP server and time will be updated over WIFI by ESP8266 NODEMCU.

We can refer to this website to select led color you prefer. In picture below, the counting ring clock shows the time with no seperator leds.

If it cause confused, we can set other color for them (ex: WHITE in picture below) to differentiate hour, minute and second.

Counting ring clock code is available at my GitHub.

Step 5: FINISH

See some more pictures.

Thank for your watching and I hope you like it!!!

Please LIKE and SUBSCRIBE to my YouTube channel.

LED Strip Speed Challenge

Participated in the
LED Strip Speed Challenge