.. note:: 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 [|link_sf_facebook|] und treten Sie heute bei! .. _iot_intrusion_alert_system: 8.9 Blynk-basiertes Einbruchmeldesystem ============================================= Dieses Projekt demonstriert ein einfaches Einbruchmeldesystem für Zuhause, das einen PIR-Bewegungssensor (HC-SR501) nutzt. Wenn das System über die Blynk-App auf den Modus "Abwesend" eingestellt ist, überwacht der PIR-Sensor Bewegungen. Jede erkannte Bewegung löst eine Benachrichtigung in der Blynk-App aus, die den Benutzer über einen möglichen Einbruch informiert. **Benötigte Komponenten** Für dieses Projekt benötigen wir die folgenden Komponenten. Es ist definitiv praktisch, ein ganzes Kit zu kaufen. Hier ist der Link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Name - ARTIKEL IN DIESEM KIT - LINK * - ESP32 Starter Kit - 320+ - |link_esp32_starter_kit| Sie können sie auch separat über die untenstehenden Links kaufen. .. list-table:: :widths: 30 20 :header-rows: 1 * - KOMPONENTENVORSTELLUNG - KAUF-LINK * - :ref:`cpn_esp32_wroom_32e` - |link_esp32_wroom_32e_buy| * - :ref:`cpn_esp32_camera_extension` - |link_esp32_extension_board| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_pir` - |link_pir_buy| 1. Schaltungs-Zusammenbau ----------------------------- .. image:: ../../img/wiring/iot_9_blynk_bb.png :width: 60% :align: center 2. Blynk-Konfiguration -------------------------- **2.1 Blynk initialisieren** 1. Gehen Sie zur [Blynk-Plattform](link_blynk) und wählen Sie **Sign Up FREE** oder **Enterprise Solution**. .. image:: img/09_blynk_access.png :width: 600 :align: center 2. Geben Sie Ihre E-Mail ein, um den Registrierungsprozess zu starten. .. image:: img/09_blynk_sign_in.png :align: center 3. Überprüfen Sie Ihre E-Mails und klicken Sie auf den Link **Create Password** in der E-Mail, um Ihr Passwort festzulegen. .. image:: img/09_blynk_password.png :align: center 4. Nach der Bestätigung beginnt eine **Blynk-Tour**, in der Sie schnell einige der Schlüsselfunktionen von Blynk kennenlernen können. .. image:: img/09_blynk_tour.png :width: 600 :align: center 5. Nach Abschluss der Blynk-Tour erscheint ein Fenster, in dem Sie zwischen der Option **Blueprints erkunden** oder **Quick Start** wählen können, um Ihr Gerät schnell zu verbinden. In diesem Fall wählen wir jedoch "Zuerst umsehen". .. image:: img/09_blynk_skip.png :align: center **2.2 Vorlage erstellen** 1. Beginnen Sie mit der Erstellung einer Vorlage in Blynk. Folgen Sie den Schritten, um die Vorlage **Intrusion Alert System** einzurichten. .. image:: img/09_create_template_1_shadow.png :width: 600 :align: center 2. Benennen Sie Ihre Vorlage, wählen Sie **ESP32** als Hardware, **WiFi** als **Verbindungstyp** und klicken Sie dann auf **Fertig**. .. image:: img/09_create_template_2_shadow.png :width: 600 :align: center 3. Betreten Sie die Vorlage, wo Sie mit den nächsten Schritten aufgefordert werden. Klicken Sie auf **Vorlage konfigurieren**, um ein Titelbild hochzuladen, die Beschreibung zu verbessern und mehr. Folgen Sie den verbleibenden drei Schritten, um die Einrichtung abzuschließen. .. image:: img/09_blynk_temp_steps.png :width: 600 :align: center **2.3 Datenströme einrichten** 1. Öffnen Sie die neu erstellte Vorlage und gehen Sie zur Seite zum Einrichten der Datenströme. .. image:: img/09_blynk_new_datastream.png :width: 600 :align: center 2. Klicken Sie auf **Neuen Datenstrom**, und wählen Sie im Popup **Virtueller Pin**. .. image:: img/09_blynk_datastream_virtual.png :width: 600 :align: center 3. Benennen Sie den **Virtuellen Pin V0** als **AwayMode** und stellen Sie den **DATENTYP** auf **Integer** ein, mit **MIN**- und **MAX**-Werten als **0** und **1**. .. image:: img/09_create_template_shadow.png :width: 600 :align: center 4. Erstellen Sie ähnlich einen weiteren **Virtuellen Pin** mit dem Namen **Current Status** und setzen Sie den **DATENTYP** auf **String**. .. image:: img/09_datastream_1_shadow.png :width: 600 :align: center **2.4 Das Web-Dashboard einrichten** 1. Ziehen Sie sowohl das **Schalter-Widget** als auch das **Label-Widget** auf das **Web-Dashboard**. .. image:: img/09_web_dashboard_1_shadow.png :width: 600 :align: center 2. Wenn Sie über ein Widget fahren, erscheinen drei Symbole. Verwenden Sie das **Einstellungen**-Symbol, um die Eigenschaften des Widgets zu konfigurieren. .. image:: img/09_blynk_dashboard_set.png :width: 600 :align: center 3. Konfigurieren Sie das **Schalter-Widget** so, dass es mit dem Datenstrom **AwayMode(V0)** verknüpft ist. Stellen Sie **ONLABEL** und **OFFLABEL** so ein, dass sie **"weg von zu Hause"** bzw. **"zu Hause"** anzeigen. .. image:: img/09_web_dashboard_2_shadow.png :width: 600 :align: center 4. Verknüpfen Sie in den Einstellungen des **Label-Widget** dieses mit dem Datenstrom **Current Status(V1)**. .. image:: img/09_web_dashboard_3_shadow.png :width: 600 :align: center **2.5 Ein Ereignis einrichten** 1. Klicken Sie auf **Ereignisse & Benachrichtigungen** und dann auf **Ereignis erstellen**. .. image:: img/09_blynk_event_add.png :width: 600 :align: center 2. Benennen Sie das Ereignis und geben Sie dessen Code an. Wählen Sie **Warnung** für den **TYP** und geben Sie eine kurze Beschreibung für die Benachrichtigungs-E-Mail an. Stellen Sie die Benachrichtigungshäufigkeit nach Wunsch ein. .. note:: Stellen Sie sicher, dass der **EREIGNISCODE** als ``intrusion_detected`` festgelegt ist. Änderungen hier erfordern entsprechende Codeanpassungen. .. image:: img/09_event_1_shadow.png :width: 600 :align: center 3. Gehen Sie zum Abschnitt **Benachrichtigungen**, um Benachrichtigungen zu aktivieren und E-Mail-Einstellungen zu konfigurieren. .. image:: img/09_event_2_shadow.png :width: 600 :align: center 4. Definieren Sie unter **Einstellungen**, wie häufig ein Ereignis Benachrichtigungen auslöst und legen Sie Intervalle nach Ihren Vorlieben fest. Denken Sie daran, auf **Erstellen** zu klicken, um Ihre Einstellungen zu speichern. .. image:: img/09_event_3_shadow.png :width: 600 :align: center **2.6 Vorlage speichern** 1. Vergessen Sie nicht, Ihre Änderungen an der Vorlage zu speichern. .. image:: img/09_save_template_shadow.png :width: 600 :align: center **2.7 Ein Gerät erstellen** 1. Es ist Zeit, ein neues Gerät aus der Vorlage zu erstellen. .. image:: img/09_blynk_device_new.png :width: 600 :align: center 2. Wählen Sie **Aus Vorlage** aus, um zu beginnen. .. image:: img/09_blynk_device_template.png :width: 600 :align: center 3. Wählen Sie die Vorlage **Intrusion Alert System** und klicken Sie auf **Erstellen**. .. image:: img/09_blynk_device_template2.png :width: 600 :align: center 4. Notieren Sie sich die **Vorlagen-ID**, den **Gerätenamen** und den **Authentifizierungs-Token** für die Integration Ihres ESP32. .. image:: img/09_blynk_device_code.png :width: 600 :align: center 3. Codeausführung ----------------------------- #. Bevor Sie den Code ausführen, stellen Sie sicher, dass Sie die ``Blynk``-Bibliothek über den **Library Manager** in der Arduino IDE installiert haben. .. image:: img/09_blynk_add_library.png :width: 600 :align: center #. Öffnen Sie die Datei ``iot_9_intrusion_alert_system.ino``, die sich im Verzeichnis ``esp32-starter-kit-main\c\codes\iot_9_intrusion_alert_system`` befindet. Sie können auch deren Inhalt in die Arduino IDE kopieren. .. raw:: html #. Ersetzen Sie die Platzhalter für ``BLYNK_TEMPLATE_ID``, ``BLYNK_TEMPLATE_NAME`` und ``BLYNK_AUTH_TOKEN`` mit Ihren eigenen einzigartigen IDs. .. code-block:: arduino #define BLYNK_TEMPLATE_ID "TMPxxxxxxx" #define BLYNK_TEMPLATE_NAME "Intrusion Alert System" #define BLYNK_AUTH_TOKEN "xxxxxxxxxxxxx" #. Geben Sie auch die ``ssid`` und das ``password`` Ihres WLAN-Netzwerks ein. .. code-block:: arduino char ssid[] = "your_ssid"; char pass[] = "your_password"; #. Wählen Sie das richtige Board (**ESP32 Dev Module**) und den Port, und klicken Sie dann auf den **Upload**-Button. #. Öffnen Sie den Seriellen Monitor (Baudrate auf 115200 einstellen) und warten Sie auf eine erfolgreiche Verbindungsmeldung. .. image:: img/09_blynk_upload_code.png :align: center #. Nach einer erfolgreichen Verbindung startet das Aktivieren des Schalters in Blynk die Überwachung des PIR-Moduls. Wenn eine Bewegung erkannt wird (Zustand 1), wird „Jemand ist hier!“ angezeigt und eine Warnung an Ihre E-Mail gesendet. .. image:: img/09_blynk_code_alarm.png :width: 600 :align: center 4. Code-Erklärung ----------------------------- #. **Konfiguration & Bibliotheken** Hier richten Sie die Blynk-Konstanten und Zugangsdaten ein. Sie schließen auch die notwendigen Bibliotheken für den ESP32 und Blynk ein. .. code-block:: arduino /* 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 #include #include #. **WiFi-Einrichtung** Geben Sie Ihre WLAN-Zugangsdaten ein. .. code-block:: arduino char ssid[] = "your_ssid"; char pass[] = "your_password"; #. **PIR-Sensor-Konfiguration** Legen Sie den Pin fest, an dem der PIR-Sensor angeschlossen ist, und initialisieren Sie die Zustandsvariablen. .. code-block:: arduino const int sensorPin = 14; int state = 0; int awayHomeMode = 0; BlynkTimer timer; #. **setup() Funktion** Diese Funktion initialisiert den PIR-Sensor als Eingang, richtet die serielle Kommunikation ein, verbindet sich mit WLAN und konfiguriert Blynk. - Wir verwenden ``timer.setInterval(1000L, myTimerEvent)`` um das Timer-Intervall in ``setup()`` zu setzen. Hier legen wir fest, 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 variieren. .. raw:: html
.. code-block:: arduino 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 } #. **loop() Funktion** Die loop-Funktion führt kontinuierlich Blynk und die Blynk-Timer-Funktionen aus. .. code-block:: arduino void loop() { Blynk.run(); timer.run(); } #. **Blynk-App-Interaktion** Diese Funktionen werden aufgerufen, wenn das Gerät sich mit Blynk verbindet und wenn sich der Zustand des virtuellen Pins V0 in der Blynk-App ändert. - Jedes Mal, wenn das Gerät sich mit dem Blynk-Server verbindet oder aufgrund schlechter Netzwerkbedingungen erneut verbindet, wird die Funktion ``BLYNK_CONNECTED()`` aufgerufen. Der Befehl ``Blynk.syncVirtual()`` fordert einen einzelnen virtuellen Pinwert an. Der angegebene virtuelle Pin führt einen ``BLYNK_WRITE()``-Aufruf durch. - Immer wenn sich der Wert eines virtuellen Pins auf dem BLYNK-Server ändert, wird ``BLYNK_WRITE()`` ausgelöst. .. raw:: html
.. code-block:: arduino // 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 } #. **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, "Jemand in Ihrem Haus! Bitte überprüfen!");`` um den Text eines Labels zu ändern. - Verwenden Sie ``Blynk.logEvent("intrusion_detected");``, um ein Ereignis in Blynk zu protokollieren. .. raw:: html
.. code-block:: arduino 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"); } } } **Referenz** - |link_blynk_doc| - |link_blynk_quickstart| - |link_blynk_virtualWrite| - |link_blynk_logEvent| - |link_blynk_timer_intro| - |link_blynk_syncing| - |link_blynk_write|