Skip to content

Repository files navigation

SmartSip: TinyML-Powered Hydration Tracker

On-device gesture classification for a smart water bottle using TinyML on Arduino Nano 33 BLE Sense.

Hardware Setup

Results

Metric Value
Validation Accuracy 93.7%
Drinking Detection 97.3%
Idle Detection 98.0%
Model Size 21.8 KB flash
RAM Usage 1.8 KB

Confusion Matrix

Method

IMU Data → Feature Extraction → Dense NN → Gesture Classification → BLE → Web UI
  1. Data Collection — 1,200 labeled gesture windows from 9-axis IMU
  2. Classification — 4 classes: Idle, Lifting, Drinking, Placing Down
  3. Inference — Quantized int8 model runs on-device at real-time
  4. Notification — BLE to React web app + ntfy.sh mobile push alerts

Hardware

  • MCU: Arduino Nano 33 BLE Sense (nRF52840)
  • Sensor: LSM9DS1 9-axis IMU (accelerometer + gyroscope)
  • Communication: Bluetooth Low Energy

Model Architecture

Input (189) → Dense (32) → Dense (16) → Dense (16) → Output (4)

Trained with Edge Impulse, quantized to int8 for deployment.

Web Interface

Web UI

  • Real-time activity classification with confidence scores
  • Configurable hydration reminder intervals
  • Activity history logging
  • Mobile push notifications via ntfy.sh

Tech Stack

TinyML Arduino TensorFlow Lite Edge Impulse React BLE Python


TU Hamburg — TinyML Course Project

About

ML on microcontrollers

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages