Este código implementa un sistema de ordeño simulado en ESP32, donde la medición real de un sensor ultrasónico se escala para representar volúmenes de ordeño típicos. El dispositivo actúa como frontend académico: recibe la configuración de un bovino, mide la cantidad de leche producida (simulada a partir de una medición real) y expone los resultados mediante endpoints HTTP para ser consumidos por un frontend Angular y un backend académico.
- Configuración Remota: El ESP32 recibe parámetros del bovino (ID, grasa, proteína) vía POST.
- Medición Escalada:
Utiliza un sensor HC-SR04 para medir el nivel real de leche en un vaso, pero multiplica este valor por un factor (
SIMULATION_SCALE) para simular ordeños reales. - Exposición de Datos:
Los resultados se ponen disponibles en el endpoint
/pending-production. - Notificación de Errores: Ante 5 fallos consecutivos del sensor, notifica automáticamente al backend, pero solo una vez cada 10 minutos para evitar spam.
- Diagnóstico de Salud:
El endpoint
/healthofrece información de estado, señal WiFi y configuración. - Mensajes Claros al Usuario: El monitor serie muestra mensajes comprensibles y útiles para estudiantes y docentes.
| Endpoint | Método | Descripción |
|---|---|---|
/config-bovine |
POST | Recibe y almacena la configuración del bovino |
/pending-production |
GET | Entrega la producción pendiente (simulada/escalada) |
/clear-pending |
POST | Limpia el estado de producción pendiente y espera nueva |
/health |
GET | Retorna información del sistema y diagnóstico |
/error-esp32 (backend) |
POST | Reporte automático de errores críticos |
SIMULATION_SCALE: Multiplica el valor real del sensor para simular un ordeño real. Por defecto10.0f(1L real → 10L simulado). Puedes ajustar este valor según la demostración.THRESHOLD_TIME: Tiempo (en ms) que la lectura debe mantenerse estable para considerar terminado el ordeño. Por defecto1000(1 segundo).ERROR_INTERVAL: Intervalo mínimo entre reportes de error (en ms). Por defecto600000UL(10 minutos).
- Configuración:
El frontend Angular envía la configuración del bovino al ESP32 por
/config-bovine. - Medición: El ESP32 realiza mediciones cada segundo. Si detecta que la cantidad de litros simulada se mantiene estable por 1 segundo, considera el ordeño terminado.
- Exposición de Producción:
La medición queda disponible en
/pending-productionhasta que el frontend confirme el guardado (POST a/clear-pending). - Limpieza:
Al limpiar, el sistema muestra
"⏳ Listo, esperando nueva configuración..."en el monitor serie y queda listo para una nueva ronda. - Errores: Si el sensor falla 5 veces consecutivas, se notifica automáticamente al backend, evitando repeticiones excesivas.
- Conexión WiFi exitosa
- Recepción de configuración
- Inicio de mediciones
- Medición y estabilidad de ordeño
- Advertencias y errores claros
- Estados después de limpiar producción
Estos mensajes ayudan a estudiantes y docentes a seguir el flujo de la práctica y detectar problemas fácilmente.
- ESP32
- Sensor ultrasónico HC-SR04
- Conexión WiFi
- (Opcional: protoboard, vaso para la simulación, cables)
- Ajusta
SIMULATION_SCALEsegún el entorno y los volúmenes que deseas simular. - Usa el endpoint
/healthpara verificar la conectividad antes de cada práctica. - En caso de errores persistentes, revisa las conexiones físicas del sensor.
🚀 Iniciando sistema de ordeño ESP32 académico...
✅ WiFi conectado. Dirección IP: 192.168.1.30
🌐 Servidor HTTP iniciado y escuchando peticiones...
✅ Configuración recibida: ID=2, Grasa=3.4, Proteína=3.2
🟢 Sistema listo para medir producción...
📏 Medición: 11.0 cm (1.10 L real) → 11.00 L (simulado)
✅ Ordeño FINALIZADO: 11.00 L reportados. Espere confirmación en la UI...
⏳ Listo, esperando nueva configuración...
Este proyecto es parte del sistema HatoVerde:
- Frontend: hatoverde-client
- Backend: hatoverde-api
- IoT: hatoverde-esp32