⌚ Air & Water Pollution Smartwatch
A wearable multi-sensor diagnostic device to analyze air purity and water quality on an OLED UI.
Overview
Environmental monitoring goes portable. This wearable project pairs an ESP32 with an MQ-135 hazardous gas sensor and an analog TDS (Total Dissolved Solids) sensor to check air and water safety.
What you'll learn: Calibration curves for air quality assessment, electrical conductivity measuring in liquids (TDS), battery power optimization, and multi-screen wearable menus.
Estimated time: 3-4 hours. Difficulty: ⭐⭐⭐⭐ Advanced.
Components Needed
| Component | Specification | Qty | Notes |
|---|---|---|---|
| ESP32 DevKit V1 | Ultra-low sleep power | 1 | Drives the smartwatch |
| MQ-135 Air Sensor | Analog gas detection | 1 | Measures CO2, ammonia, benzene |
| TDS Sensor Module | Analog output, 0-3.3V | 1 | Water purity dissolved solids |
| 0.96" I2C OLED Display | SSD1306 driver | 1 | Wearable UI layout |
| TP4056 Charging Module | 5V Micro-USB in | 1 | Manages LiPo smartwatch battery |
Step-by-Step Tutorial
1
Air Quality Calibration
Calibrate the MQ-135 sensor in fresh outdoor air to set the base resistance (Ro) before measuring complex PPM levels.
2
Water Quality Integration
Connect the TDS probe to the analog input of the ESP32. Convert the voltage reading to PPM of dissolved solids using the calibration curve.
3
Design Wearable Interface
Wire the SSD1306 OLED display. Program simple pages that slide in when an onboard tact button is pressed.
4
Assemble Compact Case
Mount all sensors, the LiPo battery, charging module, and ESP32 inside a lightweight, compact wrist-ready chassis.
5
Implement Power Saving
Program deep sleep states. Keep the smartwatch in micro-amp standby mode until the button wakes it up to perform quick measurements.
MQ-135 sensors utilize a built-in heater. They must be powered on for 24-48 hours to "burn-in" for precision calibration before first accurate use.
Code / Configuration
smartwatch_pollution.ino
INO
// Pollution Smartwatch - Volt X
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int mq135Pin = 34; // Analog pin for Air Quality
const int tdsPin = 35; // Analog pin for TDS
void setup() {
Serial.begin(115200);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
pinMode(mq135Pin, INPUT);
pinMode(tdsPin, INPUT);
}
void loop() {
int airRaw = analogRead(mq135Pin);
int tdsRaw = analogRead(tdsPin);
// Math conversions...Reviews & Ratings
—0 reviews
Sign in to leave a review
Loading reviews...