Thursday, May 22, 2025

Build Your Own Simple Smartwatch

EFY Tested Smartwatch

The aim of this project is to create an affordable and programmable smartwatch capable of tracking health data, providing real-time information, and enabling customization according to users’ preferences.

Leveraging the compact size and onboard sensors of the Indusboard Coin, along with additional components such as the GC9A0 display, MAX30100 SpO2 sensor, heart rate sensor, and temperature sensor, we can design a feature-rich smartwatch that meets these requirements.

DIY Smartwatch built at home
DIY Smartwatch built at home

Components

  • IndusBoard: The Indus board serves as the core component of the smartwatch, offering a compact form factor and a variety of onboard sensors and GPIOs essential for building a versatile device.
  • GC9A0 Display: The GC9A0 display provides a crisp and clear interface for users to interact with the smartwatch. Its high resolution and vibrant colors enhance the user experience, making it suitable for displaying health data, notifications, and other information.
  • MAX30100 SpO2 Sensor: This sensor measures blood oxygen saturation levels (SpO2) and heart rate, enabling the smartwatch to monitor users’ health in real time. Accurate SpO2 readings are crucial for detecting potential health issues and ensuring users’ well-being.
  • Heart Rate Sensor: Alongside the MAX30100 SpO2 sensor, the heart rate sensor further enhances health tracking capabilities, providing continuous heart rate monitoring during various activities and at rest.
  • Temperature Sensor: The temperature sensor adds another dimension to health monitoring, allowing the smartwatch to track users’ body temperature and detect changes that may indicate illness or exertion.
  • Wi-Fi Chip: Integrated with the Indusboard, the Wi-Fi chip enables connectivity, data synchronization, and the creation of a mesh network for collective health monitoring. It also facilitates over-the-air programming and customization of the smartwatch’s functions and features.

Functionality

  • Health Tracking: The smartwatch can monitor vital signs such as heart rate, blood oxygen levels, and body temperature, providing users with insights into their overall health and well-being.
  • Real-time Information: Users can access real-time data including time, date, weather updates, notifications, and activity tracking through the intuitive interface displayed on the GC9A0 screen.
  • Customization: With programmable capabilities, users can customize the smartwatch’s UI, functions, and features according to their preferences and needs. They can also develop and install custom apps to extend functionality.
  • Mesh Networking: The Wi-Fi chip enables the creation of a mesh network, allowing multiple smartwatches to communicate and share health data. This collective data can be analyzed to identify trends, patterns, and potential health risks within a community or group.
IndusBoard Coin
IndusBoard Coin

Preparing the Smartwatch Code

We first need to prepare the code to enable our smartwatch to display data and perform desired functions. We’ll be using Arduino for programming.

Step 1: Setting up Arduino IDE

  1. Download and install the latest version of the Arduino IDE.
  2. By default, the Arduino IDE does not include support for ESP boards.
  3. Visit the ESP website and follow the instructions to add the ESP board support to the Arduino IDE.

Step 2: Installing Required Libraries

We need several libraries to interface with the LCD and sensors and fetch time from the network. Open the Library Manager in Arduino IDE and install the following libraries:

  • NTP Client
  • MAX30100
  • Arduino GFX
Installing Arduino IDE Libraries
Installing Arduino IDE Libraries

Step 3: Writing the Code

  1. Interfacing the LCD Display
    • Use the Arduino GFX library to interface with the round LCD display.
    • Include the library in your code.
  2. Fetching Time from WiFi
    • Use the NTP Client library to fetch time from the network via WiFi.
    • Include this library in the code.
  3. Interfacing the MAX30100 Sensor
    • Use the MAX30100 library to interface with the heart rate sensor.
    • Include this library in your code.
Code for Smartwatch Project
Code for Smartwatch Project

Step 4: Hardware Setup in Code

  • Configure the SPI bus pins and set the board type.
  • For this project, we are using the Indus Board with the ESP32-S2 chip. On this board, any pins can be configured as SPI.
  • Set the SPI pins (e.g., 21, 1, 2, 3, 4, 5) for the LCD display connection.
  • Specify the LCD display driver, GC9A01, in the code.

Step 5: Setting Wi-Fi Credentials

  • Define the Wi-Fi SSID and password to connect the smartwatch to your phone’s hotspot or home network.
  • This connection enables the watch to fetch time from the NTP client server.

Step 6: Initializing Peripherals

  • In the setup function, initialize:
    • I2C communication for the MAX30100 sensor.
    • SPI communication for the LCD display.
    • NTP client for the clock synchronization.

Creating the GUI for the Smartwatch

Update the GUI elements and data dynamically to ensure the watch displays accurate and current information.

- Advertisement -

Updating Sensor and Time Data

  • In the loop function, continuously update the sensor readings and time data in real-time.

Designing the Interface

1. Create a graphical user interface (GUI) for the smartwatch to display:

- Advertisement -
  • Health data (e.g., SPO2 and heart rate).
  • Date and time information.

2. Customize the GUI as per your preference. For example:

  • A circular clock face with two hands for minutes and hours.
  • A circular arc representing seconds, which decreases in real-time.
  • A round rectangle displaying heartbeat data.
  • Text fields for the current day, month, and time-related data.

Real-Time Updates

  • Update the GUI elements and data dynamically to ensure the watch displays accurate and current information.
Creating the GUI for the Smartwatch
Creating the GUI for the Smartwatch

Download Source Code

Connection

Now connect the MAX30100 sensor to Indusboard as following:

IndusBoard Coin Pinout
IndusBoard Coin Pinout
Max30100Indusboard
VCC3V
GNDGND
SCL9
SDA8
DisplayIndusboard
TFT MOSI21
TFT_SCLK1
TFT_CS2
TFT_DC3
TFT_RST4
TFT_BL5
VCC5V
BL3V
GNDGND

Testing Homemade Smartwatch

Now power the watch and you can see the details on the watch.

Homemade Smartwatch
Homemade Smartwatch
Smartwatch with IndusBoard
Smartwatch with IndusBoard

Check other Cool Smartwatch Projects:

Ashwini Sinha
Ashwini Sinha
A tech journalist at EFY, with hands-on expertise in electronics DIY. He has an extraordinary passion for AI, IoT, and electronics. Holder of two design records and two times winner of US-China Makers Award.

SHARE YOUR THOUGHTS & COMMENTS

Most Popular DIY Projects

EFY Prime

Unique DIY Projects

Electronics News

Truly Innovative Electronics

Latest DIY Videos

Electronics Components

Electronics Jobs

Calculators For Electronics