Dans ce projet, nous allons modifier un capteur de mouvement commercial (alimenté par une tension secteur) avec un ESP8266 pour enregistrer les données chaque fois qu’un mouvement est détecté. Les données seront envoyées à Node-RED en utilisant le protocole de communication MQTT. L’ESP8266 sera alimenté via le fil de sortie de phase du capteur de mouvement à l’aide du convertisseur AC/DC HLK-PM03.
Conditions préalables
Avant de poursuivre ce projet, nous vous recommandons de consulter les ressources suivantes :
Pièces requises :
Voici une liste des pièces nécessaires pour ce projet :
Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !
Aperçu du projet
Ce projet est divisé en trois parties :
- Construire le circuit
- Écrire et télécharger le code ESP8266
- Création du flux Node-RED
L’image suivante montre un aperçu de haut niveau du projet que nous allons construire.
Capteur de mouvement
Nous allons pirater un capteur de mouvement commercial qui a suffisamment d’espace pour mettre un ESP-01 et le module convertisseur AC/DC HLK-PM03 à l’intérieur. Nous avons acheté notre détecteur de mouvement pour 5 $ dans un magasin local.
Lorsque le capteur PIR détecte un mouvement, il y a de la puissance sortant du fil chaud rouge qui peut allumer une lampe ou un appareil. Votre détecteur de mouvement doit avoir un schéma de câblage similaire sur le couvercle ou imprimé dans le manuel d’instructions.
Dans notre projet, la charge de sortie du capteur de mouvement est la HLK-PM03 CA/CC module convertisseur qui alimentera l’ESP8266.
En rapport: Alimentez ESP8266 avec une tension alternative à l’aide du convertisseur HLK-PM03
Le convertisseur AC/DC du module HLK-PM03 fournit 3,3 V à partir de 110 VAC ou 220 VAC. Cela le rend parfait pour alimenter l’ESP8266 à partir de la tension secteur.
En résumé, lorsqu’un mouvement est détecté, l’alimentation atteint l’ESP8266. L’ESP8266 peut exécuter des tâches tant que le capteur de mouvement est déclenché.
Vous devrez peut-être ajuster la durée pendant laquelle le capteur reste allumé, afin que votre ESP8266 ait suffisamment de temps pour exécuter ses tâches. Le capteur doit avoir un bouton pour régler l’heure (et un autre pour régler la luminosité).
Dans notre exemple, chaque fois que l’ESP8266 s’allume, il exécute une esquisse qui envoie des informations à Node-RED via MQTT pour enregistrer la date et l’heure auxquelles le mouvement a été détecté.
Au lieu d’envoyer des informations à Node-RED, vous pouvez exécuter d’autres tâches, telles que :
Ces tâches peuvent être facilement effectuées en utilisant IFTTT.
1. Construire le circuit
Le diagramme schématique suivant montre le circuit pour ce projet.
Retirez le couvercle de votre capteur de mouvement PIR. À l’intérieur, il devrait y avoir trois fils : entrer en phase, neutre, et éliminer progressivement. Suivez ces étapes:
- Fil entrer en phase (marron) et neutre (bleu) au détecteur de mouvement
- Fil neutre (bleu) et éliminer progressivement (rouge) à l’entrée HLK-PM03
Il est recommandé d’ajouter un fusible à fusion lente juste avant le convertisseur HKL-PM03 et un condensateur à la sortie.
Noter: si vous utilisez un ESP8266 qui est toujours sous tension avec le HLK-PM03, nous vous recommandons d’utiliser ce circuit de protection.
Le HLK-PM03 délivre 3,3 V et GND. Ceux-ci sont connectés à la broche ESP8266 VCC et GND pour l’alimenter.
Nous avons construit le circuit HLK-PM03 et ESP8266 sur un petit protoboard pour économiser de l’espace. Nous avons également ajouté des broches d’en-tête pour placer l’ESP8266-01. De cette façon, vous pouvez brancher et débrancher la carte chaque fois que vous devez télécharger un nouveau code.
Lecture recommandée: Guide de référence des GPIO et brochage ESP8266
2. Écriture et téléchargement du code ESP8266
Nous allons programmer l’ESP8266 à l’aide de l’IDE Arduino. Afin de télécharger du code sur votre ESP8266, vous devez d’abord installer le module complémentaire ESP8266, si vous ne l’avez pas déjà fait (Installer la carte ESP8266 dans l’IDE Arduino).
Vous devrez également installer le PubSubClient bibliothèque pour créer un client MQTT avec l’ESP8266. La bibliothèque PubSubClient fournit un client pour effectuer une simple messagerie de publication/abonnement avec un serveur qui prend en charge MQTT (permet essentiellement à votre ESP8266 de parler avec Node-RED).
- Cliquez ici pour télécharger la bibliothèque PubSubClient. Vous devriez avoir un .Zip *: français dossier dans votre dossier Téléchargements
- Décompressez le .Zip *: français dossier et vous devriez obtenir pubsubclient-master dossier
- Renommez votre dossier de
pubsubclient-masterà pubsous-client - Bouge le pubsous-client dossier à votre installation Arduino IDE bibliothèques dossier
Ensuite, copiez le code suivant dans votre IDE Arduino, mais ne le téléchargez pas encore. Vous devez apporter quelques modifications pour que cela fonctionne pour vous.
Vous devez modifier le code avec votre propre SSID, mot de passe et adresse IP du courtier MQTT (adresse IP Raspberry Pi).
/*********
Rui Santos
Complete project details at https://www.raspberryme.com
*********/
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// Replace with your SSID, password and MQTT broker IP address
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
const char* mqtt_server = "REPLACE_WITH_YOUR_MQTT_BROKER_IP";
//For example
//const char* mqtt_server = "192.168.1.144";
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect() {
// Loop until we're reconnected
while (!client.connected()) {
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP8266Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
if (client.connect(clientId.c_str())) {
Serial.println("connected");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // Initialize the BUILTIN_LED pin as an output
digitalWrite(BUILTIN_LED, HIGH);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
while (!client.connected()) {
reconnect();
}
Serial.print("Motion Detected");
// Publish MQTT message
String mqttMessage = "Motion Detected";
client.publish("esp/pir", mqttMessage.c_str());
}
void loop() {
client.loop();
}
Inclure vos informations d’identification réseau
Vous devez inclure vos informations d’identification réseau dans les lignes suivantes.
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
Incluez l’adresse IP de votre courtier MQTT
Vous devez également inclure l’adresse IP de votre courtier MQTT.
const char* mqtt_server = "REPLACE_WITH_YOUR_MQTT_BROKER_IP";
Pour trouver l’adresse IP de votre courtier MQTT, vous devez d’abord la configurer. Nous utilisons le courtier Mosquitto hébergé sur un Raspberry Pi. Suivez les ressources suivantes si vous ne l’avez pas encore fait :
Comment fonctionne le code
Le code est très simple. Il publie simplement un message sur un sujet. À des fins de test, nous allumons également la LED intégrée à chaque fois que l’ESP8266 est alimenté. Cela se fait sur le mettre en place() car il ne sera exécuté qu’une seule fois (lorsqu’un mouvement est détecté et pendant que l’ESP8266 est alimenté).
void setup() {
pinMode(BUILTIN_LED, OUTPUT); // BUILTIN_LED pin as an output
digitalWrite(BUILTIN_LED, HIGH);
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
while (!client.connected()) {
reconnect();
}
Serial.print("Motion Detected");
// Publish MQTT message
String mqttMessage = "Motion Detected";
client.publish("esp/pir", mqttMessage.c_str());
}
Téléchargement du code
Après avoir modifié le code avec vos informations d’identification réseau, vous pouvez le télécharger sur votre carte. Pour télécharger le code sur l’ESP8266-01, vous avez besoin d’un adaptateur série ou un Programmeur FTDI.
3. Création du flux Node-RED
Avant de créer le flux, vous devez avoir installé dans votre Raspberry Pi :
Importation du flux Node-RED
Pour importer le flux Node-RED fourni, rendez-vous dans Référentiel GitHub ou cliquez sur la figure ci-dessous pour voir le fichier brut et copiez le code fourni.
Ensuite, dans la fenêtre Node-RED, dans le coin supérieur droit, sélectionnez le menu et accédez à Importer > Presse-papiers.
Ensuite, collez le code fourni et cliquez sur Importer.
Voici le flux importé. Il reçoit les messages ESP8266 MQTT et enregistre l’heure chaque fois qu’un mouvement est détecté.
Nous avons également ajouté deux boutons pour effacer et actualiser le journal.
Tableau de bord Node-RED
Après avoir effectué toutes les modifications nécessaires, cliquez sur le Déployer bouton pour enregistrer toutes les modifications.
Maintenant, votre application Node-RED est prête. Pour accéder au tableau de bord Node-RED et voir à quoi ressemble votre application, accédez à n’importe quel navigateur de votre réseau local et tapez :
http://Your_RPi_IP_address:1880/ui
Manifestation
Maintenant, vous pouvez tester votre projet. Chaque fois qu’un mouvement est détecté, l’ESP8266 s’allume et envoie un message via MQTT à Node-RED.
Si vous accédez à votre tableau de bord Node-RED, vous pouvez voir tous les journaux de détection de mouvement. Votre application doit ressembler à la figure suivante.
Le tableau de bord affiche la dernière détection de mouvement et tous les journaux précédents. Vous avez également la possibilité d’actualiser le journal et de l’effacer. Veuillez noter que l’effacement du journal est irréversible.
Conclusion
Ce projet a montré comment vous pouvez pirater un capteur de mouvement commercial avec un ESP8266 pour le rendre plus intelligent. Vous pouvez facilement alimenter l’ESP8266 avec le HLK-PM03 à partir de la tension secteur et créer un circuit compact pouvant s’adapter au capteur de mouvement.
Chaque fois qu’un mouvement est détecté, l’ESP8266 est alimenté et exécute une tâche. Dans ce cas, il publie un message MQTT pour enregistrer l’heure à laquelle le mouvement a été détecté, mais vous pouvez facilement écrire du code pour exécuter toute autre tâche.
Nous espérons que vous avez trouvé ce projet utile. Si vous avez aimé ce projet, vous pourriez également être intéressé par l’une des ressources suivantes :
-
AZDelivery 5 x HC-SR501 PIR Capteur à Ultrasons Module Télémètre Compatible avec Arduino et Raspberry Pi incluant Un E-Book!✅ Module de détection de mouvement PIR. ✅ Tension de service 5V. ✅ Sensibilité et temps de commutation réglables, également pour un fonctionnement autonome sans µC. ✅ Dimensions du tableau : 32 mm * 24 mm. ✅ Ce produit inclut un E-Book qui fournit des informations utiles sur la façon de commencer votre projet. Il permet une installation rapide et fait gagner du temps sur le processus de configuration. On y trouve une série d'exemples d'applications, des guides d'installation complets et des bibliothèques.
-
HC-SR PIR 501 Module RUIZHI 3 pièces HC-SR PIR 501 Capteur à Ultrasons Module Sonde de capteur Infrarouge Module de Capteur Infrarouge Humain Compatible avec Arduino【Haute performance 】: HC-SR PIR 501 Human Infrared Motion Sensor Module avec une grande sensibilité et une large plage de détection. 【Pas d'émission infrarouge ou électromagnétique 】: Pas besoin de sources émettrices, excellente dissimulation pour les installations mobiles. 【Idéal pour les projets Arduino 】: Le module HC-SR PIR 501 est une solution fiable de détection des mouvements humains pour une large gamme d'applications. 【Avantage du système optique 】: Le module de capteur infrarouge humain est doté d'une lentille de Fresnel qui concentre le rayonnement infrarouge humain sur le capteur. 【Traitement du signal 】: Améliore la stabilité et la fiabilité du module HC-SR PIR 501 en amplifiant, filtrant et retardant les signaux électriques faibles.
-
Youmile 5PACK IR Capteur Humain AM312 Mini Module de Détecteur HC-SR312 Détecteur Automatique de Mouvement PIR Infrarouge Pyroélectrique DC 2.7 à 12V pour Arduino 2 A1U2 avec Fil DupontIl s'agit d'un produit de contrôle automatique intelligent numérique basé sur la technologie infrarouge passive du corps humain. Il a une haute sensibilité et une grande fiabilité et est largement utilisé dans divers appareils électriques à induction automatiques. Amélioration de l'immunité, utilisation interne du traitement du signal numérique, sortie directe High-Low Faible consommation d'énergie et petite taille pour une installation intégrée facile. Mode déclencheur répétable: lorsque le corps humain est actif pendant le temps de retard après le niveau élevé de la sortie de détection dans sa zone de détection, sa sortie reste élevée jusqu'à ce que le retard soit atteint après avoir quitté la personne. Le module retarde automatiquement un temps de retard après chaque activité du corps humain, et le dernier temps actif est le point de départ du temps de retard. Nombreuses applications : produits de sécurité, jouets de capteurs corporels humains, éclairage de capteurs de corps humains, automatisation et contrôle industriels, etc.