Tabla de contenido:
Video: Detector de movimiento con la plataforma en la nube Thingsai.io Iot: 6 pasos
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
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 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
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
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
Esta es la representación gráfica de los valores del sensor. Del gráfico anterior podemos analizar la aplicación del sensor. Gracias