Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Botella de agua inteligente con Arduino: Monitorización en tiempo real y alertas

Componentes y materiales

Componente Cantidad
Arduino Pro Mini 328 5V/16MHz (SparkFun) 1
Sensor ultrasónico resistente al agua 1
Reloj en tiempo real (RTC) 1
Display 7 segmentos 4 dígitos cátodo común (SparkFun) 1
Zumbador 1
Pulsador 12mm (SparkFun) 1
Transistor NPN uso general 1
Batería Li-Ion 1000 mAh 1
Cargador USB Li-Ion (Adafruit) 1
Resistencia 221 Ω 8
Resistencia 1 kΩ 4
Resistencia 4.75 kΩ 2

Herramientas necesarias

Aplicaciones y servicios en línea

Sobre el proyecto

Introducción

Beber suficiente agua es vital para la salud: piel más clara, mejor salud general, mayor productividad y función cerebral, más energía, incluso pérdida de peso. En nuestra vida ajetreada cuesta recordar beber agua; ~75% de estadounidenses están crónicamente deshidratados. Para crear un hábito saludable, hay que registrar la ingesta diaria. Hice mi botella inteligente con Arduino para:

  1. Registrar ingesta diaria.
  2. Promedio semanal.
  3. Recordar beber.
  4. Registrar última vez que bebí.
  5. Autonomía > 1 mes con una carga.

Fabricar módulo RTC

Para registrar ingesta con fecha/hora se necesita un RTC. El DS1307 con pila de respaldo es ideal. Programación sencilla, soportado en la mayoría de entornos.

Diseño compacto basado en DS1307: reloj/calendario BCD completo + 56 bytes NV SRAM. Bus I2C bidireccional. Formato 12/24h con segundos, minutos, horas, día, fecha, mes, año (incluye año bisiesto).

Construye el módulo según esquemático: DS1307 requiere cristal externo. Dos pull-ups en SCL/SDA (2k–10k, usé 4.7k). Soldé lo más compacto posible por espacio. Alternativa: DS3231 (cristal interno). O compra módulo RTC listo. Al ser todo a batería, conecté VBAT a GND sin pila moneda.

Pines clave DS1307: 5V (alto = envía datos, bajo = pila respaldo), GND, SCL (I2C clock → Arduino SCL), SDA (I2C data → Arduino SDA), VBAT (entrada pila 3V, a GND si no se usa).

Fabricar placa display 7 segmentos

Módulo compacto auto-contenido: 4 displays 7 segmentos cátodo común. Multiplexado: segmentos comparten ánodos; cada dígito tiene su cátodo común → control independiente. Reduce pines de 32 a 11-12.

Segmentos necesitan resistencias limitadoras (330–470 Ω a 5V; 220 Ω con Li-Ion). Transistores driver (2N2222) recomendados: pines MCU dan ~40 mA; al encender 7 segmentos (dígito 8) se supera. Esquema: 4 transistores 2N2222, resistencias 1K base, 220R segmentos. Arduino: D10–D17 → segmentos (a–g, dp); D6–D9 → dígitos (D0–D3). Pulsador en D2 (INT0) para opciones y wake-up por interrupción hardware.

Conectar display con Arduino Pro Mini

Suelda pines segmentos a Arduino Mini según esquemático. 4 cátodos comunes → colectores de transistores. Bases → pines Arduino. Pulsador → D2 (INT0). ¡Importante: D2 para wake-up por interrupción externa!

Conectar módulo RTC y zumbador

RTC: SDA → A4, SCL → A5. Zumbador → D3.

Fijar sensor ultrasónico en tapón

Haz agujero en tapón. Pasa 4 hilos del sensor y fíjalo en centro, cara interior.

Conexiones: VCC→VCC, GND→GND, Trigger→D4, Echo→D5.

Subir programa y testear

Librerías necesarias: OneButton (pulsador), LowPower (sleep), DS1307RTC (RTC). Implementé sleep mode: watchdog timer + interrupción externa (pulsador) para wake-up. Arduino toma 3 lecturas, promedia, calcula, muestra 10 s y duerme 1 min. Despierta al pulsar botón (INT0). Sin pulsación, lectura cada 1 min.

Algoritmo de cálculo (resumen): media de 5 lecturas para precisión. Reinicio diario a las 24h. Promedio semanal = media de 7 días previos. Si pasan 2h sin beber → doble pitido cada 15 min; cesa 2h tras beber.

Fijar Arduino al tapón

Pega Arduino Pro Mini en cara superior del tapón con silicona caliente. Todo debe caber dentro del tapón.

Montar batería y cargador

Batería Li-Ion sobre Arduino (evita cortocircuitos con pines al aire). Conecta módulo cargador; deja puerto USB accesible desde fuera.

Impermeabilizar toda la electrónica

¡Crítico! Es una botella de agua. Cubre toda la electrónica exterior con silicona (menos puerto USB). Da forma redondeada al tapón original.

No sumerjas el tapón en agua.

¡Disfrútalo!

Código

Sketch Arduino

#include <Time.h> #include <TimeLib.h> #include <Wire.h> #include <DS1307RTC.h> #include "LowPower.h" #include "OneButton.h"

OneButton button(2, true);
const byte interruptPin = 2;
volatile int state = 0;

const int trigPin = 4;
const int echoPin = 5;
int piezoPin = 3;

const int digit[4] = {9,6,7,8};
int digit_value[4], digit_value1[4];
int button_press_count = 1;

const int segment[8] = {16,10,12,14,15,17,11,13};
const byte number[10][8] = {
  {1,1,1,1,1,1,0,0}, //0
  {0,1,1,0,0,0,0,0}, //1
  {1,1,0,1,1,0,1,0}, //2
  {1,1,1,1,0,0,1,0}, //3
  {0,1,1,0,0,1,1,0}, //4
  {1,0,1,1,0,1,1,0}, //5
  {1,0,1,1,1,1,1,0}, //6
  {1,1,1,0,0,0,0,0}, //7
  {1,1,1,1,1,1,1,0}, //8
  {1,1,1,1,0,1,1,0}  //9
};
const byte d[8] = {0,1,1,1,1,0,1,1};
const byte a[8] = {1,1,1,0,1,1,1,1};
const byte r[8] = {0,0,0,0,1,0,1,1};
const byte t[8] = {0,0,0,1,1,1,1,1};

int seconds, minutes, hours;
int water_in_ounch[15], water_intake_ounch[15], water_intake_days[7];
int water_intake_times = 0, previous_water_amount = 0, total_water_intake_today = 0;
int average_intake_last_week = 0, inatke_day = 1;
float average_water_level = 0, water_amount_in_ounce = 0;
int idle_time = 0, intake_day = 1, previous_value = 0;

void setup() {
  Serial.begin(9600);
  pinMode(interruptPin, INPUT_PULLUP);
  for(int i=6; i<=17; i++) pinMode(i, OUTPUT);
  pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
  button.attachClick(pressed);
  button.attachDoubleClick(doubleclick);
  button.attachLongPressStart(longPressStart);
  button.attachDuringLongPress(longPress);
}

long previous_state = millis();
int count = 1, daily_intake = 0, weekly_intake = 0;
long sleep_time = millis();

void loop() {
  read_time(); button.tick(); calculation();
  daily_intake = total_water_intake_in_day();
  weekly_intake = average_water_intake_last_week();

  if(button_press_count == 1) { display_d(); display_number(daily_intake); }
  else if(button_press_count == 2) { display_a(); display_number(weekly_intake); }
  else if(button_press_count == 3) { display_r(); display_number(water_amount_in_ounce); }
  else if(button_press_count == 4) { display_first_2(hours); display_last_2(minutes); }

  if(idle_time >= 120) { alert(); alert(); }

  if((millis() - sleep_time) >= 15000) {
    display_off();
    attachInterrupt(digitalPinToInterrupt(interruptPin), blank, FALLING);
    for(int i=0;i<6;i++) LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
    detachInterrupt(digitalPinToInterrupt(interruptPin));
    sleep_time = millis();
  }
}

// Funciones de display, cálculo, sensor ultrasónico, alertas, botones... (ver código original completo)

Esquemáticos

Esquemas del circuito RTC, display, conexiones principales (imágenes referenciadas).

Proceso de manufactura

  1. Cómo Funcionan los Aspersores de Césped: Diseño, Historia y Fabricación Moderna
  2. Tecnología del lavavajillas: historia, diseño e innovaciones futuras
  3. La Evolución de las Pistolas de Agua de Acción de Bombeo: De la Invención al Liderazgo Global
  4. La Evolución, Materiales y Fabricación de los Inodoros Modernos
  5. Hidrantes contra Incendios: Diseño, Fabricación y Papel en la Seguridad Urbana
  6. Evolución y Ciencia detrás de las Botellas Térmicas Modernas
  7. Agua: Historia, Tipos y Procesos Modernos de Tratamiento
  8. La ciencia detrás del champú: ingredientes, fabricación y tendencias futuras
  9. Dinamita: historia, usos y seguridad en demolición y minería
  10. Circuitos integrados (CI): chips compactos y potentes que impulsan la electrónica moderna
  11. Kit MOSMusic: Control de Iluminación de Alta Potencia Sincronizada con Música vía MOSFET y Arduino