Turinys:
Video: Judesio detektorius naudojant „Thingsai.io Iot“debesies platformą: 6 žingsniai
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje pamokoje aš paaiškinsiu apie judesio aptikimą naudojant PIR jutiklį ir Esp32 kartu su IOT debesų platforma Thingai.io
1 žingsnis: komponentai
Aparatūros komponentai;
1. esp32 plėtros valdyba
2. PIR jutiklis
3. Trumpieji laidai
PROGRAMINĖ ĮRANGA:
1. „Arduino IDE“
2. „Thingsai.io“paskyra
2 žingsnis: JUNGTYS
Ryšiai yra tylūs, paprasti.
PIR PINS ------------ ESP32 PINS
VCC ------------------- 3V3 esp32
GND ------------------ GND esp32
OUT ------------------- D22 esp32
3 žingsnis: KODAVIMAS
Įklijuokite šį kodą į „Arduino IDE“, šiek tiek atnaujindami, jūsų judesio jutiklis nepriekaištingai duos išvestį.
#įtraukti
#įtraukti
#įtraukti
int skaičius = 0, i, m, j, k;
int t, t1, t2, t3;
int pin = 22;
//////////////////////////////////////////////////////////////////// VISI DEKLARACIJOS DĖMESIAMS ////// /////////////////////////
const char* host = "api.thingsai.io"; // ARBA šeimininkas = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // ARBA/api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // tai yra laiko žymos konvertavimas
const int httpPort = 80;
const int httpsPort = 443;
const char* serveris = "api.thingsai.io"; // Serverio URL
char laiko žyma [10];
WiFiMulti WiFiMulti;
// Naudokite „WiFiClient“klasę, kad sukurtumėte TCP ryšius
„WiFiClient“klientas;
////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////
int GiveMeTimestamp ()
{
unsigned long timeout = milis ();
// „WiFiClient“klientas;
tuo tarpu (client.available () == 0)
{
jei (milis () - skirtasis laikas> 50000)
{
client.stop ();
grįžti 0;
}
}
o (client.available ())
{
Eilutės eilutė = client.readStringUntil ('\ r'); // indexOf () yra funkcija ieškoti smthng, ji grąžina -1, jei nerasta
int pos = line.indexOf ("\" laiko žyma / ""); // ieškokite "\" laiko žymos / "" nuo atsakymo pradžios ir nukopijuokite visus duomenis po to, tai bus jūsų laiko žyma
jei (poz> = 0)
{
int j = 0;
(j = 0; j <10; j ++)
{
laiko žyma [j] = eilutė [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
negaliojanti sąranka ()
{
Serial.begin (115200);
vėlavimas (10);
pinMode (kaištis, Įvestis);
// Pradedame prisijungdami prie „WiFi“tinklo
„WiFiMulti.addAP“(„wifi_pavadinimas“, „Wifi_password“);
Serial.println ();
Serial.println ();
Serial.print („Palaukite„ WiFi “…“);
while (WiFiMulti.run ()! = WL_CONNECTED) {
Serijinis atspaudas (".");
vėlavimas (500);
}
Serial.println ("");
Serial.println („WiFi prijungtas“);
Serial.println ("IP adresas:");
Serial.println (WiFi.localIP ());
vėlavimas (500);
}
tuštumos kilpa ()
{
int analogValue = analogRead (outputpin);
{
///////////////////////////////// ////////////////////
{
bool isDetected = digitalRead (kaištis);
if (isDetected) {
Serial.println („Aptikta buvimas“);
}
vėlavimas (500);
}
Serial.print ("prisijungimas prie");
Serial.println (priegloba); // apibrėžta aukštyn kojomis:- šeimininkas = devapi2.thethingscloud.com arba 139.59.26.117
///////////////////////// ///////////////
Serial.println ("viduje gauti laiko žymę / n");
if (! client.connect (time_server, {
grįžti; //*-*-*-*-*-*-*-*-*-*
}
client.println ("GET/api/laiko žymė HTTP/1.1"); // Ką daro ši dalis, aš nesupratau
client.println ("Priimančioji: baas.thethingscloud.com");
client.println („Cache-Control: no-cache“);
client.println („Paštininkas-žetonas: ea3c18c6-09ba-d049-ccf3-369a22a284b8“);
klientas.println ();
GiveMeTimestamp (); // jis iškvies funkciją, kuri iš serverio gaus laiko žymės atsakymą
Serial.println ("gauta laiko žyma");
Serial.println (laiko žyma);
Serial.println ("viduje ThingsCloudPost");
Eilutė PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";
PostValue = PostValue + ", \" dts / ":" + laiko žymė;
PostValue = PostValue +", \" data / ": {" PIR / ":" +PIN +"}" +"}";
Serial.println (PostValue);
/ * sukurti „WiFiClientSecure“egzempliorių */
„WiFiClientSecure“klientas;
Serial.println („Prisijunkite prie serverio per 443 prievadą“);
if (! client.connect (serveris, 443)) {
Serial.println ("Nepavyko prisijungti!");
} Kitas {
Serial.println ("Prisijungta prie serverio!");
/ * sukurti HTTP užklausą */
client.println ( POST/devices/deviceData
client.println ("Priegloba: api.thingsai.io");
//client.println("Connection: close ");
client.println ("Turinio tipas: programa/json");
client.println ("cache-control: no-cache");
client.println ( Autorizacija: nešėjas eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqs22k2kvk
client.print ("Turinio ilgis:");
client.println (PostValue.length ());
klientas.println ();
client.println („PostValue“);
//////////////////////////////////////////////// Duomenų SKELBIMAS į debesį baigtas ir dabar gaukite atsakymo formos debesį serveris ///////////////////
Serial.print („Laukiama atsakymo“);
while (! client.available ()) {
vėlavimas (50); //
Serijinis atspaudas (".");
}
/ * jei yra duomenų, gaukite ir atsispausdinkite į terminalą */
while (client.available ()) {
char c = client.read ();
Serial.write (c);
}
/ * jei serveris atjungtas, sustabdykite klientą */
if (! client.connected ()) {
Serial.println ();
Serial.println („Serveris atjungtas“); javascript:;
client.stop ();
}
}
Serial.println ("////////////////////// PABAIGA /////////////////// ");
vėlavimas (3000);
}
}
4 žingsnis: IŠVESTIS
Tai juostų diagrama, rodanti reikšmes, nuskaitytas iš jutiklio daiktų, debesų platformoje,
5 žingsnis: grafikas
Tai grafinis jutiklio reikšmių atvaizdavimas. Iš aukščiau pateiktos diagramos galime analizuoti jutiklio taikymą. Ačiū