Съдържание:

Детектор на движение, използващ облачната платформа Thingsai.io Iot: 6 стъпки
Детектор на движение, използващ облачната платформа Thingsai.io Iot: 6 стъпки

Видео: Детектор на движение, използващ облачната платформа Thingsai.io Iot: 6 стъпки

Видео: Детектор на движение, използващ облачната платформа Thingsai.io Iot: 6 стъпки
Видео: Камера-ЛАМПА со слежением и определением человека. 2024, Ноември
Anonim
Детектор на движение, използващ облачната платформа Thingsai.io Iot
Детектор на движение, използващ облачната платформа Thingsai.io Iot

В този урок ще обясня за откриването на движение с помощта на PIR сензор и Esp32 заедно с облачна платформа IOT Thingai.io

Стъпка 1: Компоненти

Компоненти
Компоненти
Компоненти
Компоненти

ХАРАКТЕРИСТИЧНИ КОМПОНЕНТИ;

1. esp32 Съвет за развитие

2. PIR сензор

3. Кабелни проводници

СОФТУЕР:

1. IDE на Arduino

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;

////////////////////////////////////////// ВСИЧКИ ДЕКЛАРАЦИИ за CLOUD ////// //////////////////////////

const char* host = "api.thingsai.io"; // ИЛИ хост = devapi2.thethingscloud.com

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

const char* time_server = "baas.thethingscloud.com"; // това е за преобразуване на времева отметка

const int httpPort = 80;

const int httpsPort = 443;

const char* server = "api.thingsai.io"; // URL адрес на сървъра

char времева марка [10];

WiFiMulti WiFiMulti;

// Използвайте WiFiClient клас за създаване на TCP връзки

Клиент WiFiClient;

/////////////////////////////////////////// TIMESTAMP CALCULATION функция //////// /////////////////////////////////

int GiveMeTimestamp ()

{

без подпис дълъг таймаут = millis ();

// WiFiClient клиент;

while (client.available () == 0)

{

if (millis () - таймаут> 50000)

{

client.stop ();

връщане 0;

}

}

while (client.available ())

{

Низов ред = client.readStringUntil ('\ r'); // indexOf () е функция за търсене на smthng, връща -1 ако не е намерен

int pos = line.indexOf ("\" времева марка / ""); // потърсете "\" timestamp / "" от началото на отговора и копирайте всички данни след това, това ще бъде вашият времеви знак

ако (pos> = 0)

{

int j = 0;

за (j = 0; j <10; j ++)

{

времева марка [j] = ред [pos + 12 + j];

}

}

}

}

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

void setup ()

{

Serial.begin (115200);

забавяне (10);

pinMode (pin, INPUT);

// Започваме със свързване към WiFi мрежа

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

Serial.println ();

Serial.println ();

Serial.print ("Изчакайте WiFi …");

while (WiFiMulti.run ()! = WL_CONNECTED) {

Serial.print (".");

забавяне (500);

}

Serial.println ("");

Serial.println ("WiFi свързан");

Serial.println ("IP адрес:");

Serial.println (WiFi.localIP ());

забавяне (500);

}

void loop ()

{

int analogValue = analogRead (изход);

{

/////////////////////////////////////////// ИЗПРАЩАЙТЕ ЗАПИТВАНЕТО И ПОЛУЧАВАЙТЕ ОТГОВОРА //// /////////////////////

{

bool isDetected = digitalRead (pin);

if (isDetected) {

Serial.println ("Открито присъствие");

}

забавяне (500);

}

Serial.print ("свързване към");

Serial.println (хост); // дефинирано нагоре:- host = devapi2.thethingscloud.com или 139.59.26.117

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

Serial.println ("вътре метка за време на получаване / n");

if (! client.connect (time_server, {

връщане; //*-*-*-*-*-*-*-*-*-*

}

client.println ("GET/api/timestamp HTTP/1.1"); // Какво прави тази част, не разбрах

client.println ("Хост: baas.thethingscloud.com");

client.println ("Cache-Control: no-cache");

client.println ("Токен на пощальон: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

client.println ();

GiveMeTimestamp (); // ще извика функцията, която ще получи отговор от времевата отметка от сървъра

Serial.println ("времева отметка получена");

Serial.println (времева отметка);

Serial.println ("вътре в ThingsCloudPost");

Низ PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";

PostValue = PostValue + ", \" dts / ":" + времева марка;

PostValue = PostValue +", \" данни / ": {" PIR / ":" +пин +"}" +"}";

Serial.println (PostValue);

/ * създайте екземпляр на WiFiClientSecure */

Клиент WiFiClientSecure;

Serial.println ("Свържете се със сървъра през порт 443");

if (! client.connect (сървър, 443)) {

Serial.println ("Връзката е неуспешна!");

} else {

Serial.println ("Свързан със сървър!");

/ * създаване на HTTP заявка */

client.println ( POST/devices/deviceData

client.println ("Хост: api.thingsai.io");

//client.println("Connection: close ");

client.println ("Тип съдържание: приложение/json");

client.println ("cache-control: no-cache");

client.println ( Упълномощаване: Приносител eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC22K2K2K7X2Ky2x6x6x6xxxxxxxxxxxxxx)

client.print ("Content-Length:");

client.println (PostValue.length ());

client.println ();

client.println (PostValue);

//////////////////////////////////// Публикуването на данните в облака е направено и сега вземете облака от формата за отговор сървър ////////////////////

Serial.print ("Изчакване на отговор");

while (! client.available ()) {

забавяне (50); //

Serial.print (".");

}

/ * ако има налични данни, тогава приемете и отпечатайте в терминал */

while (client.available ()) {

char c = client.read ();

Serial.write (c);

}

/ * ако сървърът е изключен, спрете клиента */

if (! client.connected ()) {

Serial.println ();

Serial.println ("Сървърът е изключен"); javascript:;

client.stop ();

}

}

Serial.println ("//////////////////////// КРАЙЪТ /////////////////////// ");

забавяне (3000);

}

}

Стъпка 4: ИЗХОД

ИЗХОД
ИЗХОД

Това е графично представяне на стойностите, прочетени от сензора в thingsai, io облачна платформа,

Стъпка 5: Графика

Графика
Графика

Това е графичното представяне на стойностите от сензора. От горната графика можем да анализираме приложението на сензора. Благодаря ти

Препоръчано: