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 Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT

Componentes y materiales

Arduino Mega 2560 × 1
Placa Ethernet Arduino × 1
Pantalla LCD 4×20 con interfaz I2C × 1
Sensor de temperatura y humedad DHT22 × 1
RTC DS3231 (reloj tiempo real de alta precisión) × 1
Sensor ultrasónico HC-SR04 (nivel de sumidero) × 1
PCB personalizada fabricada por OSH Park × 1

Descripción del proyecto

Comencé con la monitorización doméstica instalando un termostato inteligente Ecobee en casa de mi hija. Al ser discontinuado por Ecobee, busqué una alternativa que permitiera monitorizar nivel de sumidero, alarma de inundación, corte de suministro eléctrico y otros parámetros. Me basé en gran medida en proyectos de la comunidad open-source, especialmente para el código del Arduino y la web. El uso de PushingBox para notificaciones fue la clave para permitir avisos remotos. Agradezco a la comunidad de diseño abierto por publicar sus conocimientos y proyectos.

Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT

Partí de un Arduino Mega 2560 al que añadí una tarjeta Ethernet. Con Eagle CAD diseñé un par de placas para entradas y señalización visual, fabricadas por OSH Park. La placa de interfaz conecta los siete contactos secos disponibles, sensor de temperatura/humedad, reloj tiempo real y sensor ultrasónico de nivel de sumidero al Arduino.

Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT

Para visualización local usé una pantalla LCD 4×20. También hay 8 LEDs que muestran el estado de cada entrada de alarma: ámbar = alarma activa, verde = alarma pasada (ya limpiada), apagado = reseteado. El botón de reset apaga los LEDs verdes; el botón de habilitación de mensajes activa/desactiva las notificaciones vía PushingBox.

La web solo es accesible en la LAN (no abrí puertos en el router por seguridad). Usé varios ejemplos de Arduino y la librería jqPlot para gráficos autónomos en mi sistema de laboratorio.

Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT
Sistema Avanzado de Monitorización Doméstica con Arduino Mega y Sensores IoT

Todavía faltan etiquetas, pero el software dispara alarma cuando el nivel del sumidero está a menos de 10 pulgadas del sensor; el LED ámbar indica alarma activa. El LED verde muestra que hubo alarma pero ya se abrió el contacto. Pulsando reset se apaga el verde, pero el ámbar permanece hasta que el nivel supere las 10 pulgadas.

Código

Código Arduino (C/C++)

// Home Monitor code
/* ASIGNACIONES
arduino led verde led rojo interfaz anunciador anunciador sensor# variable pin entrada pin salida pin salida variable pin placa pin rojo pin verde
nivel sumidero 1 6,8 18 19 pulgadas x15-2 a 6, x15-3 a 8 20-1 20-2
alarma inundación 2 28 23 25 x15-4 20-3 20-4
corte energía 3 30 27 29 x15-5 20-5 20-6
temperatura 4 ftemp 5 (ftemp,1) x15-1
humedad 5 fhumi 5 (fhumi,1) x15-1
aux 1 6 aux1 32 31 33 x15-6 20-7 20-8
aux 2 7 aux2 34 35 37 x15-11 21-1 21-2
aux 3 8 aux3 36 39 41 x15-7 21-3 21-4
aux 4 9 aux4 38 43 45 x15-8 21-5 21-6
aux 5 10 aux5 40 47 49 x15-9 21-7 21-8
reset reset 42 x15-10
inhibir msg msginhbt 44 x15-12
led mensaje 17 * cambiar para wifi shield
CABLEADO
VCC a 5V
LCD: SDA a pin 21, SCL a pin 20
DHT: pin 1 a VCC, pin 2 a pin 5 y 10K a VCC, pin 3 libre, pin 4 a GND
SR04: trig a pin 8, echo a pin 6
RTC: SDA a pin 21, SCL a pin 20
CORTE ENERGÍA pin 30
INUNDACIÓN pin 28
LED MENSAJE pin 17
NO usar pines 4, 7, 10, 11, 12, 13, 50, 51, 52, 53
*/

// LIBRERÍAS
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>
#include <NewPing.h>
#include <RTClib.h>
#include <RTC_DS3231.h>

// Tamaño buffer para peticiones HTTP
#define REQ_BUF_SZ 50

// MAC de la shield Ethernet (pegatina bajo la placa)
byte mac[] = { 0xzz, 0xzz, 0xzz, 0xzz, 0xzz, 0xzz };
IPAddress ip(192, 168, 1, 100);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(1000);

File webFile;
char HTTP_req[REQ_BUF_SZ] = {0};
char req_index = 0;

// DevID secreto de PushingBox.com
char DEVID1[] = "xxxxxxxxxxxxxxxxx";

/* ... resto del código (setup, loop, funciones timeanddate, ultrasonicsensor, dht22, annunciator, sendmessage) ... */

Web (JavaScript + HTML)

La web requiere archivos JS y CSS locales (jqPlot, gauge.js, jQuery, etc.). Incluye gráficos de nivel de sumidero y temperatura, medidores (gauges), reloj en tiempo real y tabla de estado de todos los sensores. El código completo está en la sección «Code» del proyecto original.

Esquemáticos

Interfaz y anunciador: LED BAR 2.sch (archivo Eagle CAD).

Proceso de manufactura

  1. Monitor de presión arterial: Diseño, fabricación y tendencias futuras
  2. Construya una Red de Sensores Inalámbrica Económica para su Hogar
  3. Monitoriza la temperatura de tu casa con un panel Raspberry Pi
  4. Construye sistema domótico con Raspberry Pi para control remoto
  5. Construye tu propia máquina de escribir deberes casera (DIY Homework Writing Machine)
  6. Crea un Impresionante Sistema Ambilight para Monitor con Arduino
  7. Monitor de Frecuencia Cardíaca IoT en Tiempo Real con Arduino y MAX30100
  8. Monitor de voltaje de termopar para piloto de calentador de agua: alertas seguras por email y SMS
  9. Robot Asistente Doméstico Autónomo "O'nine" – Integración ROS, Alexa y Brazo Robótico
  10. Controlador doméstico Arduino con Alexa: Automatización inteligente simplificada
  11. Monitor de frecuencia cardíaca MAX30102 con Arduino Nano y LCD 16x2