Cuprins:
Video: Detector de mișcare folosind Thingsai.io Iot Cloud Platform: 6 pași
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
În acest tutorial voi explica despre detectarea mișcării folosind un senzor PIR și Esp32 împreună cu o platformă cloud IOT Thingai.io
Pasul 1: Componente
COMPONENTE HARDWARE;
1. Comitetul de dezvoltare esp32
2. Senzor PIR
3. Sârme jumper
SOFTWARE:
1. IDE Arduino
2. Contul Thingsai.io
Pasul 2: CONEXIUNI
Conexiunile sunt liniștite simple.
PINI PIR ------------ PINI ESP32
VCC ------------------- 3V3 pe esp32
GND ------------------ GND pe esp32
OUT ------------------- D22 pe esp32
Pasul 3: CODIFICARE
Inserați acest cod în ID-ul dvs. Arduino cu o actualizare, senzorul de mișcare va oferi ieșirea fără cusur.
#include
#include
#include
int count = 0, i, m, j, k;
int t, t1, t2, t3;
pin int = 22;
////////////////////////////////////////// TOATE DECLARAȚIILE pentru CLOUD ////// //////////////////////////
const char * host = "api.thingsai.io"; // SAU gazdă = devapi2.thethingscloud.com
const char * post_url = "/ devices / deviceData"; // SAU / api / v2 / thingscloud2 / _table / data_ac
const char * time_server = "baas.thethingscloud.com"; // aceasta este pentru a converti marca de timp
const int httpPort = 80;
const int httpsPort = 443;
const char * server = "api.thingsai.io"; // Adresa URL a serverului
timestamp char [10];
WiFiMulti WiFiMulti;
// Utilizați clasa WiFiClient pentru a crea conexiuni TCP
Client WiFiClient;
///////////////////////////////////////// TIMESTAMP CALCULATION function //////// /////////////////////////////////
int GiveMeTimestamp ()
{
timeout long unsigned = millis ();
// client WiFiClient;
while (client.available () == 0)
{
if (milis () - timeout> 50000)
{
client.stop ();
retur 0;
}
}
while (client.available ())
{
String line = client.readStringUntil ('\ r'); // indexOf () este o funcție pentru a căuta smthng, returnează -1 dacă nu este găsit
int pos = line.indexOf ("\" timestamp / ""); // căutați "\" timestamp / "" de la începutul răspunsului și copiați toate datele după aceea, va fi marca dvs. de timp
if (pos> = 0)
{
int j = 0;
pentru (j = 0; j <10; j ++)
{
timestamp [j] = line [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
configurare nulă ()
{
Serial.begin (115200);
întârziere (10);
pinMode (pin, INPUT);
// Începem prin conectarea la o rețea WiFi
WiFiMulti.addAP ("wifi_name", "Wifi_password");
Serial.println ();
Serial.println ();
Serial.print („Așteptați WiFi …”);
while (WiFiMulti.run ()! = WL_CONNECTED) {
Serial.print (".");
întârziere (500);
}
Serial.println ("");
Serial.println ("WiFi conectat");
Serial.println ("adresa IP:");
Serial.println (WiFi.localIP ());
întârziere (500);
}
bucla nulă ()
{
int analogValue = analogRead (outputpin);
{
///////////////////////////////////////// TRIMITE CERERE ȘI PRIMI RĂSPUNSUL //// ////////////////////
{
bool isDetected = digitalRead (pin);
if (isDetected) {
Serial.println („Prezență detectată”);
}
întârziere (500);
}
Serial.print („conectarea la”);
Serial.println (gazdă); // definită invers: - host = devapi2.thethingscloud.com sau 139.59.26.117
///////////////////////////////////// COD TIMESTAMP SNIPPET ////////// ///////////////
Serial.println ("inside get timestamp / n");
if (! client.connect (time_server, {
întoarcere; // * - * - * - * - * - * - * - * - * - *
}
client.println ("GET / api / timestamp HTTP / 1.1"); // Ce face această parte, nu am primit
client.println („Gazdă: baas.thethingscloud.com”);
client.println ("Cache-Control: no-cache");
client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // va apela funcția care va primi răspunsul de timestamp de la server
Serial.println ("timestamp primit");
Serial.println (timestamp);
Serial.println („în interiorul ThingsCloudPost”);
String PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";
PostValue = PostValue + ", \" dts / ":" + timestamp;
PostValue = PostValue + ", \" data / ": {" PIR / ":" + pin + "}" + "}";
Serial.println (PostValue);
/ * creați o instanță WiFiClientSecure * /
Client WiFiClientSecure;
Serial.println („Conectare la server prin portul 443”);
if (! client.connect (server, 443)) {
Serial.println ("Conexiunea a eșuat!");
} altceva {
Serial.println ("Conectat la server!");
/ * creați o solicitare HTTP * /
client.println ("POST / dispozitive / dispozitivDate HTTP / 1.1");
client.println ("Gazdă: api.thingsai.io");
//client.println("Connection: close ");
client.println ("Content-Type: application / json");
client.println ("cache-control: no-cache");
client.println („Autorizație: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2KT5XA7_K6_7)
client.print („Lungime conținut:”);
client.println (PostValue.length ());
client.println ();
client.println (PostValue);
//////////////////////////////////// PUBLICAREA datelor pe cloud este gata și acum obțineți formularul de răspuns cloud Server//////////////////
Serial.print („Se așteaptă răspunsul”);
while (! client.available ()) {
întârziere (50); //
Serial.print (".");
}
/ * dacă datele sunt disponibile, atunci primiți și imprimați la Terminal * /
while (client.available ()) {
char c = client.read ();
Serial.write (c);
}
/ * dacă serverul s-a deconectat, opriți clientul * /
if (! client.connected ()) {
Serial.println ();
Serial.println („Server deconectat”); javascript:;
client.stop ();
}
}
Serial.println ("////////////////////// THE END ///////////////////// ");
întârziere (3000);
}
}
Pasul 4: IEȘIRE
Aceasta este reprezentarea grafică cu bare a valorilor citite de la senzor în platforma Things, io cloud,
Pasul 5: Grafic
Aceasta este reprezentarea grafică a valorilor de la senzor. Din graficul de mai sus putem analiza aplicația senzorului. Mulțumesc