Ditch your pricey smartwatch—build a cooler ESP32 one that tracks your runs and vibes. ESP32 wearables let students create custom gadgets like GPS speedometers, heart rate monitors, and notification pagers for under $20, way cheaper than an Apple Watch. These DIY ESP32 smartwatch projects teach coding, sensors, and IoT while giving you real fitness data on your wrist. github+1
Wearables are student obsessions: tracking steps, heart rate, notifications, and speed during bike rides or runs. But factory smartwatches cost hundreds and lock you into apps. With ESP32, a tiny microcontroller with Wi-Fi and Bluetooth, you get open-source freedom to hack your own. No soldering required for starters—just breadboards and Arduino IDE. circuitdigest+1
This guide walks you through three beginner-friendly ESP32 wearable projects. Each includes components, wiring, code basics, and upgrades. Total word count: ~1500. Ready to level up your wrist game?

Why ESP32 for Wearables? (The Student Edge)
ESP32 beats basic Arduino with built-in Wi-Fi/Bluetooth for phone syncs, low power for battery life, and tons of sensors.
Students love it because:
- Affordable: Core kit ~$10-15.
- Programmable via free Arduino IDE.
- Compact: Fits watch-sized cases (3D print or buy cheap enclosures).
- Expandable: Add GPS, heart sensors, OLED screens easily.[youtube]github+1
Pro tip: Start with ESP32 DevKit, then move to smaller boards like LilyGo T-Watch for true wrist-fit.[shop.sb-components.co]
Project 1: GPS Speedometer Watch (Track Bike/Run Speeds)
Perfect for cyclists or runners wanting real-time speed without a phone app.
Components (~$15)
- ESP32 board.
- GP-02 GPS module (or NEO-6M).
- 0.96″ OLED display (SSD1306/SH1106).
- Push button (mode switch).
- LiPo battery (3.7V) + charger module.
- Breadboard, wires, enclosure.youtube+1
Wiring Diagram
textESP32 → GPS Module → OLED Display
3V3 → VCC → VCC
GND → GND → GND
GPIO16 → TX (GPS) → SDA (GPIO21)
GPIO17 → RX (GPS) → SCL (GPIO22)
GPIO0 → Button
Power OLED/GPS from ESP32’s 3V3. Use I2C for display.[youtube]
Code Basics (Arduino IDE)
Install libraries: TinyGPS++, Adafruit_GFX, Adafruit_SH1106.
#include <TinyGPS++.h>
#include <HardwareSerial.h>
#include <Wire.h>
#include <Adafruit_SH110X.h>
TinyGPSPlus gps;
HardwareSerial GPS(1);
Adafruit_SH1106G display(21, 22); // SDA, SCL
void setup() {
Serial.begin(115200);
GPS.begin(9600, SERIAL_8N1, 16, 17);
display.begin();
display.clearDisplay();
}
void loop() {
while (GPS.available() > 0) gps.encode(GPS.read());
if (gps.location.isUpdated()) {
display.clearDisplay();
display.setCursor(0,0);
display.print("Speed: ");
display.print(gps.speed.kmph());
display.println(" km/h");
display.print("Sats: ");
display.println(gps.satellites.value());
display.display();
}
delay(100);
}
Switch modes (speed/clock) with button interrupts. Add time zones via GPS data.[youtube]
How It Works & Student Appeal
GPS pulls satellite data for speed (km/h or mph), satellites count, and time. Display shows live updates. Battery lasts 4-6 hours on runs.
Upgrade: Log data to phone via Bluetooth, add compass (QMC5883L).[circuitdigest][youtube]
Students flex it biking to school—viral on TikTok!
(Word count so far: ~450)
Project 2: Heart Rate Monitor with OLED (Fitness Vibes Tracker)
Monitor BPM and SpO2 like pros during workouts or stress checks.
Components (~$12)
- ESP32.
- MAX30100/MAX30102 pulse oximeter sensor.
- 0.96″ OLED (SSD1306).
- Vibration motor (optional alerts).
- LiPo battery.
- Wrist strap/enclosure.instructables+1[youtube]
Wiring Diagram
textESP32 → MAX30102 → OLED
3V3 → VIN → VCC
GND → GND → GND
GPIO21 → SDA → SDA
GPIO22 → SCL → SCL
Sensor clips to finger/ear; OLED on wrist.circuits-diy+1
Code Basics
Libraries: MAX30105lib, Adafruit_GFX, Adafruit_SSD1306.
#include "MAX30105.h"
#include "spo2_algorithm.h"
#include <Wire.h>
#include <Adafruit_SSD1306.h>
MAX30105 particleSensor;
Adafruit_SSD1306 display(128, 64);
void setup() {
Serial.begin(115200);
particleSensor.begin();
particleSensor.setup();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop() {
long irValue = particleSensor.getIR();
if (irValue < 50000) return; // Finger not detected
particleSensor.check();
display.clearDisplay();
display.setCursor(0,0);
display.print("Heart: ");
display.print(particleSensor.getHeartRate());
display.println(" BPM");
display.print("SpO2: ");
display.print(particleSensor.getSpO2());
display.println(" %");
display.display();
delay(500);
}
Calibrate threshold for accurate reads.[youtube][instructables]
How It Works & Student Appeal
IR light measures blood flow for BPM/oxygen. OLED shows graphs or averages. Alerts vibrate on high/low heart rate.
Upgrade: Web server for phone graphs (ESPAsyncWebServer), step counting via accelerometer.[youtube]
Students use it for gym sessions or biofeedback—feels like a Fitbit killer.
(Word count so far: ~850)
Project 3: Notification Pager (Phone Alerts on Wrist)
Get texts/calls without pulling out your phone—pure distraction-free vibes.

Components (~$10)
- ESP32 (or ESP32-C3 for tiny size).
- 0.96″ OLED.
- Vibration motor + transistor.
- Push button (dismiss).
- LiPo battery.
- Mesh module optional (ESP-NOW).[youtube][shop.sb-components.co]
Wiring Diagram
textESP32 → OLED → Vibration Motor
3V3/VCC → VCC → (via 2N2222 transistor)
GND → GND → GND
GPIO21 → SDA
GPIO22 → SCL
GPIO25 → Motor PWM
GPIO0 → Button
Bluetooth pairs with phone app.[shop.sb-components.co]
Code Basics
Libraries: BluetoothSerial, Adafruit_SSD1306.
#include "BluetoothSerial.h"
#include <Adafruit_SSD1306.h>
BluetoothSerial SerialBT;
Adafruit_SSD1306 display(128, 64);
const int motorPin = 25;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32Pager");
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
pinMode(motorPin, OUTPUT);
}
void loop() {
if (SerialBT.available()) {
String msg = SerialBT.readString();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(0,0);
display.println("New Notif:");
display.println(msg);
display.display();
analogWrite(motorPin, 128); // Vibrate
delay(2000);
analogWrite(motorPin, 0);
}
}
App sends notifications via Bluetooth.[shop.sb-components.co]
How It Works & Student Appeal
ESP32 receives Bluetooth messages from a custom app (MIT App Inventor). OLED shows sender/text; motor buzzes. Mesh for peer-to-peer group chats.
Upgrade: GPS location sharing, low-power deep sleep.[youtube][shop.sb-components.co]
Ideal for class/study—pings for texts without phone addiction.
Powering & Making It Wearable (Battery & Case Tips)
All projects use 3.7V LiPo (500mAh lasts 8+ hours). Add TP4056 charger for USB top-ups.
Enclosures: 3D print watch cases (Thingiverse “ESP32 watch”) or use Altoids tins. Secure with straps/hot glue. Deep sleep mode saves power: esp_deep_sleep_start();github+1
Safety: Low voltage is safe; avoid loose wires on skin.
Advanced Upgrades for Pro Wearables
- Multi-function Watch: Combine all three—GPS + heart + notifications in one LVGL UI.[circuitdigest]
- Phone Sync: Blynk/IFTTT for weather/steps.
- AI Twist: Send heart data to ChatGPT for “fitness advice.”
- Mesh Network: ESP-NOW for friend-to-friend pings without internet.[shop.sb-components.co]
Cost breakdown: ESP32 ($5), sensors ($3-5 each), OLED ($3), battery ($2). Total under $20/project.
Get Started: Tools & Resources
Download Arduino IDE, add ESP32 board via Boards Manager. GitHub repos like Bellafaire/ESP32-Smart-Watch have full code.[github]
Tutorials: Random Nerd Tutorials, Instructables. Communities: Reddit r/esp32, ESP32 Discord.
Students, this is your ticket to custom wearables better than store-bought. Track runs with GPS accuracy, monitor heart during games, or pager notifications during focus hours. Share your builds on TikTok (#ESPWearable)—they go viral fast. What’s your first project? Drop a comment!