Kazalo:
Video: Detektor gibanja z uporabo oblačne platforme Thingsai.io Iot: 6 korakov
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
V tej vadnici bom razložil zaznavanje gibanja s senzorjem PIR in Esp32 skupaj z oblačno platformo IOT Thingai.io
1. korak: Komponente
KOMPONENTE HARDVERA;
1. razvojni odbor esp32
2. Senzor PIR
3. Mostične žice
PROGRAMSKA OPREMA:
1. Arduino IDE
2. Račun Thingsai.io
2. korak: POVEZAVE
Povezave so mirne in preproste.
PIR PINS ------------ ESP32 PINS
VCC ------------------- 3V3 na esp32
GND ------------------ GND na esp32
OUT ------------------- D22 na esp32
3. korak: KODIRANJE
To kodo prilepite v svoj Arduino IDE z nekaj posodobitvami, vaš senzor gibanja bo brezhibno dal izhod.
#vključi
#vključi
#vključi
int štetje = 0, i, m, j, k;
int t, t1, t2, t3;
int pin = 22;
////////////////////////////////////////// VSE IZJAVE za OBLAK ////// //////////////////////////
const char* host = "api.thingsai.io"; // ALI gostitelj = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // ALI/api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // to je za pretvorbo časovnega žiga
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // URL strežnika
časovni žig char [10];
WiFiMulti WiFiMulti;
// Uporabite razred WiFiClient za ustvarjanje povezav TCP
Odjemalec WiFiClient;
////////////////////////////////////////// IZRAČUN TIMESTAMP funkcije //////// /////////////////////////////////
int GiveMeTimestamp ()
{
dolga časovna omejitev brez podpisa = millis ();
// odjemalec WiFiClient;
medtem ko (client.available () == 0)
{
if (millis () - časovna omejitev> 50000)
{
client.stop ();
vrnitev 0;
}
}
medtem ko (client.available ())
{
Vrstna vrstica = client.readStringUntil ('\ r'); // indexOf () je funkcija za iskanje smthng, vrne -1, če ni najdena
int pos = line.indexOf ("\" časovni žig / ""); // poiščite "\" časovni žig / "" od začetka odgovora in kopirajte vse podatke po tem, to bo vaš časovni žig
če (pos> = 0)
{
int j = 0;
za (j = 0; j <10; j ++)
{
časovni žig [j] = vrstica [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup ()
{
Serial.begin (115200);
zamuda (10);
pinMode (pin, INPUT);
// Začnemo s povezavo v omrežje WiFi
WiFiMulti.addAP ("wifi_name", "Wifi_password");
Serial.println ();
Serial.println ();
Serial.print ("Počakaj na WiFi …");
medtem ko (WiFiMulti.run ()! = WL_CONNECTED) {
Serial.print (".");
zamuda (500);
}
Serial.println ("");
Serial.println ("WiFi povezan");
Serial.println ("naslov IP:");
Serial.println (WiFi.localIP ());
zamuda (500);
}
void loop ()
{
int analogValue = analogRead (outputpin);
{
///////////////////////////////////////// POŠLJI VPRAŠANJE IN PREJMI ODGOVOR //// /////////////////////
{
bool isDetected = digitalRead (pin);
if (isDetected) {
Serial.println ("Zaznana prisotnost");
}
zamuda (500);
}
Serial.print ("povezovanje z");
Serial.println (gostitelj); // definirano navzgor:- host = devapi2.thethingscloud.com ali 139.59.26.117
//////////////////////////////////////// TIMESTAMP CODE SNIPPET ////////// /////////////////
Serial.println ("not get timestamp / n");
if (! client.connect (časovni strežnik, {
vrnitev; //*-*-*-*-*-*-*-*-*-*
}
client.println ("GET/api/časovni žig HTTP/1.1"); // Kaj počne ta del, nisem dojel
client.println ("Gostitelj: baas.thethingscloud.com");
client.println ("Nadzor predpomnilnika: brez predpomnilnika");
client.println ("Žeton poštarja: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // poklical bo funkcijo, ki bo od strežnika prejela odziv časovnega žiga
Serial.println ("prejet časovni žig");
Serial.println (časovni žig);
Serial.println ("znotraj ThingsCloudPost");
Niz PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";
PostValue = PostValue + ", \" dts / ":" + časovni žig;
PostValue = PostValue +", \" podatki / ": {" PIR / ":" +pin +"}" +"}";
Serial.println (PostValue);
/ * ustvarite primerek WiFiClientSecure */
Odjemalec WiFiClientSecure;
Serial.println ("Poveži se s strežnikom prek vrat 443");
if (! client.connect (strežnik, 443)) {
Serial.println ("Povezava ni uspela!");
} drugo {
Serial.println ("Povezano s strežnikom!");
/ * ustvari zahtevo HTTP */
client.println ( POST/devices/deviceData
client.println ("Gostitelj: api.thingsai.io");
//client.println("Connection: close ");
client.println ("Vrsta vsebine: aplikacija/json");
client.println ("nadzor predpomnilnika: brez predpomnilnika");
client.println ( Pooblastilo: prinašalec eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC22x2x7x2c7x2c7x2c7x2x7x7x7x7x7x7x7x7x7xxxxxxxxxx)
client.print ("Content-Length:");
client.println (PostValue.length ());
client.println ();
client.println (PostValue);
////////////////////////////////////// Objavljanje podatkov v oblak je končano in zdaj dobite oblak obrazca za odziv strežnik ////////////////////
Serial.print ("Čakanje na odgovor");
medtem ko (! client.available ()) {
zamuda (50); //
Serial.print (".");
}
/ * če so na voljo podatki, potem prenesite in natisnite na terminal */
medtem ko (client.available ()) {
char c = client.read ();
Serial.write (c);
}
/ * če je strežnik odklopljen, ustavite odjemalca */
if (! client.connected ()) {
Serial.println ();
Serial.println ("Strežnik odklopljen"); javascript:;
client.stop ();
}
}
Serial.println ("//////////////////////// KONEC /////////////////////// ");
zamuda (3000);
}
}
4. korak: IZHOD
To je stolpčni prikaz vrednosti, prebranih s senzorja v razdelku thingsai, io v oblaku,
5. korak: Graf
To je grafični prikaz vrednosti iz senzorja. Iz zgornjega grafa lahko analiziramo uporabo senzorja. Hvala vam