Note

Bonjour, bienvenue dans la communauté des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder sur Facebook ! Plongez plus profondément dans l’univers de Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

Pourquoi nous rejoindre ?

  • Support d’experts : Résolvez les problèmes après-vente et les défis techniques avec l’aide de notre communauté et de notre équipe.

  • Apprendre & Partager : Échangez des astuces et des tutoriels pour améliorer vos compétences.

  • Aperçus exclusifs : Accédez en avant-première aux nouvelles annonces de produits et aux aperçus.

  • Réductions spéciales : Profitez de réductions exclusives sur nos produits les plus récents.

  • Promotions festives et cadeaux : Participez à des concours et des promotions pendant les fêtes.

👉 Prêt à explorer et à créer avec nous ? Cliquez sur [here] et rejoignez-nous dès aujourd’hui !

Leçon 49 : Système de notification d’intrusion basé sur Blynk

Ce projet montre comment créer un système simple de détection d’intrusion domestique en utilisant un capteur de mouvement PIR (HC-SR501). Lorsque le système est mis en mode « Away » via l’application Blynk, le capteur PIR surveille les mouvements. Tout mouvement détecté déclenche une notification sur l’application Blynk, alertant l’utilisateur d’une possible intrusion.

Composants nécessaires

Dans ce projet, vous aurez besoin des composants suivants.

Il est certainement pratique d’acheter un kit complet, voici le lien :

Nom

COMPOSANTS DANS CE KIT

Lien

Kit de capteurs Universal Maker

94

Universal Maker Sensor Kit

Vous pouvez également les acheter séparément via les liens ci-dessous.

DESCRIPTION DU COMPOSANT

LIEN D’ACHAT

ESP32 & Carte de développement (ESP32)

BUY

Module de Détection de Mouvement PIR (HC-SR501)

-

1. Assemblage du circuit

../_images/Lesson_12_PIR_Module_esp32_bb.png

2. Configuration de Blynk

2.1 Initialisation de Blynk

  1. Rendez-vous sur Blynk et sélectionnez START FREE.

    ../_images/09_blynk_access.png
  2. Entrez votre adresse e-mail pour commencer le processus d’inscription.

    ../_images/09_blynk_sign_in.png
  3. Confirmez votre inscription via votre e-mail.

  4. Après confirmation, un Blynk Tour apparaîtra. Il est recommandé de sélectionner « Skip ». Si l’option Quick Start apparaît également, vous pouvez aussi la sauter.

2.2 Création du modèle

  1. Commencez par créer un modèle dans Blynk. Suivez les étapes ci-dessous pour créer le modèle Intrusion Alert System.

  2. Attribuez un nom au modèle, sélectionnez le matériel ESP32, puis choisissez WiFi comme type de connexion, et enfin cliquez sur Done.

2.3 Génération de flux de données

Ouvrez le modèle que vous venez de configurer, nous allons créer deux flux de données.

  1. Cliquez sur New Datastream.

  2. Dans la fenêtre contextuelle, choisissez Virtual Pin.

  3. Nommez le Virtual Pin V0 AwayMode. Définissez le DATA TYPE sur Integer avec les valeurs MIN et MAX égales respectivement à 0 et 1.

  4. De manière similaire, créez un autre flux Virtual Pin. Nommez-le Current Status et définissez le DATA TYPE sur String.

2.4 Configuration d’un événement

Ensuite, nous allons configurer un événement qui envoie une notification par e-mail lorsqu’une intrusion est détectée.

  1. Cliquez sur Add New Event.

    ../_images/09_blynk_event_add.png
  2. Définissez le nom de l’événement et son code spécifique. Pour TYPE, choisissez Warning et écrivez une courte description pour l’e-mail qui sera envoyé lorsque l’événement se produira. Vous pouvez également ajuster la fréquence des notifications.

    Note

    Assurez-vous que le EVENT CODE soit défini sur intrusion_detected . Ce code est prédéfini dans le code, donc toute modification de ce code entraînera un besoin d’ajustement dans le programme.

    ../_images/09_event_1_shadow.png
  3. Allez dans la section Notifications pour activer les notifications et configurer les détails de l’e-mail.


2.5 Optimisation du tableau de bord Web

Il est crucial de s’assurer que le Tableau de bord Web interagit parfaitement avec le Système d’alerte d’intrusion.

  1. Glissez simplement le widget Interrupteur et le widget Étiquette sur le Tableau de bord Web.

  2. Lorsque vous survolez un widget, trois icônes apparaîtront. Utilisez l’icône des paramètres pour ajuster les propriétés du widget.

  3. Dans les paramètres du widget Interrupteur, sélectionnez Flux de données comme AwayMode(V0). Définissez ONLABEL et OFFLABEL pour afficher respectivement « absent » et « présent ».

  4. Dans les paramètres du widget Étiquette, sélectionnez Flux de données comme Current Status(V1).

2.6 Sauvegarde du modèle

Enfin, n’oubliez pas de sauvegarder votre modèle.

2.7 Création d’un appareil

  1. Il est temps de créer un nouvel appareil.

  2. Cliquez sur From template pour commencer avec une nouvelle configuration.

  3. Ensuite, choisissez le modèle Système d’alerte d’intrusion et cliquez sur Créer.

  4. Ici, vous verrez l”ID du modèle, le Nom de l'appareil et le AuthToken. Vous devez copier ces informations dans votre code pour que l’ESP32 puisse fonctionner avec Blynk.

3. Exécution du code

  1. Avant d’exécuter le code, assurez-vous d’installer la bibliothèque Blynk depuis le Gestionnaire de bibliothèques de l’IDE Arduino.

  2. Ouvrez le fichier Lesson_49_Blynk_based_intrusion_system.ino, qui se trouve dans le répertoire universal-maker-sensor-kit\esp32\Lesson_49_Blynk_based_intrusion_system. Vous pouvez également copier son contenu dans l’IDE Arduino.

  3. Remplacez les espaces réservés pour BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, et BLYNK_AUTH_TOKEN par vos propres identifiants uniques.

    #define BLYNK_TEMPLATE_ID "TMPxxxxxxx"
    #define BLYNK_TEMPLATE_NAME "Intrusion Alert System"
    #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
    
  4. Vous devez également entrer le ssid et le mot de passe de votre réseau WiFi.

    char ssid[] = "your_ssid";
    char pass[] = "your_password";
    
  5. Choisissez la carte correcte (Module ESP32 Dev) et le port, puis cliquez sur le bouton Téléverser.

  6. Ouvrez le moniteur série (réglez le débit en bauds sur 115200) et attendez un message de connexion réussie.

    ../_images/09_blynk_upload_code.png
  7. Après une connexion réussie, l’activation de l’interrupteur dans Blynk démarrera la surveillance du module PIR. Lorsque le mouvement est détecté (état de 1), il dira, « Quelqu’un est là ! » et enverra une alerte par e-mail.

4. Explication du code

  1. Configuration & Bibliothèques

    Ici, vous configurez les constantes et les identifiants Blynk. Vous incluez également les bibliothèques nécessaires pour l’ESP32 et Blynk.

    /* Commentez ceci pour désactiver les impressions et économiser de l'espace */
    #define BLYNK_PRINT Serial
    
    #define BLYNK_TEMPLATE_ID "xxxxxxxxxxx"
    #define BLYNK_TEMPLATE_NAME "Intrusion Alert System"
    #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
    
    #include <WiFi.h>
    #include <WiFiClient.h>
    #include <BlynkSimpleEsp32.h>
    
  2. Configuration WiFi

    Entrez vos identifiants WiFi.

    char ssid[] = "your_ssid";
    char pass[] = "your_password";
    
  3. Configuration du capteur PIR

    Définissez la broche à laquelle le capteur PIR est connecté et initialisez les variables d’état.

    const int sensorPin = 14;
    int state = 0;
    int awayHomeMode = 0;
    BlynkTimer timer;
    
  4. Fonction setup()

    Cette fonction initialise le capteur PIR en tant qu’entrée, configure la communication série, se connecte au WiFi et configure Blynk.

    • Nous utilisons timer.setInterval(1000L, myTimerEvent) pour définir l’intervalle de temps dans setup(), ici nous réglons pour exécuter la fonction myTimerEvent() toutes les 1000 ms. Vous pouvez modifier le premier paramètre de timer.setInterval(1000L, myTimerEvent) pour changer l’intervalle entre les exécutions de myTimerEvent.


    void setup() {
    
        pinMode(sensorPin, INPUT);  // Définir la broche du capteur PIR comme entrée
        Serial.begin(115200);       // Commencer la communication série à 115200 bauds pour le débogage
    
        // Configurer Blynk et se connecter au WiFi
        Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    
        timer.setInterval(1000L, myTimerEvent);  // Configurer une fonction à appeler toutes les secondes
    }
    
  5. Fonction loop()

    La fonction loop exécute en continu Blynk et les fonctions du timer Blynk.

    void loop() {
       Blynk.run();
       timer.run();
    }
    
  6. Interaction avec l’application Blynk

    Ces fonctions sont appelées lorsque l’appareil se connecte à Blynk et lorsqu’il y a un changement d’état du pin virtuel V0 sur l’application Blynk.

    • Chaque fois que l’appareil se connecte au serveur Blynk, ou se reconnecte en raison de conditions de réseau médiocres, la fonction BLYNK_CONNECTED() est appelée. La commande Blynk.syncVirtual() demande la valeur d’un Pin Virtuel unique. Le Pin Virtuel spécifié effectuera l’appel BLYNK_WRITE().

    • Chaque fois que la valeur d’un pin virtuel sur le serveur BLYNK change, cela déclenchera BLYNK_WRITE().


    // Cette fonction est appelée chaque fois que l'appareil est connecté à Blynk.Cloud
    BLYNK_CONNECTED() {
        Blynk.syncVirtual(V0);
    }
    
    // Cette fonction est appelée chaque fois que l'état du Pin Virtuel 0 change
    BLYNK_WRITE(V0) {
        awayHomeMode = param.asInt();
        // logique supplémentaire
    }
    
  7. Gestion des données

    Chaque seconde, la fonction myTimerEvent() appelle sendData(). Si le mode absent est activé sur Blynk, elle vérifie le capteur PIR et envoie une notification à Blynk si un mouvement est détecté.

    • Nous utilisons Blynk.virtualWrite(V1, "Quelqu'un dans votre maison ! Veuillez vérifier !"); pour changer le texte d’une étiquette.

    • Utilisez Blynk.logEvent("intrusion_detected"); pour enregistrer l’événement sur Blynk.


    void myTimerEvent() {
       sendData();
    }
    
    void sendData() {
       if (awayHomeMode == 1) {
          state = digitalRead(sensorPin);  // Lire l'état du capteur PIR
    
          Serial.print("state:");
          Serial.println(state);
    
          // Si le capteur détecte un mouvement, envoyer une alerte à l'application Blynk
          if (state == HIGH) {
            Serial.println("Somebody here!");
            Blynk.virtualWrite(V1, "Somebody in your house! Please check!");
            Blynk.logEvent("intrusion_detected");
          }
       }
    }
    

Référence