Introduction: ESP8266 Neopixel Clock
In this Instructable i will show you how to build a Clock out of an ESP8266 Node-MCU v0.9 dev. kit, a 24 Neopixel Ring and some other parts. Sorry for my bad english skills, if there is a problem or a question ask me and i will try to help you.
Step 1: Parts and Tools
Parts:
- ESP8266 Node-MCU v0.9 dev. kit (around 6 Euros)
- Adafruit Neopixel Ring 24 Pixels (around 10 Euro)
- enamelled copper wire 0,5 mm (around 3 Euro)
- copper wire 1mm (1,5 Euro)
- 2K Glue ( 1 Euro)
- a piece of metal perhaps you have a piece laying at home
- an old smartphone charger ( 3,99 Euro or cheaper if you have one at home)
- a piece of dotted perfboard (big enough to fit the ESP8266)
- Female Pin Header (1,35 Euro)
The parts from above are from ebay but i think you get some or all of these also from your local stores.
Tools:
- soldering Iron
- solder
- pliers (bend the piece of metal and the 1mm copper wire)
- saw (cut out the perfboard)
Step 2: Perfboard
In this step we cut the female header and the perfboard in the right dimensions. Lay the ESP8266 on the perfboard and mark the pins on the board (picture 1). On the right side let a row space for the female header. (seen in picture 3). Cut of the long female header 2 three pin parts(picture 2). Place the three pin header parts on the perfboard where your pins D5, GND and 3,3V of the ESP8266 is. Cut also 2 single female pins for the left side (picture 4). These two single female pins are only for stability. The last picture shows the connection between ESP8266 and Neopixel Ring.
Step 3: Soldering
This is a short step. Turn your perfboard around and solder the female header. That's it, the circuit is done.
Step 4: Program ESP8266
I work with the Arduino IDE 1.6.7. It's easy and simple to use it. Setting up the IDE for the ESP8266 is easy and there are many instructables here, so i do not want to bore you with this step. If you start programming the ESP8266 it should look like in the first picture. These are the setting i use for the ESP8266 Node-MCU 0.9.
In the appendix you find everything you need for the project (Libraries and sketch).
The code is well explained. You only have to put in your SSID (name) of your wifi network (Codeline 18) and the password (Codeline 19), instead of the stars. If you are not from Central Europe you can also change the timezone.
Now compile and load it to your ESP8266.
Attachments
Step 5: Metal Work
This is the creative part of the instructable. Take the piece of metal or material of you choice and form it. I made 4 holes in the piece. One to hang it on the wall, two for the copper wire (1mm) to hold the Neopixel Ring and a little hole to put three enamelled copper wires through for connecting the ESP8266 and Neopixel Ring. On the second picture you can see the rear side. There are also two "hooks" for the perfboard also made of the 1mm copper wire. To glue the copper wire on the metal i took a 2k component glue andmade spirals for more stability.
Step 6: Put Everything Together
You are nearly done. In the last step you put everything together. The picture shows the rear side with mounted perfboard and the three enamelled copper wire which go through the metal. The second picture shows the front side.
If you like my instructable leave a comment and/or like it. Do you have questions? Place it in the comments i will try to help you. At the end if you really like it please vote for me in the Full Spectrum Laser contest.

Participated in the
Full Spectrum Laser Contest 2016
22 Comments
Question 9 months ago
Compilation error: 'setSyncProvider' was not declared in this scope
ho do we solve this
5 years ago
Hello, nice post, but the NTP server part is broken, beause the IP isn't correct anymore. is there anyway to use a dns name instead ? + how to handle daylight savings ?
6 years ago
with the following line, do I change NUMPIXELS to the actual number of pixels on my ring? for example I have a 12 pixel and a 24 pixel ring I could use...
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Reply 6 years ago
@dougstrickland Yes, you need to change the NUMPIXELS value to the number of LEDs in you neopixel ring.
6 years ago
its great and i have a question
i wanted a code to cheak connection , if connection with wifi is true set any port to high and In reverse set low this port
plz help me to creat this code :))))
tanx so much
6 years ago
Hi everyone I'm trying to build this clock but the LEDs seem to be randomly lit I use the ws2812b led i tried with several esp12 / esp7 / wemos d1 mini but nothing what could it be? Arduino does not give me errors in compilation
6 years ago
I have used 60 Neopixel ring for this and an ESP8266NodeMCU all works great. Now I need to sort a casing ... probably an old (1950's) Marconi radio carcass. Keep up the good work. Thanks D6
6 years ago
thanks for the tutorial! i built it today, and everything works fine for me. i just wondered if i could add a sound on full hours via a piezzo. do you have an idea about how to do that?
Reply 6 years ago
hi. if you want just sound, not melody, you can use active buzzer any unused GPIO pin, get full hours and this small piece of code:
digitalWrite(2, 0);
delay(500);
digitalWrite(2, 1);
Reply 6 years ago
hi, i would say you need some code from here:
https://www.arduino.cc/en/Reference/Tone
and a if request of hour and minutes when its full hours
7 years ago
i see alot of qustions
that are UN ANSWERD
WHY????? respond pleace thats what we do here, help eachother
Reply 7 years ago
and your question is?
7 years ago
can you help me ? I try same project, but neo pixels does't work . could you give me the cord? sorry, I have bad english skill, too. I try to use arduino IDE.....
Reply 7 years ago
Did you tested your neopixel with one of the adafruit example sketch? If not try it and test if the neopixel are the problem or my sketch.
7 years ago
great instructable but i tried doing this on a wemos mini and its not working i dont get any errors but it dont even turn on the neopixles i have tried with the pin set to 14 like you said and to pin 5 could you please help
Reply 7 years ago
Sorry i don't have a wemos board so i only guess where the problem is. Did you tested the neopixel with the example sketch? Next possibility as on my board is the pin names which are printed on the board aren't the same which you use in the Arduino IDE.
Reply 7 years ago
Hi MarcoG6,
i'm not familiar with the wemos mini. Do you checked your wemo and neopixel individual? Flash a LED on the wemo and an example sketch of the neopixel? If both work check the internet connection and time over the serial monitor. Another point is the neopixels has different led driver in tere different versions. So you have to find out which LED driver is in it and adjust this line in your code: "
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); ".
Reply 7 years ago
the wemos mini is based on the esp 12E
i am using a 12 neopixel ring from adafruit
WS2812 Datasheet here's the data sheet for the indiviual neopixels if that would help
Reply 7 years ago
Hi,
I do not know if it is still actual, but you have to change pin number, because Wemos needs to have letter D in front of the number, example:
#define PIN D4.
I hope it would help you or someone else.
7 years ago
I just made it partially =) now trying to understand how to read a time from that ;)