Smarte Arduino-Trinkflasche: Echtzeit-Überwachung & Trinkerinnerung
Komponenten und Zubehör
| Bauteil | Menge |
|---|---|
| SparkFun Arduino Pro Mini 328 (5 V / 16 MHz) | 1 |
| Wasserdichter Ultraschallsensor (z. B. JSN-SR04T) | 1 |
| RTC-Modul (DS1307 oder DS3231) | 1 |
| 4-stelliges 7-Segment-Display (Common Cathode, z. B. SparkFun) | 1 |
| Summer (Piezo-Buzzer) | 1 |
| Taster 12 mm | 1 |
| NPN-Transistor (z. B. 2N2222) | 4 |
| Li-Ion Akku 1000 mAh (3,7 V) | 1 |
| USB Li-Ion Lademodul (z. B. TP4056) | 1 |
| Widerstände: 221 Ω (×8), 1 kΩ (×4), 4,75 kΩ (×2) | je |
Werkzeuge
- Lötkolben, Heißklebepistole.
Projektidee
Ausreichend Trinken ist essenziell: bessere Haut, Gesundheit, Konzentration, Energie, Gewichtsmanagement. Doch 75 % der Menschen trinken zu wenig. Diese Flasche trackt tägliche/wochentliche Menge, erinnert per Summer, zeigt letzte Trinkzeit – und hält > 1 Monat mit einer Ladung.
Hardware-Aufbau
1. RTC-Modul (Eigenbau oder Fertigmodul)
DS1307 per I²C (A4=SDA, A5=SCL). Quarz 32,768 kHz, 2× 4,7 kΩ Pull-ups an SDA/SCL. VBAT an GND (keine Pufferbatterie nötig, da Hauptakku vorhanden). Fertigmodul (DS3231) spart Platz & Bauteile.
2. 7-Segment-Display-Platine
4-stellig, Common Cathode, multiplexiert. Anoden (Segmente a–g, dp) → Arduino D10–D17 mit 220 Ω Vorwiderständen. Kathoden (Digits D0–D3) → 4× 2N2222 (Basis an D6–D9, 1 kΩ Basiswiderstand, Kollektor an Digit, Emitter an GND). Taster an D2 (INT0) zum Aufwecken & Menüwahl.
3. Anschluss an Arduino Pro Mini
- Display: Segmente D10–D17, Digits D6–D9, Taster D2.
- RTC: SDA→A4, SCL→A5.
- Buzzer: D3.
- Ultraschall: VCC/GND an 5 V/GND, Trigger→D4, Echo→D5.
4. Ultraschallsensor in Flaschendeckel
Loch in Deckel bohren, Sensor zentriert von innen einbauen (Kabel nach außen). Misst Wasserstand von oben (Deckel) bis Wasseroberfläche. Flaschenhöhe ca. 17 cm.
5. Stromversorgung & Wasserdichtigkeit
Li-Ion-Akku (1000 mAh) auf Arduino kleben, Lademodul USB-Buchse nach außen geführt. Alles mit Heißkleber großzügig abdichten (außer USB-Port). Nicht untertauchen! Spritzwassergeschützt.
Software-Architektur
Bibliotheken
Time.h,TimeLib.h,Wire.h,DS1307RTC.hLowPower.h(Sleep-Modes)OneButton.h(Taster-Events: Click, Double-Click, Long-Press)
Betriebslogik
- Sleep-Zyklus: Alle 60 s aufwachen (Watchdog 8 s × 7,5), 5 Ultraschall-Messungen mitteln, Berechnung, 10 s anzeigen, wieder schlafen.
- Taster (INT0): Weckt sofort auf. Kurzer Druck: Menü weiter (Täglich → Wöchentlich → Aktuell → Uhrzeit). Double-Click / Long-Press: reserviert.
- Berechnung: Mittelwert aus 5 Messungen (Ausreißer < 3 cm oder > 16 cm verwerfen). Wasserhöhe = 17 cm – Mittelwert. Unzen = Höhe × 1,87 (kalibriert: 16 cm = 30 oz).
- Trinkerfassung: Wenn Füllstand um > 1 oz gesunken seit letzter Messung → Trinkereignis speichern (Menge, Uhrzeit). Idle-Counter zurücksetzen.
- Nachfüllung: Füllstand steigt → neuer Basiswert, keine Trinkereignis.
- Tageswechsel (23:59): Tages-Summe in Wochenspeicher (7 Tage), Zähler zurücksetzen.
- Wochenmittel: Durchschnitt der vergangenen Tage (bis 7).
- Erinnerung: 2 h (120 Zyklen) kein Trinken → 2× Piepen alle 15 min, bis wieder getrunken wird.
Code-Struktur (Auszug)
// Hauptvariablen
int water_intake_ounch[15]; // Einzeltrinkmengen heute
int water_intake_days[7]; // Tages-Summen letzte 7 Tage
int intake_day = 1; // 1..7
int idle_time = 0; // Zyklen seit letztem Trinken
void loop() {
read_time(); button.tick(); calculation();
int daily = total_water_intake_in_day();
int weekly = average_water_intake_last_week();
// Menü-Anzeige per button_press_count (1..4)
if (idle_time >= 120) { alert(); alert(); }
if (millis() - sleep_time >= 15000) { display_off(); attachInterrupt(...); LowPower.powerDown(SLEEP_8S... ×7); detachInterrupt(...); sleep_time = millis(); }
}
void calculation() {
float sum = 0; int valid = 0;
for (int i=0; i<5; i++) {
int d = distance_in_cm();
if (d < 3 || d > 16) return; // instabil
sum += d; valid++;
delay(10);
}
if (valid == 5) {
float avg_level = 17 - sum/5; // Wasserhöhe in cm
water_amount_in_ounce = int(avg_level * 1.87);
// Trinklogik ...
}
}
Ergebnis & Praxistest
Display zeigt auf Tastendruck: „d“ + Tagesmenge (oz), „a“ + Wochenmittel, „r“ + aktueller Füllstand, „t“ + Uhrzeit. Nach 15 s ohne Taste → Display aus, Deep-Sleep. Akku hält ca. 5–6 Wochen (Sleep-Strom ~10 µA + periodisches Aufwachen). Ultraschall misst zuverlässig durch Kunststoffdeckel. Erinnerung funktioniert gut – piept dezent aber hörbar.
Verbesserungspotenzial
- BLE-Übertragung ans Smartphone (App für Langzeit-Statistik).
- Temperaturkompensation für Ultraschall (Luftschallgeschwindigkeit).
- Kapazitiver Füllstandssensor (kein Loch im Deckel nötig).
- Gehäuse-Design für 3D-Druck (bessere Dichtung).
Fazit
Ein praktisches, alltagstaugliches Gadget, das Trinkverhalten sichtbar macht und per Erinnerung unterstützt. Der Bau erfordert Sorgfalt beim Wasserdichtmachen, belohnt aber mit monatelanger Laufzeit und nützlichen Daten.
Herstellungsprozess
- Funktionsweise von Rasensprengern: Design, Geschichte und moderne Fertigung
- Geschirrspüler-Technologie: Geschichte, Design und zukünftige Innovationen
- Die Evolution von Pump-Action-Wasserpistolen: Von der Erfindung zum globalen Marktführer
- Die Evolution, Materialien und Fertigung moderner Toiletten
- Feuerhydranten: Design, Fertigung und Rolle in der städtischen Brandsicherheit
- Die Entwicklung und Wissenschaft hinter modernen Isolierflaschen
- Wasser: Geschichte, Arten und moderne Aufbereitungsverfahren
- Die Wissenschaft hinter Shampoo: Inhaltsstoffe, Herstellung und zukünftige Trends
- Trockenbauplatten (Rigips): Geschichte, Materialien und moderne Fertigung
- MOSMusic: Musik-synchronisierte Lichtsteuerung mit CoolMOS MOSFET & Arduino