Introduction: Make a DIY Smartwatch Using ESP8266

About: I am a youtuber, DIY'er, programmer who loves to make new Open Source hardware projects and developing codes for them. I like to make DIY projects and upload tutorial videos on youtube.

Smartwatches are extremely fascinating because of the numerous features provided by them with tiny body. The Smartwatch craze began when Pebble released their first Smartwatch. Since then, many companies are constantly working on designing the most utilitarian smartwatch.

But, What really makes a Smartwatch cool? It is definitely its looks and features. The best way to get personalized features on a Smartwatch is to design and build one on your own.

In this project, I will show you how to make a DIY smartwatch using an ESP8266 chip, ESP-12E. I have documented all the steps, but I recommend you to watch the video to get a better understanding of the process.

Step 1: Project Overview

The main features of this Smartwatch are to display time, weather and most importantly you can control other appliances by pressing the buttons on the watch. The watch receives all the data through the internet, so it has to be connected to the internet to function.


Here's how it functions:

1.Time: The watch connects to the nearest NTP server to get the time and date.

2.Weather: The temperature data is obtained from Yahoo Weather API.

3.Controlling other Appliances remotely: The watch connects to the Blynk server and uses its bridge function to directly control the other ESP8266 Relay module that I made in my previous project. You can watch the video Here.

Step 2: Preparing the Stuffs

For this project, Here are the components required:

Amazon.com:

1 x ESP-12e: https://amzn.to/2q5lxee

1 x OLED display: https://amzn.to/2Sghhp6

3 x SMD buttons: https://amzn.to/2Sghhp6

1 x 3.3V Voltage Regulator: You can get from an arduino uno or pro mini; https://amzn.to/2DbnwpI

1 x TP4056 (Charger circuit): https://amzn.to/2Sghhp6

2 x Small SMD buttons(buttons present on the NodeMCU); Assorted buttons kit: https://amzn.to/2Sghhp6

2 x 0603 LED: You can get from the charger circuit above.

2 x 0603 Resistor: You can get from the charger circuit above.

1 x SMD Slide Switch: https://amzn.to/2Sghhp6

8 x 0805 10K Resistors: https://amzn.to/2Sghhp6

2 x 0805 10uF Capacitor: https://amzn.to/2Sghhp6

1 x 0603 112 Resistor: You can get it from Charger circuit.

Amazon.in:

1 x ESP-12e: https://amzn.to/2JmDC09

1 x OLED display: https://amzn.to/2StEEeY

3 x SMD buttons: https://amzn.to/2CQNCxB

1 x 3.3V Voltage Regulator: You can get from an arduino uno or pro mini; https://amzn.to/2CPSDq9

1 x TP4056 (Charger circuit): https://amzn.to/2yCnN1a

2 x Small SMD buttons(buttons present on the NodeMCU); Assorted buttons kit: You can get it from a nodeMCU

2 x 0603 LED: You can get from the charger circuit above.

2 x 0603 Resistor: You can get from the charger circuit above.

1 x SMD Slide Switch: https://amzn.to/2yHgPI8

8 x 0805 10K Resistors: https://amzn.to/2COzKUn

2 x 0805 10uF Capacitor: https://amzn.to/2yE1hVQ

1 x 0603 112 Resistor: You can get it from Charger circuit.

Most of the Components can be bought alone but some of them have to be salvaged from other modules. I had taken the 3.3V Voltage Regulator from an arduino uno, the 2 buttons from nodeMCU and the LED's, resistors along with TP4056 were from the 3.7V LiPo Battery Charger circuit.

Step 3: Order the PCB's

I didn’t want the watch to be clunky and heavy so I thought the best way to reduce the usage of wires is to make a PCB. I designed the Schematic and Printed Circuit Board using EasyEDA: https://easyeda.com , then I ordered the PCB’s from JLCPCB.

To order a PCB, visit www.jlcpcb.com and upload your gerber file.
Here is the PCB gerber file: https://github.com/theTechnowright/DIY-Smartwatch...

The PCB’s arrived after two weeks, they were of pretty good quality for only $2.

Github link to circuit schematic, PCB gerber file and arduino code:

https://github.com/theTechnowright/DIY-Smartwatch-...

Step 4: Solder All the Components!

Then solder all the components to the PCB. I used a soldering to solder the THT components and a hot air Soldering gun for the SMD components. Using the Hot Air soldering iron I was able to solder all the SMD parts without difficulty. But it is not impossible to solder them without it.

After soldering the components, I found out that the GPIO pin 9 cannot be used as an input. So I had to cut the copper trace using an Xacto knife and soldered a thin wire from the button to the GPIO 14 pin. You don't have to worry about it because I have I already corrected the PCB's and the schematics.

Step 5: Programming the Watch...

Before we upload the code, we have to get the Weather API from Yahoo Weather API. Visit the page, under the YQL query click on the green text and scroll all the to the end till you find the text “nome, ak”. Here you should add your city’s name and country code. For example, I placed “Bengaluru, IN” where ‘Bengaluru’ is a a city and ‘IN’ for India.
After doing that, click on the “Test” button below and copy the link given under ‘Endpoint’ from “/v1” till the end of the link.

Then download the arduino code from here: https://github.com/theTechnowright/DIY-Smartwatch-...

In the code, first insert the Blynk Authentication code which will be emailed to you after creating a new Blynk Project. Then type in the WiFi SSID and password.
Paste the copied Yahoo API link in the place where it says ‘const String url = “” ‘ And then under the BLYNK_CONNECTED, Insert the authentication code of the other ESP8266 which controls the Relays. Finally scroll down till you find “TimeChangeRule”, Here add or subtract minutes from UTC according to your time zone.

I had previously done a DIY Weather Station project which gives a step-by-step tutorial to use BLynk. And here is the link to the DIY WiFi Relay project:

Then install all these arduino libraries :

Time.h & TimeLib.h: https://github.com/PaulStoffregen/Time

Timezone.h: https://github.com/JChristensen/Timezone

SSD1306.h & SSD1306Wire.h: https://github.com/JChristensen/Timezone

NTPClient.h: https://github.com/JChristensen/Timezone

ESP8266WiFi.h & WifiUDP.h: https://github.com/JChristensen/Timezone

Download latest Blynk library here: https://github.com/blynkkk/blynk-library/releases...

Now wire the 4 pin serial communicator to the USB-TTL convertor accordingly;

ESP-12eUSB-TTL Convertor

GND - GND

RST - RTS

RX - TXD

TX - RXD

On the arduino IDE, select your device as NodeMCU 1.0 and choose the correct COM port and upload the code. While uploading the code make sure to press and hold the flash button on the watch.

Step 6: Make the Straps for the Watch!

To make the watch straps, I used an elastic band from an old Safety goggles and attached it to the watch. You can take a look at the pictures above to get a better understanding.

I first thought of placing the battery right underneath the watch, but it was too bulky and uncomfortable. So I sandwiched it between the straps to keep the watch thin.

Step 7: Test the Watch and You're Done!

Now, turn ON your watch by sliding the switch. Then it should show a message saying " Connected to WiFi". If it does,then You Have successfully Made a Smartwatch! Congratulation!

On pressing the middle button, the watch will display Temperature, Time and date. And the other two buttons control the two relays of the WiFi Relay module. You connect the relay to any electrical appliance and that can be controlled by the watch. The best thing to do is to connect it to an extended power outlet. And Make sure to connect the Relay switch to the live wire and not the neutral.

*WARNING: This project involves handling of wires from the main power outlet. PLEASE DO SO ON YOUR OWN RISK. I AM NOT RESPONSIBLE FOR ANY INJURY CAUSED TO YOU OR ANYONE.

That's it, we have made a smartwatch!

Make sure to check out my youtube channel and subscribe for more cool projects like this:

www.youtube.com/thetechnowright?sub_confirmation=1

You can also follow me on Instagram:

www.instagram.com/thetechnowright