The problem
A smart water bottle is a reusable bottle with an ESP32 microcontroller, a water-level sensor and a reminder output that measures how much water leaves the bottle, adds each sip to a daily total, and prompts the user when too long has passed without drinking. This build syncs that history to a companion dashboard over Bluetooth Low Energy.
The build senses the falling water level, converts the change into millilitres drunk, shows the remaining daily goal on a small display, and keeps the history on the dashboard for review at the end of the day.
The Problem
A smart water bottle exists because most people do not drink steadily through the day, even when they carry water everywhere. The smart water bottle in this project addresses a simple failure: a plain bottle gives no feedback at all, so a student in back-to-back lectures or a desk worker in long meetings can reach the evening having drunk far less than planned, with only thirst as the signal. Phone reminder apps try to fill the gap, but they rely on the user remembering to log every sip by hand, and a missed log makes the whole day's record wrong. Printed time markers are just as weak: they show a target hour, not what was actually drunk, and they cannot adapt when the day starts late or a refill happens. This project replaces guessing with measurement: the bottle itself records each sip, so the daily total is based on what left the bottle, not on what someone remembered to type.
How it works
From cap to dashboard, the mechanism is a short loop: sense, settle, convert, display, remind and sync. The level sensor in the smart cap watches the water, and the ESP32 firmware samples it, but it does not trust every reading — it waits until the bottle has rested upright for a settling interval, so a tilt while the bottle is carried cannot masquerade as drinking. Once a reading is stable, the firmware compares it with the last accepted level: a drop becomes millilitres drunk through the bottle's calibrated cross-section, while a rise becomes a refill that resets the baseline without touching the drunk total. The new total appears on the OLED display and the reminder timer restarts; if it runs out with no confirmed sip, the LED and buzzer prompt the user. Every event travels over Bluetooth Low Energy to the dashboard, which redraws the goal ring, hourly bars and event history, and the total clears at day's end.
- The smart cap is fitted to a standard reusable bottle, with the level sensor positioned above the water and the ESP32 board, OLED display and buzzer mounted in the cap housing.
- On power-up, the ESP32 reads the starting water level and sets the day's baseline, then advertises itself over Bluetooth Low Energy so the companion dashboard can connect.
- Between sips, the firmware samples the level sensor and waits for a stable, upright reading, ignoring readings taken while the bottle is tilted or in motion.
- When a stable level drop is confirmed, the drop is converted to millilitres using the bottle's calibrated cross-section, and the daily total and remaining goal are updated on the display.
- If no confirmed sip arrives within the reminder interval, the LED glows and the buzzer sounds briefly; one press of the cap button snoozes the reminder once.
- A level rise larger than a sip threshold is treated as a refill, resets the level baseline, and is logged separately so it never inflates the drunk total.
- Each confirmed sip, refill and reminder event is sent over Bluetooth Low Energy to the dashboard, which redraws the goal ring, the hourly bars and the event history.
- At midnight, or on a manual reset from the dashboard, the daily total clears and a new day starts with the current level as its baseline.
Comparison: smart bottle vs a regular bottle
| Feature | This smart bottle (ESP32) | A regular bottle | Manual phone tracking |
|---|---|---|---|
| Intake recorded | Automatically, from level changes | Not recorded | Only if the user logs each sip by hand |
| Reminders | LED + buzzer at a set interval | None | Phone notification, easy to dismiss |
| Daily goal progress | On-bottle display + dashboard goal ring | Time markers only, no actual intake | App total, only as accurate as the logs |
| Refill handling | Level rise logged as a refill, not drinking | No tracking | User must remember to log the refill |
| History | Hourly intake + reminder log | None | Log entries, if entered |
Tech stack:
- ESP32 microcontroller (Wi-Fi + Bluetooth Low Energy)
- Water-level sensor (non-contact level sensing in the cap)
- OLED display + LED + buzzer (on-bottle feedback)
- Arduino IDE firmware (C/C++)
- HTML/CSS/JavaScript companion dashboard (single-file demo)
- Bluetooth Low Energy (bottle-to-dashboard link)
| Parameter | Value |
|---|---|
| Bottle capacity | 750 ml (design target) |
| Daily goal (demo profile) | 2,500 ml per day (design target) |
| Sip resolution | Approximately 10 ml per step (design target) |
| Level sensing | Non-contact level sensor, cap-mounted (datasheet value: 3.3 V operation) |
| Controller | ESP32 dual-core microcontroller, 240 MHz (datasheet value) |
| Wireless link | Bluetooth Low Energy, approximately 10 m range indoors (expected) |
| Display | OLED display, approximately 0.96 inch diagonal (datasheet value) |
| Battery | Rechargeable lithium cell, 500 mAh capacity (design target) |
| Reminder interval | 60 minutes quiet interval, adjustable (design target) |
| Settling interval | 5 seconds upright rest before a reading is accepted (design target) |
| Charging | USB charging port on the smart cap (design target) |
| Dashboard | Single-file HTML/CSS/JavaScript demo, runs offline after download |
Project features
The bottle's capabilities centre on four things: measurement without manual logging, reminders that respect real use, feedback in two places, and totals that stay honest across refills. The level sensor and ESP32 turn each stable level drop into millilitres drunk, so the user never opens an app to log a sip. Reminders arrive as a gentle LED glow and a short buzzer after a quiet interval, but they pause while the bottle is tilted or moving. Feedback lives both on the bottle, where a small OLED display shows the level, the amount drunk and the amount remaining, and on the dashboard, where a goal ring, hourly bars and an event history make the day's pattern visible. Finally, refill handling keeps the record truthful: a level rise is logged as a refill and resets the baseline, never inflating the drunk total.
- [Automatic sip measurement] A level sensor under the smart cap measures the water level, and the ESP32 converts each stable drop into millilitres drunk, so intake is recorded without any manual logging.
- [Timed hydration reminders] A gentle LED glow plus a short buzzer prompt fires after a configurable quiet interval (design target: 60 minutes), and reminders pause while the bottle is tilted or moving.
- [On-bottle display] A small OLED screen shows the water level as a percentage, the millilitres drunk today, and the millilitres remaining toward the daily goal at a glance.
- [Companion dashboard] Intake by hour, the goal ring, and a reminder and sip history are shown on a single dashboard that syncs from the bottle over Bluetooth Low Energy.
- [Refill-aware totals] Refills are detected as a level rise and do not count as drinking, so the daily total only grows when water actually leaves the bottle.
- [Adjustable daily goal] The goal (design target: 2,500 ml per day for the demo profile) can be changed in the dashboard, and the reminder interval and display follow the new goal.
- [Rechargeable, cap-mounted build] The ESP32 board, sensor, display and a rechargeable lithium cell sit in a removable smart cap, so the bottle itself can still be washed separately.
- [Builder calibration note] During the build, raw level readings drifted while the bottle was carried, so the firmware only accepts a reading after the bottle has rested upright for a settling interval (design target: 5 seconds) — a fix that cut false sips in bench testing and is documented in the report as an original build note.
What is included
- ESP32 smart-cap hardware build: board, level sensor, OLED display, LED, buzzer and rechargeable cell in a removable cap
- Complete firmware source (Arduino IDE) with sip detection, refill handling, reminder logic and Bluetooth Low Energy sync
- Single-file companion dashboard demo with goal ring, hourly intake chart and reminder history
- Wiring diagram and cap-assembly guide with the settling-interval calibration note
- Project report PDF (background, sensing method, firmware logic, calibration, limitations)
- PPT presentation for final review
- Viva Q&A preparation document (ESP32, BLE, level sensing, calibration, power)
Limitations & prerequisites
- Level sensing assumes a bottle with a near-constant cross-section; a strongly tapered bottle needs recalibration, and the report explains how.
- Intake is inferred from level change, so shared sips, spills and pouring water out are counted as drinking — the build cannot tell who drank.
- Bluetooth Low Energy range is approximately 10 m indoors (expected), so the dashboard must be nearby to sync live; the bottle keeps its own total in the meantime.
- The sensor and electronics sit in the cap only; the cap must be removed before the bottle body is washed, and the cap itself is not waterproof.
- Battery life depends on reminder frequency and display use and is stated as a design target, not a measured figure, until the built unit is endurance-tested.
Frequently Asked Questions
How does the bottle know how much I drank?
The level sensor measures the water level before and after each sip, and the ESP32 converts the stable level drop into millilitres using the bottle's calibrated cross-section, accepting only readings taken after the bottle has rested upright for the settling interval. Walking with the bottle therefore does not log false sips, and a level rise is treated as a refill rather than drinking.
Does it need the phone nearby all day?
No, the bottle keeps its own daily total on the ESP32 and shows it on the OLED display, so it works standalone without a phone, and the companion dashboard only needs the phone nearby to sync the hourly chart and reminder history. The dashboard syncs over Bluetooth Low Energy when the phone is within approximately 10 m indoors (expected).
How do the reminders work?
After a configurable quiet interval (design target: 60 minutes) with no confirmed sip, the cap LED glows and the buzzer sounds briefly, and one press of the cap button snoozes the reminder once for that interval, and the prompt repeats only after a further quiet interval if still no sip is confirmed. Reminders also pause automatically while the bottle is tilted or moving, so carrying the bottle does not trigger nagging alerts.
What happens when I refill the bottle?
A refill shows up as a level rise, which the firmware logs separately and uses to reset the level baseline, so refills never add to the drunk total and the remaining goal stays honest across multiple refills in one day. The dashboard records the refill as its own event, distinct from a sip.
Can I change the daily goal?
Yes, the daily goal (design target: 2,500 ml per day for the demo profile) is adjustable at any time in the companion dashboard, and changing it updates the remaining-goal figure on the OLED display and the goal ring on the dashboard immediately. The recorded sip history for the day is kept unchanged when the goal changes.
Is this project suitable for a final-year project?
Yes, for Electronics, Electrical and IoT programs, because it combines embedded sensing, ESP32 firmware, Bluetooth Low Energy communication and a working dashboard in one demonstrable build that covers sensing, firmware, wireless communication and a user-facing dashboard, with a documented calibration problem and fix. That settling-interval fix gives the report and the viva genuine technical depth beyond a simple sensor display.
Components & software requirements
- ESP32 microcontroller (Wi-Fi + Bluetooth Low Energy)
- Water-level sensor (non-contact level sensing in the cap)
- OLED display + LED + buzzer (on-bottle feedback)
- Arduino IDE firmware (C/C++)
- HTML/CSS/JavaScript companion dashboard (single-file demo)
- Bluetooth Low Energy (bottle-to-dashboard link)
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and WhatsApp number — the synopsis PDF downloads immediately. We may send occasional project updates on WhatsApp; no spam.