Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

Lektion 49: Blynk-basiertes Einbruchmeldesystem

Dieses Projekt demonstriert ein einfaches Einbruchmeldesystem für zu Hause unter Verwendung eines PIR-Bewegungssensors (HC-SR501). Wenn das System über die Blynk-App auf den „Abwesenheitsmodus“ eingestellt ist, überwacht der PIR-Sensor Bewegungen. Jede erkannte Bewegung löst eine Benachrichtigung in der Blynk-App aus, die den Benutzer auf einen möglichen Einbruch aufmerksam macht.

Benötigte Komponenten

In diesem Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein komplettes Kit zu kaufen, hier ist der Link:

Name

ITEMS IN THIS KIT

LINK

Universal Maker Sensor Kit

94

Universal Maker Sensor Kit

Sie können sie auch separat über die folgenden Links kaufen.

COMPONENT INTRODUCTION

PURCHASE LINK

ESP32 & Development Board

BUY

PIR-Bewegungsmodul (HC-SR501)

-

1. Schaltungsaufbau

../_images/Lesson_12_PIR_Module_esp32_bb.png

2. Blynk Konfiguration

2.1 Initialisierung von Blynk

  1. Navigieren Sie zur Blynk und wählen Sie START FREE.

    ../_images/09_blynk_access.png
  2. Geben Sie Ihre E-Mail-Adresse ein, um den Registrierungsprozess zu starten.

    ../_images/09_blynk_sign_in.png
  3. Bestätigen Sie Ihre Registrierung über Ihre E-Mail.

  4. Nach der Bestätigung erscheint der Blynk-Tour. Es wird empfohlen, „Überspringen“ auszuwählen. Wenn auch Schnellstart angezeigt wird, sollten Sie diesen ebenfalls überspringen.

2.2 Erstellen einer Vorlage

  1. Erstellen Sie zuerst eine Vorlage in Blynk. Befolgen Sie die folgenden Anweisungen, um die Vorlage Intrusion Alert System zu erstellen.

  2. Weisen Sie der Vorlage einen Namen zu, wählen Sie ESP32 Hardware aus und wählen Sie als Verbindungstyp WiFi. Klicken Sie dann auf Fertig.

2.3 Erstellen eines Datenstroms

Öffnen Sie die gerade eingerichtete Vorlage, und erstellen Sie zwei Datenströme.

  1. Klicken Sie auf Neuer Datenstrom.

  2. Wählen Sie im Popup Virtueller Pin.

  3. Benennen Sie den Virtuellen Pin V0 als AwayMode. Setzen Sie den DATENTYP auf Integer mit MIN und MAX Werten von 0 und 1.

  4. Erstellen Sie auf ähnliche Weise einen weiteren Virtuellen Pin Datenstrom. Benennen Sie ihn Current Status und setzen Sie den DATENTYP auf String.

2.4 Einrichten eines Ereignisses

Als nächstes richten wir ein Ereignis ein, das eine E-Mail-Benachrichtigung sendet, wenn ein Einbruch erkannt wird.

  1. Klicken Sie auf Neues Ereignis hinzufügen.

    ../_images/09_blynk_event_add.png
  2. Definieren Sie den Namen des Ereignisses und seinen spezifischen Code. Wählen Sie für TYP Warnung und schreiben Sie eine kurze Beschreibung für die zu sendende E-Mail, wenn das Ereignis eintritt. Sie können auch einstellen, wie oft Sie benachrichtigt werden möchten.

    Bemerkung

    Stellen Sie sicher, dass der EREIGNISCODE auf intrusion_detected gesetzt ist. Dies ist im Code vordefiniert, sodass Änderungen auch eine Anpassung des Codes erfordern würden.

    ../_images/09_event_1_shadow.png
  3. Gehen Sie zum Abschnitt Benachrichtigungen, um Benachrichtigungen zu aktivieren und E-Mail-Details einzurichten.


2.5 Feinabstimmung des Web-Dashboards

Stellen Sie sicher, dass das Web-Dashboard perfekt mit dem Einbruchmeldesystem interagiert.

  1. Ziehen Sie einfach sowohl das Schalter-Widget als auch das Beschriftungs-Widget auf das Web-Dashboard.

  2. Wenn Sie über ein Widget fahren, erscheinen drei Symbole. Verwenden Sie das Einstellungssymbol, um die Eigenschaften des Widgets anzupassen.

  3. Wählen Sie in den Einstellungen des Schalter-Widgets Datenstrom als AwayMode(V0). Setzen Sie ONLABEL und OFFLABEL auf „away“ bzw. „home“.

  4. Wählen Sie in den Einstellungen des Beschriftungs-Widgets Datenstrom als Current Status(V1).

2.6 Speichern der Vorlage

Vergessen Sie zuletzt nicht, Ihre Vorlage zu speichern.

2.7 Erstellung eines Geräts

  1. Jetzt ist es an der Zeit, ein neues Gerät zu erstellen.

  2. Klicken Sie auf Aus Vorlage, um eine neue Einrichtung zu starten.

  3. Wählen Sie dann die Vorlage Intrusion Alert System und klicken Sie auf Erstellen.

  4. Hier sehen Sie die Template ID, den Gerätenamen und das AuthToken. Diese müssen Sie in Ihren Code einfügen, damit das ESP32 mit Blynk arbeiten kann.

3. Code-Ausführung

  1. Bevor Sie den Code ausführen, stellen Sie sicher, dass Sie die Blynk-Bibliothek aus dem Bibliotheks-Manager der Arduino IDE installiert haben.

  2. Öffnen Sie die Datei Lesson_49_Blynk_based_intrusion_system.ino, die sich im Verzeichnis universal-maker-sensor-kit\esp32\Lesson_49_Blynk_based_intrusion_system befindet. Sie können den Inhalt auch in die Arduino IDE kopieren.

  3. Ersetzen Sie die Platzhalter für BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME und BLYNK_AUTH_TOKEN durch Ihre eigenen eindeutigen IDs.

    #define BLYNK_TEMPLATE_ID "TMPxxxxxxx"
    #define BLYNK_TEMPLATE_NAME "Intrusion Alert System"
    #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx"
    
  4. Sie müssen auch die ssid und das password Ihres WiFi-Netzwerks eingeben.

    char ssid[] = "your_ssid";
    char pass[] = "your_password";
    
  5. Wählen Sie das richtige Board (ESP32 Dev Module) und den richtigen Port aus und klicken Sie dann auf die Schaltfläche Hochladen.

  6. Öffnen Sie den Serial Monitor (stellen Sie die Baudrate auf 115200 ein) und warten Sie auf eine erfolgreiche Verbindungsnachricht.

    ../_images/09_blynk_upload_code.png
  7. Nach einer erfolgreichen Verbindung wird durch Aktivieren des Schalters in Blynk das Überwachungsmodul des PIR-Sensors gestartet. Wenn eine Bewegung erkannt wird (Status 1), erscheint die Nachricht „Somebody here!“ und es wird eine Warnung an Ihre E-Mail gesendet.

4. Code-Erklärung

  1. Konfiguration & Bibliotheken

    Hier richten Sie die Blynk-Konstanten und Anmeldeinformationen ein. Außerdem binden Sie die notwendigen Bibliotheken für den ESP32 und Blynk ein.

    /* Comment this out to disable prints and save space */
    #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. WiFi-Einrichtung

    Geben Sie Ihre WiFi-Anmeldeinformationen ein.

    char ssid[] = "your_ssid";
    char pass[] = "your_password";
    
  3. PIR-Sensor-Konfiguration

    Legen Sie den Pin fest, an dem der PIR-Sensor angeschlossen ist, und initialisieren Sie die Zustandsvariablen.

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

    Diese Funktion initialisiert den PIR-Sensor als Eingang, richtet die serielle Kommunikation ein, stellt die Verbindung zum WiFi her und konfiguriert Blynk.

    • Wir verwenden timer.setInterval(1000L, myTimerEvent), um das Timer-Intervall in setup() festzulegen. Hier stellen wir ein, dass die Funktion myTimerEvent() alle 1000ms ausgeführt wird. Sie können den ersten Parameter von timer.setInterval(1000L, myTimerEvent) ändern, um das Intervall zwischen den Ausführungen von myTimerEvent zu ändern.


    void setup() {
    
        pinMode(sensorPin, INPUT);  // Set PIR sensor pin as input
        Serial.begin(115200);           // Start serial communication at 115200 baud rate for debugging
    
        // Configure Blynk and connect to WiFi
        Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
    
        timer.setInterval(1000L, myTimerEvent);  // Setup a function to be called every second
    }
    
  5. loop() Funktion

    Die loop-Funktion führt kontinuierlich Blynk- und Blynk-Timer-Funktionen aus.

    void loop() {
       Blynk.run();
       timer.run();
    }
    
  6. Interaktion mit der Blynk-App

    Diese Funktionen werden aufgerufen, wenn das Gerät eine Verbindung zu Blynk herstellt und wenn sich der Zustand des virtuellen Pins V0 in der Blynk-App ändert.

    • Jedes Mal, wenn das Gerät eine Verbindung zum Blynk-Server herstellt oder aufgrund schlechter Netzwerkbedingungen neu verbindet, wird die Funktion BLYNK_CONNECTED() aufgerufen. Der Befehl Blynk.syncVirtual() fordert einen einzelnen Wert des virtuellen Pins an. Der angegebene virtuelle Pin wird den Aufruf BLYNK_WRITE() durchführen.

    • Jedes Mal, wenn sich der Wert eines virtuellen Pins auf dem BLYNK-Server ändert, wird BLYNK_WRITE() ausgelöst.


    // This function is called every time the device is connected to the Blynk.Cloud
    BLYNK_CONNECTED() {
        Blynk.syncVirtual(V0);
    }
    
    // This function is called every time the Virtual Pin 0 state changes
    BLYNK_WRITE(V0) {
        awayHomeMode = param.asInt();
        // additional logic
    }
    
  7. Datenverarbeitung

    Jede Sekunde ruft die Funktion myTimerEvent() die Funktion sendData() auf. Wenn der Abwesenheitsmodus in Blynk aktiviert ist, überprüft sie den PIR-Sensor und sendet eine Benachrichtigung an Blynk, wenn eine Bewegung erkannt wird.

    • Wir verwenden Blynk.virtualWrite(V1, "Somebody in your house! Please check!");, um den Text eines Labels zu ändern.

    • Verwenden Sie Blynk.logEvent("intrusion_detected");, um ein Ereignis in Blynk zu protokollieren.


    void myTimerEvent() {
       sendData();
    }
    
    void sendData() {
       if (awayHomeMode == 1) {
          state = digitalRead(sensorPin);  // Read the state of the PIR sensor
    
          Serial.print("state:");
          Serial.println(state);
    
          // If the sensor detects movement, send an alert to the Blynk app
          if (state == HIGH) {
            Serial.println("Somebody here!");
            Blynk.virtualWrite(V1, "Somebody in your house! Please check!");
            Blynk.logEvent("intrusion_detected");
          }
       }
    }
    

Referenzen