მოძრაობის დეტექტორი Thingsai.io Iot Cloud პლატფორმის გამოყენებით: 6 ნაბიჯი
მოძრაობის დეტექტორი Thingsai.io Iot Cloud პლატფორმის გამოყენებით: 6 ნაბიჯი
Anonim
მოძრაობის დეტექტორი Thingsai.io Iot Cloud პლატფორმის გამოყენებით
მოძრაობის დეტექტორი Thingsai.io Iot Cloud პლატფორმის გამოყენებით

ამ გაკვეთილში მე ვაპირებ ახსნას მოძრაობის გამოვლენის შესახებ PIR სენსორის და Esp32- ის გამოყენებით IOT ღრუბლოვანი პლატფორმის Thingai.io- სთან ერთად.

ნაბიჯი 1: კომპონენტები

კომპონენტები
კომპონენტები
კომპონენტები
კომპონენტები

HARDWARE კომპონენტები;

1.esp32 განვითარების საბჭო

2. PIR სენსორი

3. ჯუმბერის მავთულები

პროგრამული უზრუნველყოფა:

1. Arduino IDE

2. Thingsai.io ანგარიში

ნაბიჯი 2: კავშირები

კავშირები
კავშირები

კავშირები მშვიდი მარტივია.

PIR PINS ------------ ESP32 PINS

VCC ------------------- 3V3 esp32- ზე

GND ------------------ GND esp32- ზე

OUT ------------------- D22 esp32- ზე

ნაბიჯი 3: კოდირება

ჩასვით ეს კოდი თქვენს Arduino IDE- ში გარკვეული განახლებით, თქვენი მოძრაობის სენსორი შესანიშნავად მისცემს გამომავალს.

#ჩართეთ

#ჩართეთ

#ჩართეთ

int რაოდენობა = 0, i, m, j, k;

int t, t1, t2, t3;

int pin = 22;

//////////////////////////////////////// ყველა დეკლარაცია ღრუბლისთვის ////// //////////////////////////

const char* host = "api.thingsai.io"; // ან მასპინძელი = devapi2.thethingscloud.com

const char* post_url = "/devices/deviceData"; // OR/api/v2/thingscloud2/_table/data_ac

const char* time_server = "baas.thethingscloud.com"; // ეს არის დროის ნიშნულის გარდაქმნა

const int httpPort = 80;

const int httpsPort = 443;

const char* სერვერი = "api.thingsai.io"; // სერვერის URL

char დროის ნიშნული [10];

WiFiMulti WiFiMulti;

// გამოიყენეთ WiFiClient კლასი TCP კავშირების შესაქმნელად

WiFiClient კლიენტი;

//////////////////////////////////////// TIMESTAMP კალკულაციის ფუნქცია ///////// /////////////////////////////////

int GiveMeTimestamp ()

{

ხელმოუწერელი ხანგრძლივი ვადა = მილი ();

// WiFiClient კლიენტი;

while (client.available () == 0)

{

თუ (მილილი () - დროის გასვლა> 50000)

{

client.stop ();

დაბრუნება 0;

}

}

ხოლო (client.available ())

{

სიმებიანი ხაზი = client.readStringUntil ('\ r'); // indexOf () არის smthng- ის ძებნის ფუნქცია, ის აბრუნებს -1 თუ არ არის ნაპოვნი

int pos = line.indexOf ("\" დროის ნიშნული / ""); // მოძებნეთ "\" დროის ნიშნული / "" პასუხის დასაწყისიდან და დააკოპირეთ ყველა მონაცემი ამის შემდეგ, ეს იქნება თქვენი დროის ნიშნული

თუ (pos> = 0)

{

int j = 0;

for (j = 0; j <10; j ++)

{

დროის ნიშნული [j] = ხაზი [pos + 12 + j];

}

}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////

ბათილად დაყენება ()

{

Serial.begin (115200);

დაგვიანება (10);

pinMode (pin, INPUT);

// ჩვენ ვიწყებთ WiFi ქსელთან დაკავშირებას

WiFiMulti.addAP ("wifi_name", "Wifi_password");

Serial.println ();

Serial.println ();

Serial.print ("დაელოდეთ WiFi …");

ხოლო (WiFiMulti.run ()! = WL_CONNECTED) {

Serial.print (".");

დაგვიანება (500);

}

Serial.println ("");

Serial.println ("WiFi დაკავშირებულია");

Serial.println ("IP მისამართი:");

Serial.println (WiFi.localIP ());

დაგვიანება (500);

}

ბათილი მარყუჟი ()

{

int analogValue = analogRead (outputpin);

{

//////////////////////////////////////// გაუგზავნეთ შეკითხვა და მიიღეთ პასუხი //// /////////////////////

{

bool isDetected = digitalRead (პინი);

თუ (აღმოჩენილია) {

Serial.println ("გამოვლენილია ყოფნა");

}

დაგვიანება (500);

}

Serial.print ("დაკავშირება");

Serial.println (მასპინძელი); // განსაზღვრული თავდაყირა:- მასპინძელი = devapi2.thethingscloud.com ან 139.59.26.117

////////////////////////////////////// TIMESTAMP CODE SNIPPET /////////// //////////////////

Serial.println ("შიგნით მიიღეთ დროის ნიშნული / n");

თუ (! client.connect (time_server, {

დაბრუნების; //*-*-*-*-*-*-*-*-*-*-*

}

client.println ("GET/api/timestamp HTTP/1.1"); // რას აკეთებს ეს ნაწილი, მე ვერ გავიგე

client.println ("მასპინძელი: baas.thethingscloud.com");

client.println ("ქეში-კონტროლი: არა-ქეში");

client.println ("ფოსტალიონი-ჟეტონი: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

client.println ();

GiveMeTimestamp (); // ის დაურეკავს იმ ფუნქციას, რომელიც მიიღებს სერვერის დროის ნიშნულს

Serial.println ("მიღებულია დროის ნიშნული");

Serial.println (დროის ნიშნული);

Serial.println ("ThingsCloudPost შიგნით");

String PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";

PostValue = PostValue + ", \" dts / ":" + დროის ნიშნული;

PostValue = PostValue +", \" data / ": {" PIR / ":" +pin +"}" +"}";

Serial.println (PostValue);

/ * შექმენით WiFiClientSecure მაგალითი */

WiFiClientSecure კლიენტი;

Serial.println ("სერვერთან დაკავშირება 443 პორტის საშუალებით");

if (! client.connect (სერვერი, 443)) {

Serial.println ("კავშირი ვერ მოხერხდა!");

} სხვა {

Serial.println ("დაკავშირებულია სერვერთან!");

/ * შექმენით HTTP მოთხოვნა */

client.println ( POST/devices/deviceData

client.println ("მასპინძელი: api.thingsai.io");

//client.println(" კავშირი: დახურვა ");

client.println ("შინაარსი-ტიპი: პროგრამა/json");

client.println ("ქეში-კონტროლი: არა-ქეში");

client.println ("ავტორიზაცია: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6_m9tdW5AG7ajfVlY");

client.print ("შინაარსი-სიგრძე:");

client.println (PostValue.length ());

client.println ();

client.println (PostValue);

////////////////////////////////// მონაცემების განთავსება ღრუბელში დასრულებულია და ახლა მიიღეთ საპასუხო ფორმა ღრუბელში სერვერი ///////////////////

Serial.print ("ელოდება პასუხს");

ხოლო (! client.available ()) {

დაგვიანება (50); //

Serial.print (".");

}

/ * თუ მონაცემები ხელმისაწვდომია, მიიღეთ და დაბეჭდეთ ტერმინალში */

while (client.available ()) {

char c = client.read ();

სერიული. დაწერეთ (გ);

}

/ * თუ სერვერი გათიშულია, გააჩერეთ კლიენტი */

თუ (! client.connected ()) {

Serial.println ();

Serial.println ("სერვერი გათიშულია"); javascript:;

client.stop ();

}

}

Serial.println ("///////////////////// END //////////////////// ");

დაგვიანება (3000);

}

}

ნაბიჯი 4: გამოსავალი

ამონაწერი
ამონაწერი

ეს არის სენსორიდან წაკითხული მნიშვნელობების სვეტოგრაფიული გრაფიკა რამის, ღრუბლის პლატფორმაზე,

ნაბიჯი 5: გრაფიკი

გრაფიკი
გრაფიკი

ეს არის მნიშვნელობების გრაფიკული წარმოდგენა სენსორიდან. ზემოთ მოყვანილი გრაფიკიდან შეგვიძლია გავაანალიზოთ სენსორის გამოყენება. Გმადლობთ

გირჩევთ: