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

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Componentes y materiales

Herramientas necesarias

Software y servicios online

Sobre el proyecto

El agua es un recurso esencial. Debemos asegurar su calidad para el consumo.

¿Qué es TDS?

TDS = Total Dissolved Solids (Sólidos Totales Disueltos). Indica la cantidad de sólidos disueltos en agua, en ppm (partes por millón). Se calcula a partir de la conductividad eléctrica [S/m]: mayor conductividad → mayor TDS.

La OMS recomienda TDS < 300 ppm para agua potable. Por debajo de 100 ppm carece de minerales esenciales; por encima de 300 se considera «dura» (exceso de minerales).

Normalmente se usa un medidor TDS de bolígrafo, pero no se integra con Arduino. Existen medidores TDS compatibles, pero he optado por hacerlo sin medidor dedicado.

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

El circuito

Arduino

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Pantalla LCD

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Módulo Bluetooth HC-05

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

LED RGB

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Deducción para calcular resistencia entre cables libres

Usamos la ley de Ohm: V = I·R.

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

La resistencia del cable al pin A0 es despreciable → corriente mínima → R₁ (1 kΩ) y R₂ (agua) en serie.

V₁ = I·R₁, V₂ = I·R₂ → V₂/V₁ = R₂/R₁.

En serie: V₁ + V₂ = 5 V → V₂ = 5 - V₁.

Sustituyendo: (5 - V₁)/V₁ = R₂/R₁. Definimos buffer = (5 - V₁)/V₁ → R₂ = buffer * R₁.

Funcionamiento

Calculamos resistencia del agua, luego resistividad, conductividad y finalmente TDS.

R = r·L/A  →  r = R·A/L
c = 1/r
TDS = c * 7000

Donde L = distancia entre electrodos (m), A = sección transversal (m²).

Librerías

Instalar vía Gestor de librerías (Herramientas → Gestionar librerías).

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Código

Código de monitorización de calidad de agua
//include libraries
#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

// Bluetooth: RX=3, TX=2
SoftwareSerial BTserial(3,2);

float reads;
int pin = A0;
float vOut = 0;
float vIn = 5;
float R1 = 1000;
float R2 = 0;
float buffer = 0;
float TDS;
float R = 0;
float r = 0;
float L = 0.06; // distancia entre electrodos (m)
double A = 0.000154; // sección cable (m²)
float C = 0; // conductividad S/m
float Cm = 0; // conductividad mS/cm

int rPin = 9, bPin = 5, gPin = 6;
int rVal = 255, bVal = 255, gVal = 255;

LiquidCrystal lcd(7,8,10,11,12,13);

void setup() {
  Serial.begin(9600);
  BTserial.begin(9600);
  lcd.begin(16, 2);
  pinMode(rPin,OUTPUT);
  pinMode(bPin,OUTPUT);
  pinMode(gPin,OUTPUT);
  pinMode(pin,INPUT);
  lcd.print("Conductivity: ");
}

void loop() {
  reads = analogRead(A0);
  vOut = reads * 5.0 / 1023.0;
  Serial.println(reads);
  buffer = (vIn / vOut) - 1;
  R2 = R1 * buffer;
  Serial.println(R2);
  delay(500);

  r = R2 * A / L;
  C = 1 / r;
  Cm = C * 10;
  TDS = Cm * 700;

  lcd.setCursor(0,1);
  lcd.print(C);

  // LED RGB según lectura
  if (reads < 600) {
    if (reads <= 300) setColor(255, 0, 255);
    else if (reads > 200) setColor(200, 0, 255);
  } else {
    if (reads <= 900) setColor(0, 0, 255);
    else if (reads > 700) setColor(0, 255, 255);
  }

  // Enviar a app Ardutooth vía Bluetooth
  BTserial.print(C); BTserial.print(",");
  BTserial.print(TDS); BTserial.print(";");
  delay(500);
}

void setColor(int red, int green, int blue) {
  analogWrite(rPin, 255 - red);
  analogWrite(gPin, 255 - green);
  analogWrite(bPin, 255 - blue);
}

Piezas personalizadas y cajas

Usé un tubo de ensayo viejo: agujereé ambos extremos, pasé cables y fijé con masilla.

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Esquemáticos

Sistema IoT de Calidad de Agua con Arduino – Monitorización en Tiempo Real

Proceso de manufactura

  1. Raspberry Pi y HDC2010: Guía completa de configuración I2C para sensor de temperatura y humedad
  2. Conectar Raspberry Pi 3 a sensor DHT11 y subir datos a cloud ThingsIo.ai
  3. Papelera Inteligente: Solución IoT Celular para Gestión Automatizada de Residuos
  4. Sensor de Calidad del Aire Solar con Helium: Guía de Diseño y Despliegue
  5. Integración del Sensor de Agua Phantom YoYo de Alta Sensibilidad con ADC MCP3008 en Raspberry Pi
  6. Monitorización Precisa de Temperatura y Humedad con SHT15 en Windows 10 IoT Core
  7. Sistema de Sensor de Temperatura Multiposición para Integración en Hogar Inteligente
  8. Botella de agua inteligente con Arduino: Monitorización en tiempo real y alertas
  9. Pistola de Agua Inteligente Activada por Movimiento con Arduino Nano
  10. Estación meteorológica Arduino Nano: Sensores BMP280, DHT11, UV y RTC en OLED 0,96"
  11. Sensor avanzado de NO₂ basado en carbono mejora monitorización de calidad del aire interior