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!
Sicherheitssystem über IFTTT
Mit diesem Projekt erstellen wir ein Sicherheitsgerät, das einen PIR-Sensor verwendet, um Eindringlinge oder streunende Tiere, die Ihr Zuhause betreten, zu erkennen. Im Falle eines Einbruchs erhalten Sie eine E-Mail-Benachrichtigung.
Wir nutzen Webhooks als grundlegenden Dienst. Eine POST-Anfrage wird von UNO R4 an den IFTTT-Dienst gesendet.
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:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
|---|---|---|
Elite Explorer Kit |
300+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENBESCHREIBUNG |
KAUF-LINK |
|---|---|
- |
|
Verdrahtung
Schaltplan
IFTTT einrichten
IFTTT ist ein kostenloser Dienst, der verschiedene Methoden bietet, um verschiedene Datendienste miteinander zu verknüpfen.
Erstellen wir ein Applet, das auf einen Webhook (benutzerdefinierte URL) reagiert, der Daten an IFTTT sendet, welcher Ihnen dann eine E-Mail sendet.
Bitte folgen Sie den untenstehenden Schritten auf IFTTT.
Besuchen Sie IFTTT, um sich anzumelden oder ein Konto zu erstellen.
Klicken Sie auf Create.
Fügen Sie ein If This Ereignis hinzu.
Suchen Sie nach Webhooks.
Wählen Sie Receive a web request.
Geben Sie den Ereignisnamen ein (z. B. SecurityWarning) und klicken Sie auf Create trigger.
Fügen Sie ein Then That Ereignis hinzu.
Suchen Sie nach E-Mail.
Wählen Sie Send me an email.
Geben Sie den Subject und den Body ein, dann klicken Sie auf Create action.
Klicken Sie auf Continue um die Einrichtung abzuschließen.
Passen Sie nach Bedarf den Titelnamen an.
Sie werden automatisch zur Seite mit den Applet-Details weitergeleitet, wo Sie sehen können, dass das Applet derzeit verbunden ist und Sie den Schalter zum Aktivieren/Deaktivieren umlegen können.
Nachdem wir das IFTTT-Applet erstellt haben, benötigen wir auch den Webhooks-Schlüssel, den Sie von Webhooks Settings erhalten können, damit Ihr Gerät auf IFTTT zugreifen kann.
Kopieren Sie den Webhooks-Schlüssel in „arduino_secrets.h“ und tragen Sie Ihr SSID und Passwort ein.
#define SECRET_SSID "your_ssid" // your network SSID (name) #define SECRET_PASS "your_password" // your network password (used for WPA, or as a key for WEP) #define WEBHOOKS_KEY "your_key"
Den Code ausführen
Bemerkung
Sie können die Datei
03_ifttt_pir.inodirekt im Pfadelite-explorer-kit-main\iot_project\03_ifttt_piröffnen.Oder kopieren Sie diesen Code in die Arduino IDE.
Bemerkung
Im Code werden SSID und Passwort in arduino_secrets.h gespeichert. Bevor Sie dieses Beispiel hochladen, müssen Sie sie mit Ihren eigenen WLAN-Anmeldeinformationen ändern. Außerdem sollten Sie aus Sicherheitsgründen diese Informationen vertraulich halten, wenn Sie den Code teilen oder speichern.
Warnung
Um zu verhindern, dass Ihr Postfach überflutet wird, debuggen Sie bitte den PIR-Bewegungssensormodul vorher, bevor Sie den Code für dieses Projekt ausführen.
#define SECRET_SSID "your_ssid" // your network SSID (name)
#define SECRET_PASS "your_password" // your network password (use for WPA, or use as key for WEP)
#define WEBHOOKS_KEY "your_key"
1/*
2 This code is designed to connect an Arduino Uno R4 WiFi board to the internet and detect
3 motion using a PIR sensor. Upon detecting motion, it sends an HTTP GET request
4 to the IFTTT web service to trigger an event named "SecurityWarning". The code handles
5 WiFi connection setup, motion detection, server communication, and provides feedback via
6 the serial monitor.
7
8 Board: Arduino Uno R4 WiFi
9 Component: PIR Motion Sensor Module
10*/
11
12#include "WiFiS3.h" // Include the WiFiS3 library for internet connectivity
13#include "arduino_secrets.h" // Include the file containing Wi-Fi credentials
14
15// Wi-Fi credentials are stored in arduino_secrets.h
16char ssid[] = SECRET_SSID;
17char pass[] = SECRET_PASS;
18
19int status = WL_IDLE_STATUS;
20WiFiClient client;
21
22// IFTTT server information and event name
23char server[] = "maker.ifttt.com";
24char event[] = "SecurityWarning";
25String webRequestURL = "/trigger/" + String(event) + "/with/key/" + String(WEBHOOKS_KEY);
26
27const int pirPin = 2; // PIR sensor is connected to digital pin 2
28bool motionDetected = false; // Variable to track motion detection
29
30void setup() {
31 Serial.begin(9600);
32 while (!Serial) {
33 ;
34 }
35
36 // Check the status of the WiFi module
37 if (WiFi.status() == WL_NO_MODULE) {
38 Serial.println("Communication with WiFi module failed!");
39 while (1)
40 ; // Infinite loop to halt further execution
41 }
42
43 // Check if the WiFi firmware is up to date
44 String fv = WiFi.firmwareVersion();
45 if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
46 Serial.println("Please upgrade the firmware");
47 }
48
49 // Attempt to connect to the Wi-Fi network
50 while (status != WL_CONNECTED) {
51 Serial.print("Attempting to connect to SSID: ");
52 Serial.println(ssid);
53 status = WiFi.begin(ssid, pass);
54 }
55 printWifiStatus(); // Print the status of the WiFi connection
56
57 pinMode(pirPin, INPUT);
58}
59
60void loop() {
61 readResponse(); // Read and print server response if available
62
63 // Check for motion using PIR sensor
64 if (digitalRead(pirPin) == HIGH) {
65 if (!motionDetected) {
66 Serial.println("Motion detected!");
67 triggerIFTTTEvent(); // Trigger IFTTT notification
68 motionDetected = true;
69 }
70 } else {
71 motionDetected = false;
72 }
73}
74
75void readResponse() {
76 // Read incoming data from the WiFi connection
77 uint32_t received_data_num = 0;
78 while (client.available()) {
79 char c = client.read();
80 Serial.print(c);
81 received_data_num++;
82 if (received_data_num % 80 == 0) {
83 Serial.println();
84 }
85 }
86}
87
88void triggerIFTTTEvent() {
89 client.stop(); // Terminate any existing connections
90
91 // Attempt to connect to the IFTTT server
92 if (client.connect(server, 80)) { // If the connection is successful
93 Serial.println("connecting...");
94 // Construct and send the HTTP GET request
95 client.println("GET " + webRequestURL + " HTTP/1.1");
96 client.println("Host: maker.ifttt.com");
97 client.println("User-Agent: ArduinoWiFi/1.1");
98 client.println("Connection: close");
99 client.println(); // End of HTTP request
100 } else {
101 Serial.println("connection failed"); // Notify if the connection fails
102 }
103}
104
105void printWifiStatus() {
106 // Print the current Wi-Fi status to the serial monitor
107 Serial.print("SSID: ");
108 Serial.println(WiFi.SSID());
109
110 IPAddress ip = WiFi.localIP();
111 Serial.print("IP Address: ");
112 Serial.println(ip);
113
114 long rssi = WiFi.RSSI();
115 Serial.print("Signal Strength (RSSI):");
116 Serial.print(rssi);
117 Serial.println(" dBm");
118}
Wie funktioniert des?
Einbinden der erforderlichen Bibliotheken und Header-Dateien:
"WiFiS3.h": Wird verwendet, um Wi-Fi-Verbindungen zu verwalten."arduino_secrets.h": Enthält den Namen und das Passwort des Wi-Fi-Netzwerks, um sensible Informationen zu schützen.
Definition einiger globaler Variablen und Konstanten:
ssid: Name des Wi-Fi-Netzwerks.pass: Wi-Fi-Netzwerkpasswort.status: Status der Wi-Fi-Verbindung.client: Client zur Kommunikation mit dem Wi-Fi-Server.server: Adresse des IFTTT Webhook-Servers.event: Name des IFTTT Webhook-Ereignisses.webRequestURL: Konstruierte URL für das Senden von HTTP-Anfragen, einschließlich des Webhook-Ereignisnamens und -schlüssels.pirPin: Digitaler Pin, an den der PIR-Sensor angeschlossen ist.motionDetected: Flag-Variable zur Verfolgung der Bewegungserkennung.
setup()Funktion:Initialisiert die serielle Kommunikation.
Überprüft das Vorhandensein des Wi-Fi-Moduls und gibt dessen Firmware-Version aus.
Versucht, eine Verbindung zum Wi-Fi-Netzwerk herzustellen, mit Wiederholungen bei Misserfolg.
Setzt den an den PIR-Sensor angeschlossenen Pin auf Eingabemodus.
readResponse()Funktion:Liest HTTP-Antwortdaten vom IFTTT-Server und gibt sie auf der seriellen Konsole aus.
loop()Funktion:Ruft die Funktion
readResponse()auf, um HTTP-Antwortdaten zu lesen.- Überprüft die Bewegung mithilfe des PIR-Sensors. Wenn eine Bewegung erkannt wird und zuvor nicht erkannt wurde:
Gibt „Motion detected!“ auf der Konsole aus.
Ruft die Funktion
triggerIFTTTEvent()auf, um eine HTTP-Anfrage an den IFTTT-Server zu senden und das Webhook-Ereignis auszulösen.Setzt das Flag
motionDetectedauftrue, um anzuzeigen, dass eine Bewegung erkannt wurde.
Wenn keine Bewegung erkannt wird, setzt das Flag
motionDetectedauffalse.
triggerIFTTTEvent()Funktion:Stellt eine Verbindung mit dem IFTTT-Server her.
Sendet eine HTTP-GET-Anfrage, einschließlich der URL des Webhook-Ereignisses und anderer HTTP-Header.
printWifiStatus()Funktion:Gibt Informationen über das verbundene Wi-Fi-Netzwerk aus, einschließlich SSID, IP-Adresse und Signalstärke (RSSI) auf der seriellen Konsole.