Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Système de Surveillance Domestique Avancé avec Arduino Mega et Capteurs IoT

Composants et fournitures

Arduino Mega 2560 1
Carte Ethernet Arduino 1
Écran LCD 4x20 avec interface I2C 1
Capteur température/humidité DHT22 1
RTC DS3231 (horloge temps réel haute précision) 1
Capteur ultrasonique HC-SR04 (niveau puisard) 1
PCB personnalisé OSH Park (interface et annoncateur) 1

À propos de ce projet

Tout a commencé par l'installation d'un thermostat intelligent Ecobee chez ma fille. Ecobee ayant cessé ce produit, je cherchais une alternative permettant de surveiller : niveau de puisard, alarme inondation, coupure de courant, et d'autres paramètres. Le code Arduino et le site web s'inspirent de nombreux projets open-source. L'utilisation de PushingBox pour les notifications a été l'élément clé permettant l'alerte à distance. Merci à la communauté open-source pour le partage de connaissances.

Système de Surveillance Domestique Avancé avec Arduino Mega et Capteurs IoT

Le système repose sur un Arduino Mega 2560 avec carte Ethernet. Grâce à Eagle CAD, j'ai conçu des circuits imprimés pour les entrées et l'annoncateur visuel, fabriqués par OSH Park. La carte d'interface relie : 7 contacts secs, capteur température/humidité, RTC, et capteur ultrasonique de niveau de puisard à l'Arduino.

Système de Surveillance Domestique Avancé avec Arduino Mega et Capteurs IoT

Pour l'affichage local : un LCD 4x20. Huit LEDs indiquent l'état de chaque entrée d'alarme : ambre = alarme active, vert = alarme passée (réarmée), éteint = réinitialisé. Le bouton « Reset » éteint les LEDs vertes ; le bouton « Message Enable » active/désactive les notifications PushingBox.

L'interface web n'est accessible que sur le réseau local (LAN) – pas d'ouverture de port sur le routeur pour des raisons de sécurité. Plusieurs exemples Arduino et la bibliothèque jqPlot ont été utilisés pour les graphiques autonomes.

Système de Surveillance Domestique Avancé avec Arduino Mega et Capteurs IoT
Système de Surveillance Domestique Avancé avec Arduino Mega et Capteurs IoT

L'alarme de niveau de puisard se déclenche sous 10 pouces (LED ambre allumée). La LED verte indique une alarme passée. Le bouton Reset éteint la verte, mais l'ambre reste allumée tant que le niveau < 10 pouces.

Code

Code Arduino (C/C++)

// Home Monitor code
/* AFFECTATIONS
arduino led verte led rouge interface annoncateur annoncateur capteur# variable entrée broche sortie broche sortie broche variable carte broche carte rouge broche carte verte broche
niveau puisard     1  6,8  18  19  pouces x15-2 à 6, x15-3 à 8  20-1  20-2
alarme inondation  2  28  23  25  x15-4  20-3  20-4
coupure courant    3  30  27  29  x15-5  20-5  20-6
température        4  ftemp  5  (ftemp,1)  x15-1
humidité           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
inhibit msg        msginhbt 44  x15-12
message led        17  * changer pour shield WiFi

CÂBLAGE
VCC vers 5V
LCD: SDA vers broche 21, SCL vers broche 20
DHT22: broche 1 vers VCC, broche 2 vers broche 5 + 10K vers VCC, broche 4 vers GND
HC-SR04: trig vers broche 8, echo vers broche 6
RTC: SDA vers 21, SCL vers 20
COUPURE COURANT broche 30
INONDATION broche 28
MESSAGE LED broche 17
PAS UTILISER broches 4, 7, 10, 11, 12, 13, 50, 51, 52, 53
*/

// BIBLIOTHÈQUES
#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>

#define REQ_BUF_SZ 50

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;

char DEVID1[] = "xxxxxxxxxxxxxxxxx"; // Votre DevID PushingBox

// CONFIGURATION MATÉRIEL
LiquidCrystal_I2C lcd(0x27, 20, 4);
dht DHT;
#define DHT22_PIN 5

#define TRIGGER_PIN 8
#define ECHO_PIN 6
#define MAX_DISTANCE 200
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

RTC_DS3231 RTC;

// Variables globales
unsigned long mathtime1 = 0, mathtime2 = 0, mathtime3 = 0, mathtime3a = 0, mathtime4 = 0;
String timestring, datestring;
unsigned int inches;
float ftemp, fhumi;
int aux1, aux2, aux3, aux4, aux5, reset;
int msginhbt = LOW;
// ... capteurs, messages, flags debug ...

void setup() {
  // Carte SD, Ethernet, Serial, LCD, RTC, broches entrées/sorties
  // Initialisation complète dans le code source original
}

void loop() {
  // LED message pushbutton
  if (digitalRead(44) == HIGH) digitalWrite(17, HIGH); else digitalWrite(17, LOW);

  // Sous-routines principales
  timeanddate();
  ultrasonicsensor();
  dht22();
  annunciator();

  // Préparation chaînes JSONP pour le site web
  sensor1 = inches;
  sensor1msg = (inches < 10) ? "_Sump_Alarm_" : "";
  sensor2 = digitalRead(28) ? "'FLOOD ALARM'" : "'OK'";
  sensor2msg = digitalRead(28) ? "_Flood_Alarm_" : "";
  sensor3 = digitalRead(30) ? "'LOSS OF POWER'" : "'OK'";
  sensor3msg = digitalRead(30) ? "_Loss_of_Power_" : "";
  sensor4 = ftemp;
  sensor5 = fhumi;
  // ... aux 1-5 ...
  msginhbtmsg = digitalRead(44) == HIGH ? "'ON'" : "'OFF'";

  messagesend = sensor1msg + sensor2msg + sensor3msg + sensor6msg + sensor7msg + sensor8msg + sensor9msg + sensor10msg;

  // Serveur web AJAX
  EthernetClient client = server.available();
  if (client) {
    // Traitement requêtes HTTP, envoi données JSONP
    // Voir code complet pour détails
  }

  // Envoi notifications PushingBox (désactivé si site web consulté)
  // sendmessage();
}

// Fonctions : timeanddate(), ultrasonicsensor(), dht22(), annunciator(), sendmessage()
// Voir code source complet pour implémentation détaillée

Site Web (JavaScript + HTML)

Le tableau de bord web utilise : jQuery, jqPlot (graphiques), Gauge.js (jauges), canvas. Il interroge l'Arduino toutes les 3 secondes via JSONP et met à jour graphiques, jauges et valeurs textuelles en temps réel.

Fonctionnalités :

Note : les fichiers JS/CSS (jquery, jqplot, gauge.js, excanvas) doivent être hébergés localement sur l'ordinateur servant la page.

Schémas

Fichiers Eagle CAD : LED BAR 2.sch (interface et annoncateur)

Processus de fabrication

  1. Tensiomètre : conception, fabrication et tendances futures
  2. Construire un réseau de capteurs sans fil abordable pour votre maison
  3. Surveiller la température de votre maison avec un tableau de bord Raspberry Pi
  4. Construire un système domotique piloté par Raspberry Pi pour contrôle à distance
  5. Construire sa propre machine à écrire les devoirs à la maison (Traceur à stylo)
  6. Créer un système Ambilight spectaculaire pour moniteur avec Arduino
  7. Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
  8. Sécurisez votre chauffe-eau : Moniteur de tension thermocouple pour veilleuse pilote
  9. Robot Assistant Domestique Autonome : Liste Complète et Guide de Configuration