Detector de movimiento con la plataforma en la nube Thingsai.io Iot: 6 pasos
Detector de movimiento con la plataforma en la nube Thingsai.io Iot: 6 pasos
Anonim
Detector de movimiento con la plataforma en la nube Thingsai.io Iot
Detector de movimiento con la plataforma en la nube Thingsai.io Iot

En este tutorial voy a explicar sobre la detección de movimiento mediante el uso de un sensor PIR y Esp32 junto con una plataforma en la nube IOT Thingai.io

Paso 1: componentes

Componentes
Componentes
Componentes
Componentes

COMPONENTES DE HARDWARE;

Placa de desarrollo 1.esp32

2. Sensor PIR

3. Cables de puente

SOFTWARE:

1. IDE de Arduino

2. Cuenta Thingsai.io

Paso 2: CONEXIONES

CONEXIONES
CONEXIONES

Las conexiones son bastante simples.

PINES PIR ------------ PINES ESP32

VCC ------------------- 3V3 en esp32

GND ------------------ GND en esp32

FUERA ------------------- D22 en esp32

Paso 3: CODIFICACIÓN

Pegue este código en su Arduino IDE con alguna actualización, su sensor de movimiento dará la salida sin problemas.

#incluir

#incluir

#incluir

int cuenta = 0, i, m, j, k;

int t, t1, t2, t3;

int pin = 22;

//////////////////////////////////////// TODAS LAS DECLARACIONES para NUBE ////// //////////////////////////

const char * host = "api.thingsai.io"; // O host = devapi2.thethingscloud.com

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

const char * time_server = "baas.thethingscloud.com"; // esto es para convertir la marca de tiempo

const int httpPort = 80;

const int httpsPort = 443;

const char * server = "api.thingsai.io"; // URL del servidor

marca de tiempo char [10];

WiFiMulti WiFiMulti;

// Usa la clase WiFiClient para crear conexiones TCP

Cliente WiFiClient;

/////////////////////////////////////// Función de CÁLCULO DE TIMESTAMP //////// /////////////////////////////////

int GiveMeTimestamp ()

{

tiempo de espera largo sin firmar = millis ();

// Cliente WiFiClient;

while (cliente disponible () == 0)

{

if (millis () - tiempo de espera> 50000)

{

client.stop ();

return 0;

}

}

while (cliente disponible ())

{

Línea de cadena = client.readStringUntil ('\ r'); // indexOf () es una función para buscar smthng, devuelve -1 si no se encuentra

int pos = line.indexOf ("\" marca de tiempo / ""); // busca "\" marca de tiempo / "" desde el principio de la respuesta obtenida y copia todos los datos después de eso, será tu marca de tiempo

si (pos> = 0)

{

int j = 0;

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

{

marca de tiempo [j] = línea [pos + 12 + j];

}

}

}

}

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

configuración vacía ()

{

Serial.begin (115200);

retraso (10);

pinMode (pin, ENTRADA);

// Empezamos por conectarnos a una red WiFi

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

Serial.println ();

Serial.println ();

Serial.print ("Esperar WiFi …");

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

Serial.print (".");

retraso (500);

}

Serial.println ("");

Serial.println ("WiFi conectado");

Serial.println ("dirección IP:");

Serial.println (WiFi.localIP ());

retraso (500);

}

bucle vacío ()

{

int analogValue = analogRead (salida);

{

/////////////////////////////////////// ENVIAR LA CONSULTA Y RECIBIR LA RESPUESTA //// /////////////////////

{

bool isDetected = digitalRead (pin);

if (isDetected) {

Serial.println ("Presencia detectada");

}

retraso (500);

}

Serial.print ("conectando a");

Serial.println (host); // definido al alza: - host = devapi2.thethingscloud.com o 139.59.26.117

///////////////////////////////////// SNIPPET DE CÓDIGO DE HORA DE HORA ////////// ///////////////

Serial.println ("dentro de obtener marca de tiempo / n");

if (! client.connect (time_server, {

regreso; // * - * - * - * - * - * - * - * - * - *

}

client.println ("GET / api / timestamp HTTP / 1.1"); // ¿Qué hace esta parte? No entendí

client.println ("Anfitrión: baas.thethingscloud.com");

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

client.println ("Ficha del cartero: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

cliente.println ();

GiveMeTimestamp (); // llamará a la función que obtendrá la respuesta de la marca de tiempo del servidor

Serial.println ("marca de tiempo recibida");

Serial.println (marca de tiempo);

Serial.println ("dentro de ThingsCloudPost");

String PostValue = "{" id_dispositivo / ": 61121695839, \" id_esclavo / ": 2";

PostValue = PostValue + ", \" dts / ":" + marca de tiempo;

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

Serial.println (PostValue);

/ * crea una instancia de WiFiClientSecure * /

Cliente WiFiClientSecure;

Serial.println ("Conectarse al servidor a través del puerto 443");

if (! client.connect (servidor, 443)) {

Serial.println ("¡Conexión fallida!");

} demás {

Serial.println ("¡Conectado al servidor!");

/ * crear solicitud HTTP * /

client.println ("POST / dispositivos / deviceData HTTP / 1.1");

client.println ("Host: api.thingsai.io");

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

client.println ("Tipo de contenido: aplicación / json");

client.println ("control de caché: sin caché");

client.println ("Autorización: Portador eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNAG7a2jWTk6")

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

client.println (PostValue.length ());

cliente.println ();

client.println (PostValue);

//////////////////////////////////// LA PUBLICACIÓN de los datos en la nube está lista y ahora obtiene el formulario de respuesta en la nube. servidor//////////////////

Serial.print ("Esperando respuesta");

while (! client.available ()) {

retraso (50); //

Serial.print (".");

}

/ * si hay datos disponibles, recibirlos e imprimirlos en la Terminal * /

while (client.available ()) {

char c = cliente.read ();

Serial.write (c);

}

/ * si el servidor se desconectó, detenga el cliente * /

if (! client.connected ()) {

Serial.println ();

Serial.println ("Servidor desconectado"); javascript:;

client.stop ();

}

}

Serial.println ("////////////////////// EL FIN /////////////////////// ");

retraso (3000);

}

}

Paso 4: SALIDA

PRODUCCIÓN
PRODUCCIÓN

Esta es la representación del gráfico de barras de los valores leídos del sensor en la plataforma en la nube thingsai, io,

Paso 5: Gráfico

Grafico
Grafico

Esta es la representación gráfica de los valores del sensor. Del gráfico anterior podemos analizar la aplicación del sensor. Gracias

Recomendado: