Inhaltsverzeichnis:
Video: Bewegungsmelder mit Thingsai.io Iot Cloud-Plattform - Gunook
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In diesem Tutorial werde ich die Bewegungserkennung mit einem PIR-Sensor und Esp32 zusammen mit einer IOT-Cloud-Plattform Thingai.io erklären
Schritt 1: Komponenten
HARDWARE-KOMPONENTEN;
1.esp32-Entwicklungsboard
2. PIR-Sensor
3. Überbrückungsdrähte
SOFTWARE:
1. Arduino-IDE
2. Thingsai.io-Konto
Schritt 2: ANSCHLÜSSE
Die Anschlüsse sind recht einfach.
PIR PINS------------ESP32 PINS
VCC-------------------3V3 auf esp32
GND------------------GND auf esp32
OUT------------------D22 auf esp32
Schritt 3: CODIERUNG
Fügen Sie diesen Code mit einigen Aktualisierungen in Ihre Arduino-IDE ein. Ihr Bewegungssensor gibt die Ausgabe einwandfrei aus.
#enthalten
#enthalten
#enthalten
int count = 0, i, m, j, k;
int t, t1, t2, t3;
int-Pin = 22;
/////////////////////////////////////// ALLE ERKLÄRUNGEN für CLOUD ////// /////////////////////////
const char* host = "api.thingsai.io"; // ODER host = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // ODER /api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // dies ist zum Konvertieren des Zeitstempels
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // Server-URL
char-Zeitstempel[10];
WiFiMulti WiFiMulti;
// Verwenden Sie die WiFiClient-Klasse, um TCP-Verbindungen zu erstellen
WiFiClient-Client;
////////////////////////////////////// Funktion ZEITSTEMPELBERECHNUNG ///////// /////////////////////////////////////////////
int GiveMeTimestamp()
{
lange Zeitüberschreitung ohne Vorzeichen = millis();
// WiFiClient-Client;
while (client.verfügbar() == 0)
{
if (millis() - Zeitüberschreitung > 50000)
{
client.stop();
0 zurückgeben;
}
}
while (client.verfügbar())
{
String line = client.readStringUntil('\r'); //indexOf() ist eine Funktion, um nach smthng zu suchen, es gibt -1 zurück, wenn es nicht gefunden wird
int pos = line.indexOf("\"Zeitstempel\""); // suche nach "\"timestamp\"" vom Anfang der erhaltenen Antwort und kopiere alle Daten danach, es wird dein Zeitstempel sein
wenn (pos >= 0)
{
intj = 0;
für(j=0;j<10;j++)
{
Zeitstempel[j] = Zeile[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
Void-Setup ()
{
Serial.begin(115200);
Verzögerung(10);
PinMode (Pin, EINGANG);
// Wir beginnen mit der Verbindung mit einem WiFi-Netzwerk
WiFiMulti.addAP("wifi_name", "Wifi_password");
Serial.println();
Serial.println();
Serial.print("Warten Sie auf WLAN…");
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
Verzögerung (500);
}
Serial.println("");
Serial.println ("WiFi verbunden");
Serial.println("IP-Adresse:");
Serial.println (WiFi.localIP());
Verzögerung (500);
}
Leere Schleife ()
{
int analogValue = analogRead (Ausgangspin);
{
////////////////////////////////////// ANFRAGE SENDEN UND ANTWORT ERHALTEN//// ///////////////////
{
bool isDetected = digitalRead (pin);
wenn (wird erkannt) {
Serial.println ("Anwesenheit erkannt");
}
Verzögerung (500);
}
Serial.print ("Verbindung zu");
Serial.println (Host); // oben definiert: - host = devapi2.thethingscloud.com oder 139.59.26.117
//////////////////////////////////// TIMESTAMP CODE SNIPPET ////////// ///////////////
Serial.println("innerhalb Zeitstempel abrufen\n");
if (!client.connect(time_server, {
Rückkehr; //*-*-*-*-*-*-*-*-*-*
}
client.println("GET /api/timestamp HTTP/1.1"); // Was macht dieser Teil, ich habe es nicht verstanden?
client.println("Host: baas.thethingscloud.com");
client.println("Cache-Steuerung: kein Cache");
client.println("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp(); // es ruft die Funktion auf, die die Zeitstempelantwort vom Server erhält
Serial.println ("Zeitstempel erhalten");
Serial.println (Zeitstempel);
Serial.println ("innerhalb von ThingsCloudPost");
String PostValue = "{"device_id\": 61121695839, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" +Zeitstempel;
PostValue = PostValue +", \"data\":{"PIR\":" + Pin +"}"+"}";
Serial.println (PostValue);
/* eine Instanz von WiFiClientSecure erstellen */
WiFiClientSecure-Client;
Serial.println("Verbindung zum Server über Port 443 herstellen");
if (!client.connect(server, 443)){
Serial.println ("Verbindung fehlgeschlagen!");
} anders {
Serial.println("Mit Server verbunden!");
/* HTTP-Anfrage erstellen */
client.println( POST /devices/deviceData
client.println("Host: api.thingsai.io");
//client.println("Verbindung: schließen");
client.println("Inhaltstyp: Anwendung/json");
client.println("Cache-Steuerung: kein Cache");
client.println( Berechtigung: Inhaber eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTykXs9ajP);
client.print("Inhaltslänge: ");
client.println(PostValue.length());
client.println();
client.println (PostWert);
/////////////////////////////////POSTING der Daten in die Cloud ist abgeschlossen und jetzt erhalten Sie das Antwortformular cloud Server//////////////////
Serial.print ("Warten auf Antwort");
while (!client.verfügbar()){
Verzögerung (50); //
Serial.print(".");
}
/* wenn Daten verfügbar sind, dann empfangen und an Terminal drucken */
while (client.verfügbar()) {
char c = client.read();
Serial.write (c);
}
/* Wenn der Server getrennt wurde, stoppen Sie den Client */
if (!client.connected()) {
Serial.println();
Serial.println("Server getrennt");javascript:;
client.stop();
}
}
Serial.println("///////////////////// DAS ENDE ///////////////////// ");
Verzögerung (3000);
}
}
Schritt 4: AUSGANG
Dies ist die Balkendiagrammdarstellung der vom Sensor gelesenen Werte in der Thingsai, io Cloud-Plattform.
Schritt 5: Grafik
Dies ist die grafische Darstellung der Werte des Sensors. Aus der obigen Grafik können wir die Anwendung des Sensors analysieren. Danke schön