ESP32 NodeMCU
Unidad de Control y Enlace IoT
Microcontrolador Xtensa LX6 dual-core a 240 MHz con Wi-Fi 802.11 b/g/n, Bluetooth LE y periféricos I2C, ADC y PWM.
Bus I2C, ADC1, PWM, GPIOs E/SSistema integral IoT de monitorización de la calidad del agua, dosificación y alimentación automática.
Estación autónoma para acuarios y piscinas basada en el microcontrolador ESP32: sensórica multiparamétrica del agua (temperatura, pH, turbidez, TDS y nivel), dosificación con bombas peristálticas, alimentador con servo, interfaz local OLED y ecosistema unificado Dashboard Web, App Móvil y App de Escritorio.
Mantener un acuario o una piscina sana exige vigilar a diario parámetros del agua que cambian lentamente y que casi nadie mide de forma continua. Un pH fuera de rango, una temperatura inestable, el exceso de sólidos disueltos o un nivel de agua bajo estresan a los peces o degradan la calidad del agua antes de que sea visible a simple vista. Los controladores comerciales cubren esa necesidad, pero suelen ser caros, cerrados y poco adaptables.
Monitorización continua de temperatura, pH, turbidez y TDS para detectar derivas a tiempo y registrar un histórico que permita analizar tendencias.
Corrección automática con bombas peristálticas calibradas, con histéresis y un límite diario de dosis para evitar sobredosificaciones.
Raciones exactas con servo y reloj RTC, que siguen funcionando aunque falle la conexión a internet. Ideal para ausencias y vacaciones.
Flotador de nivel mínimo que bloquea las bombas, alarma acústica y avisos push ante valores fuera de rango.
Diseñar, construir y validar un nodo IoT multipropósito basado en el ESP32 que integre sensórica del agua, actuación de precisión (dosificación y alimentación), interfaz local (OLED y pulsadores) y comunicación en tiempo real con una terna de aplicaciones: Dashboard Web, App Móvil y App de Escritorio.
Diagrama operacional del firmware sobre el kernel FreeRTOS. La carga se reparte entre los dos núcleos: las tareas de red nunca bloquean el control de las bombas ni el alimentador.
Arquitectura de tareas y flujo de datos
Cada componente se ha seleccionado por su disponibilidad, la estabilidad de sus librerías en ESP32 y su relación coste-prestaciones.
Unidad de Control y Enlace IoT
Microcontrolador Xtensa LX6 dual-core a 240 MHz con Wi-Fi 802.11 b/g/n, Bluetooth LE y periféricos I2C, ADC y PWM.
Bus I2C, ADC1, PWM, GPIOs E/SVisualizador local in situ
Matriz de 128×64 píxeles con controlador SSD1306 vía I2C. Muestra IP, temperatura, pH, TDS y próxima comida.
SDA: GPIO 21 | SCL: GPIO 22Sonda sumergible estanca
Sonda digital 1-Wire en acero inoxidable (IP68). Mide la temperatura del agua con ±0.5 °C, clave para peces y para compensar pH y TDS.
DQ: GPIO 4 (pull-up 4.7k)Acidez del agua
Sonda de pH con módulo acondicionador (tipo PH-4502C). Rango 0–14, calibrable en dos puntos con soluciones tampón 4.00 y 7.00.
AO: GPIO 34 (ADC1_CH6)Claridad del agua
Emisor y receptor infrarrojo que miden la transparencia del agua. Detecta restos de comida, algas o filtro saturado.
AO: GPIO 35 (ADC1_CH7)Sólidos disueltos totales
Mide la conductividad del agua y la convierte en ppm. Permite decidir cuándo hacer un cambio parcial de agua.
AO: GPIO 32 (ADC1_CH4)Interruptor de flotador
Detecta el nivel mínimo de agua. Si baja, bloquea las bombas y el calentador y lanza una alarma.
SIG: GPIO 16 (pull-up interno)Horario fiable sin red
Reloj de tiempo real con pila. Mantiene el horario de comidas y dosificaciones aunque se pierda el Wi-Fi.
I2C compartido (0x68)Dosificación de precisión
Bombas de 12 V accionadas por MOSFET con PWM. Una dosifica acondicionador y otra corrector de pH, con caudal calibrado.
PWM: GPIO 25 | GPIO 26Alimentador automático
Servo que gira el dosificador de comida un ángulo fijo para soltar una ración exacta a la hora programada.
PWM: GPIO 18Diagrama de bloques con alimentación dual (12 V para bombas y 5 V / 3.3 V para lógica), buses compartidos y las entradas analógicas agrupadas en ADC1, que no se ve afectado por el uso del Wi-Fi.
Esquema de conexionado de bloques · AquaGuard-32
| Dispositivo | Pin ESP32 | Función / modo | Nivel lógico | Propósito en el sistema |
|---|---|---|---|---|
| OLED + RTC DS3231 | GPIO 21 (SDA) GPIO 22 (SCL) | Bus I2C hardware (Master) | 3.3V | Pantalla SSD1306 (0x3C) y reloj DS3231 (0x68) para programar comidas aunque falle la red. |
| DS18B20 inox | GPIO 04 | Dallas OneWire | 3.3V | Temperatura del agua con pull-up de 4.7 kΩ a 3.3V. |
| Sensor de pH | GPIO 34 (ADC1_CH6) | Entrada analógica pura | 0 a 3.3V | Lectura de acidez en ADC1 (sin interferencia con el módem Wi-Fi). Tensión adaptada con divisor. |
| Sensor de turbidez | GPIO 35 (ADC1_CH7) | Entrada analógica pura | 0 a 3.3V | Medida de la transparencia del agua. Salida adaptada a 3.3V. |
| Sensor TDS | GPIO 32 (ADC1_CH4) | Entrada analógica pura | 0 a 3.3V | Conductividad convertida a ppm con compensación por temperatura. |
| Flotador de nivel | GPIO 16 | Entrada con pull-up | 3.3V | Nivel mínimo de agua. Si se activa, bloquea las bombas y dispara la alarma. |
| Bombas peristálticas (2) | GPIO 25 (Bomba A) GPIO 26 (Bomba B) | Salidas digitales PWM | 3.3V → 12V | Dosificación de acondicionador y corrector de pH mediante MOSFET. |
| Servo MG90S | GPIO 18 | Salida PWM 50 Hz | 3.3V / 5V | Giro del dosificador para soltar una ración de comida. |
| Pulsadores HMI (3) | GPIO 13, 14, 27 | Entradas con pull-up | 3.3V | SW1: menú OLED | SW2: alimentar ahora | SW3: rearmar alarma / modo AP Wi-Fi. |
| LEDs de estado (3) | GPIO 17, 33, 23 | Salidas digitales | 3.3V | Verde: heartbeat / OK | Azul: dosificando o alimentando | Rojo: alarma. |
| Buzzer | GPIO 05 | Salida digital | 3.3V / 5V | Aviso acústico ante una alarma confirmada. |
Panel central de mando con widgets y gráficas reactivas de los últimos datos. Pulsa los parámetros para mostrar u ocultar cada curva.
Aplicación móvil para alertas push y control en directo desde cualquier lugar. Prueba los botones.
Estación técnica para configurar el sistema y calibrar los sensores.
Pensada para el responsable técnico del acuario o la piscina. Permite calibrar la sonda de pH con soluciones tampón (4.00 y 7.00), ajustar la dosis de cada bomba, programar las comidas, consultar el histórico completo e imprimir informes de calidad del agua.
// Calibración de pH en dos puntos (valores de ejemplo) #define ADC_PH7 2150 // lectura con tampón pH 7.00 #define ADC_PH4 2700 // lectura con tampón pH 4.00 float m = (4.00 - 7.00) / (float)(ADC_PH4 - ADC_PH7); float ph = 7.00 + m * (analogRead(34) - ADC_PH7);
Plan de desarrollo dividido en 5 etapas durante un período de 12 semanas (S1 a S12):
Desglose económico del prototipo con costes de componentes comerciales estándar (precios orientativos):
| Ítem | Descripción / referencia comercial | Cant. | Coste unit. | Subtotal |
|---|---|---|---|---|
| 1 | Placa de desarrollo ESP32-WROOM-32 (NodeMCU 38 pines) | 1 | 6.50 € | 6.50 € |
| 2 | Display gráfico OLED 0.96" I2C SSD1306 (128×64 px) | 1 | 3.80 € | 3.80 € |
| 3 | Sonda de temperatura sumergible DS18B20 acero inox. (1 m) | 1 | 3.50 € | 3.50 € |
| 4 | Sensor de pH con sonda y módulo acondicionador (PH-4502C) | 1 | 14.00 € | 14.00 € |
| 5 | Sensor de turbidez analógico con módulo | 1 | 6.00 € | 6.00 € |
| 6 | Sensor TDS analógico con sonda | 1 | 8.00 € | 8.00 € |
| 7 | Sensor de nivel de agua tipo flotador | 1 | 2.00 € | 2.00 € |
| 8 | Módulo RTC DS3231 con pila | 1 | 2.50 € | 2.50 € |
| 9 | Bomba peristáltica 12 V (dosificación) | 2 | 7.00 € | 14.00 € |
| 10 | Servo MG90S y dosificador de comida (impreso 3D) | 1 | 3.00 € | 3.00 € |
| 11 | Módulos MOSFET con diodo de protección (2 canales) | 1 | 2.50 € | 2.50 € |
| 12 | Kit interfaz: 3x pulsadores, 3x LEDs 5 mm y buzzer activo | 1 | 2.50 € | 2.50 € |
| 13 | Fuente conmutada 12 V 2 A + módulo buck LM2596 (5 V) | 1 | 8.50 € | 8.50 € |
| 14 | Caja estanca de derivación IP65 con prensaestopas | 1 | 7.50 € | 7.50 € |
| 15 | Tornillería, cables siliconados, resistencias y clemas | 1 | 4.00 € | 4.00 € |
| Coste total estimado de hardware 88.30 € | ||||
El presente anteproyecto proporciona la base técnica, esquemática y de software para el despliegue del sistema AquaGuard-32 en acuarios y piscinas.