Pirater un capteur de mouvement PIR avec un ESP8266

Pirater un capteur de mouvement PIR avec un ESP8266

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.

Pirater un capteur de mouvement PIR avec un ESP8266

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 !

Pirater un capteur de mouvement PIR avec un ESP8266

Aperçu du projet

Ce projet est divisé en trois parties :

  1. Construire le circuit
  2. Écrire et télécharger le code ESP8266
  3. 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 PIR ESP8266 HLK-PM03

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.

1644290647 681 Pirater un capteur de mouvement PIR avec un ESP8266

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.

câblage du capteur de mouvement pir

Dans notre projet, la charge de sortie du capteur de mouvement est la HLK-PM03 CA/CC module convertisseur qui alimentera l’ESP8266.

1644290648 210 Pirater un capteur de mouvement PIR avec un ESP8266
Hi-Link HLK-PM03

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é).

1644290648 144 Pirater un capteur de mouvement PIR avec un ESP8266

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.

1644290648 586 Pirater un capteur de mouvement PIR avec un ESP8266

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
1644290648 32 Pirater un capteur de mouvement PIR avec un ESP8266

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.

1644290648 940 Pirater un capteur de mouvement PIR avec un ESP8266

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();
}

Afficher le code brut

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.

1644290649 271 Pirater un capteur de mouvement PIR avec un ESP8266

Ensuite, dans la fenêtre Node-RED, dans le coin supérieur droit, sélectionnez le menu et accédez à Importer > Presse-papiers.

1644290649 73 Pirater un capteur de mouvement PIR avec un ESP8266

Ensuite, collez le code fourni et cliquez sur Importer.

1644290649 29 Pirater un capteur de mouvement PIR avec un ESP8266

Voici le flux importé. Il reçoit les messages ESP8266 MQTT et enregistre l’heure chaque fois qu’un mouvement est détecté.

1644290649 963 Pirater un capteur de mouvement PIR avec un ESP8266

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.

1644290649 779 Pirater un capteur de mouvement PIR avec un ESP8266

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.

1644290650 392 Pirater un capteur de mouvement PIR avec un ESP8266

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 Dupont
    Il 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.