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

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Componentes y Suministros

Componente Cantidad
Arduino MKR1000 (MKR FOX 1200) 1
Sensor de Nivel de Agua 1
Sensor de pH 1
LED (genérico, preferible blanco) 1
Resistencia 220 ohm 2
Fotorresistencia (LDR) 1
Cables jumper 1 set

Herramientas Necesarias

Aplicaciones y Servicios Online

Sobre el Proyecto

Resumen

Un río o lago puede ser fuente de diversión y relax. Pero si se contamina, todo se pierde. Muchos dependen del agua de río para su ganado y no pueden permitirse darles agua sucia.

Imagina vivir junto a un río: no querrás despertar con tu casa inundada. O que tu vecino vierta gasolina en el río, enfermando a tus animales.

MyRiver resuelve esto: opera en zonas aisladas gracias a Sigfox, accesible para todos. Mide pH, nivel de contaminación (método innovador) y nivel de agua. Monitoriza en directo en móvil/PC vía Wia. Detecta problemas y avisa inmediatamente.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Funcionamiento

Basado en Arduino MKR FOX, diseñado para uso remoto. Se coloca en río/lago y se monitoriza desde cualquier sitio. Gracias al modo bajo consumo del SAM D, funciona largo tiempo con 2 pilas AA.

Toma lecturas cada 30 min y duerme (mínimo 20 min sueño). El MKR FOX lee:

Datos se envían a Sigfox → Wia → procesamiento → visualización y notificaciones al usuario.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

El buffer (12 bytes máx. por Sigfox) codifica los 3 valores (cada sensor max 1024 = 10 bits). Cada sensor usa 4 bytes (1/3 del buffer). Arduino fusiona valores añadiendo ceros a la izquierda hasta 4 dígitos cada uno.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Ejemplo: fotorresistencia 620 → 0620; nivel agua 24 → 0024. Se fusionan en buffer de 12 bytes y se envía a Sigfox.

Estructura del Código

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Fragmentos Clave del Código

Lectura de Sensores
struct GetValue {
  int riverLevel() { // Nivel río
    const int val = analogRead(A2);
    if(proDebug) { Serial.print(" River Level "); Serial.println(val); }
    return val;
  }
  int riverPh() { // pH río
    const int val = (analogRead(A1) / 5 * 3.3);
    if(proDebug) { Serial.print(" River Ph "); Serial.println(val); }
    return val;
  }
  int riverPol() { // Contaminación
    const int val = analogRead(A3);
    if(proDebug) { Serial.print(" River Pollution "); Serial.println(val); }
    return val;
  }
};
Formateo Buffer
String data(int level, int ph, int pol) {
  int values[3] = {level, ph, pol};
  String newValues;
  for(int i = 0; i < 3; i++) {
    if(values[i] < 10) { newValues += "000"; }
    else if(values[i] < 100) { newValues += "00"; }
    else if(values[i] < 1000) { newValues += "0"; }
    newValues += values[i];
  }
  return newValues;
}
Envío a Sigfox
void parseData(String data) {
  SigFox.beginPacket();
  SigFox.print(data);
  int ret = SigFox.endPacket();
}

El Dispositivo en Acción

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Beneficios

Construcción del Proyecto

Paso 1: Materiales

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Paso 2: Conexión del Circuito

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Los componentes no van en protoboard; si hay dudas, descargar archivo Fritzing y mover cables virtualmente.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino
Preparar MKR FOX

Conectar caja de baterías y antena (baterías tras conectar sensores). Ver imágenes de secuencia.

Paso 3: Entender el Código

Tres partes principales explicadas arriba: Read Sensors, Format Buffer, Parse Data.

Paso 4: Configurar Integración Wia-Sigfox

Wia es plataforma IoT profesional: visualiza datos con widgets (web/móvil), crea flujos de procesamiento (block code), notifica eventos.

Requisitos: cuenta Sigfox, cuenta Wia, app Wia (iOS/Android) para notificaciones.

Configurar webhook en Sigfox hacia Wia:

Paso 5: Configurar Flujo (Flow) en Wia

El flujo convierte HEX → String, parsea 3 valores, convierte a enteros, traduce contaminación y nivel a "HIGH/OK" y pH a valor real, notifica si fuera de rango.

Guía paso a paso con capturas (ver imágenes en contenido original). Funciones Wia clave:

processPayload (HEX a String)
if(input.body) {
  output.body.name = "value";
  output.body.data = toByteArrayStr(input.body.data.sigfoxData);
}
function toByteArrayStr(sigfoxData) {
  let result = Buffer(sigfoxData, 'hex');
  return result.toString('utf8');
}
riverPollution (fotorresistencia → POLLUTED/OK)
let minVal = 200; let maxVal = 0;
if(input.body.data.sigfoxData) {
  let data = input.body.data.sigfoxData;
  let processedData = toByteArrayStr(data);
  let newData = cutString(processedData);
  output.body.name = "waterPollution";
  output.body.data = processData(newData);
}
function cutString(data) {
  let newVal = data[8]+data[9]+data[10]+data[11];
  return parseInt(newVal);
}
function processData(data) {
  return (data < minVal) ? "POLLUTED" : "OK";
}
riverPh (valor raw → pH real)
let minVal = 300; let maxVal = 600;
if(input.body.data.sigfoxData) {
  let data = input.body.data.sigfoxData;
  let processedData = toByteArrayStr(data);
  let newData = cutString(processedData); // bytes 4-7
  let finalVal = (newData / 73.1428571);
  output.body.name = "waterPh";
  output.body.data = finalVal.toFixed(2);
}
riverLevel (nivel → HIGH/OK)
let minVal = 0; let maxVal = 200;
if(input.body.data.sigfoxData) {
  let data = input.body.data.sigfoxData;
  let processedData = toByteArrayStr(data);
  let newData = cutString(processedData); // bytes 0-3
  output.body.name = "waterLevel";
  output.body.data = processData(newData);
}
function processData(data) {
  return (data > maxVal) ? "HIGH" : "OK";
}
Alertas Email (plantillas)
Configuración de Variables

Límites pH y nivel predefinidos; límite fotorresistencia debe calibrarse:

void setup() {
  pinMode(1, OUTPUT);
  Serial.begin(9600);
  while(!Serial) {};
  digitalWrite(1, HIGH);
}
void loop() {
  const int val = analogRead(A3);
  Serial.println(val);
  delay(5000);
}

Sumergir sonda en agua limpia, anotar valor estable → ese es tu minVal para riverPollution.

Variable proDebug (default false): si true, imprime en Serial Monitor (requiere USB/PC), ideal para depuración.

Librerías

Paso Final: Caja y Despliegue

Subir sketch, conectar caja baterías, verificar circuito. Caja ecológica: botella de agua reciclada.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Secuencia construcción caja (ver imágenes).

Despliegue en río: Ir en pleamar (imprescindible para no confundir marea con inundación). Cinta en boca botella para estanqueidad. Fijar a orilla con cinta o tornillos. Sonda: agua en parte inferior sensor nivel, cubriendo totalmente fotorresistencia.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Probado en río contaminado local: todas las alarmas funcionaron correctamente.

Contexto

Mirar por la ventana y ver un río verde y viscoso en vez de limpio... o que inunde tu casa de noche. MyRiver nace para resolver todo en un dispositivo: avisa si el río se contamina (vecino vertiendo aceite) o va a inundar. En granjas: avisa antes de dar agua a animales y da tiempo a meterlos a salvo.

Solo pH no basta: sustancias insolubles (mercurio, metales) no alteran pH. Método único: fotorresistencia mide luz LED atravesando agua; cualquier impureza reduce luz detectada.

Monitor de Salud Fluvial: Sistema de Calidad de Agua con Arduino

Proceso de manufactura

  1. Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
  2. Sensor de Emociones y EEG: Hardware de Bajo Coste para Detección de Emociones en Tiempo Real
  3. Dispositivo de Medición de Presión y Flujo de Aire de Precisión con Sensor Analógico
  4. Proyecto Sensor DHT11 Temperatura y Humedad con Indicadores LED y Altavoz Piezo
  5. UnifiedWater v1 – Kit completo de sensor de calidad de agua con Arduino
  6. Reloj 3D RGB Arduclock – Bluetooth, LED NeoPixel y RTC
  7. Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
  8. Juego interactivo con joystick analógico y LEDs en Arduino
  9. Find Me: Localizador Inteligente de Objetos con Arduino y Bluetooth
  10. Pequeño Rover con Arduino: Construye tu Robot Autónomo Evita Obstáculos
  11. Entendiendo el sensor de oxígeno (O2): función, ubicación y señales de fallo