Índice:
Vídeo: Detector de movimento usando Thingsai.io Iot Cloud Platform: 6 etapas
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Neste tutorial, vou explicar sobre a detecção de movimento usando um sensor PIR e Esp32 junto com uma plataforma de nuvem IOT Thingai.io
Etapa 1: Componentes
COMPONENTES DE HARDWARE;
1.esp32 Conselho de Desenvolvimento
2. Sensor PIR
3. Fios de ligação
PROGRAMAS:
1. Arduino IDE
2. Conta Thingsai.io
Etapa 2: CONEXÕES
As conexões são bastante simples.
PINOS PIR ------------ PINOS ESP32
VCC ------------------- 3V3 em esp32
GND ------------------ GND em esp32
OUT ------------------- D22 em esp32
Etapa 3: CODIFICAÇÃO
Cole este código em seu IDE Arduino com alguma atualização, seu sensor de movimento dará a saída perfeita.
#incluir
#incluir
#incluir
contagem interna = 0, i, m, j, k;
int t, t1, t2, t3;
pino interno = 22;
//////////////////////////////////////////// TODAS AS DECLARAÇÕES para CLOUD ////// //////////////////////////
const char * host = "api.thingsai.io"; // OR host = devapi2.thethingscloud.com
const char * post_url = "/ devices / deviceData"; // OU / api / v2 / thingscloud2 / _table / data_ac
const char * time_server = "baas.thethingscloud.com"; // isso é para converter o carimbo de data / hora
const int httpPort = 80;
const int httpsPort = 443;
const char * server = "api.thingsai.io"; // URL do servidor
carimbo de data / hora char [10];
WiFiMulti WiFiMulti;
// Use a classe WiFiClient para criar conexões TCP
Cliente WiFiClient;
/////////////////////////////////////////// TIMESTAMP CALCULATION function //////// ///////////////////////////////////
int GiveMeTimestamp ()
{
tempo limite longo sem sinal = milis ();
// cliente WiFiClient;
enquanto (cliente.disponível () == 0)
{
if (milis () - tempo limite> 50000)
{
client.stop ();
return 0;
}
}
enquanto (cliente.disponível ())
{
String line = client.readStringUntil ('\ r'); // indexOf () é uma função para pesquisar smthng, ele retorna -1 se não for encontrado
int pos = line.indexOf ("\" timestamp / ""); // procure por "\" carimbo de data / hora / "" do início da resposta obtida e copie todos os dados depois disso, será seu carimbo de data / hora
if (pos> = 0)
{
int j = 0;
para (j = 0; j <10; j ++)
{
carimbo de data / hora [j] = linha [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup ()
{
Serial.begin (115200);
atraso (10);
pinMode (pin, INPUT);
// Começamos nos conectando a uma rede WiFi
WiFiMulti.addAP ("wifi_name", "Wifi_password");
Serial.println ();
Serial.println ();
Serial.print ("Aguarde WiFi…");
while (WiFiMulti.run ()! = WL_CONNECTED) {
Serial.print (".");
atraso (500);
}
Serial.println ("");
Serial.println ("WiFi conectado");
Serial.println ("endereço IP:");
Serial.println (WiFi.localIP ());
atraso (500);
}
void loop ()
{
int analogValue = analogRead (outputpin);
{
/////////////////////////////////////////// ENVIE A CONSULTA E RECEBA A RESPOSTA //// /////////////////////
{
bool isDetected = digitalRead (pin);
if (isDetected) {
Serial.println ("Presença detectada");
}
atraso (500);
}
Serial.print ("conectando a");
Serial.println (host); // upside definido: - host = devapi2.thethingscloud.com ou 139.59.26.117
///////////////////////////////////////// TIMESTAMP CODE SNIPPET ////////// /////////////////
Serial.println ("dentro de obter carimbo de data / hora / n");
if (! client.connect (time_server, {
Retorna; // * - * - * - * - * - * - * - * - * - *
}
client.println ("GET / api / timestamp HTTP / 1.1"); // O que esta parte está fazendo, eu não entendi
client.println ("Host: baas.thethingscloud.com");
client.println ("Cache-Control: no-cache");
client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // chamará a função que obterá a resposta do carimbo de data / hora do servidor
Serial.println ("timestamp recebido");
Serial.println (carimbo de data / hora);
Serial.println ("dentro de ThingsCloudPost");
String PostValue = "{" device_id / ": 61121695839, \" slave_id / ": 2";
PostValue = PostValue + ", \" dts / ":" + carimbo de data / hora;
PostValue = PostValue + ", \" data / ": {" PIR / ":" + pin + "}" + "}";
Serial.println (PostValue);
/ * cria uma instância de WiFiClientSecure * /
Cliente WiFiClientSecure;
Serial.println ("Conectar ao servidor pela porta 443");
if (! client.connect (server, 443)) {
Serial.println ("Falha na conexão!");
} outro {
Serial.println ("Conectado ao servidor!");
/ * criar solicitação HTTP * /
client.println ("POST / devices / deviceData HTTP / 1.1");
client.println ("Host: api.thingsai.io");
//client.println("Connection: close ");
client.println ("Content-Type: application / json");
client.println ("cache-control: no-cache");
client.println ( Autorização: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaYW6OMj5cYlWNqC2Ptd);
client.print ("Content-Length:");
client.println (PostValue.length ());
client.println ();
client.println (PostValue);
//////////////////////////////////////// POSTAR os dados na nuvem está feito e agora obtenha o formulário de resposta na nuvem servidor//////////////////
Serial.print ("Aguardando resposta");
while (! client.available ()) {
atraso (50); //
Serial.print (".");
}
/ * se os dados estiverem disponíveis, receba e imprima no Terminal * /
while (client.available ()) {
char c = client.read ();
Serial.write (c);
}
/ * se o servidor for desconectado, pare o cliente * /
if (! client.connected ()) {
Serial.println ();
Serial.println ("Servidor desconectado"); javascript:;
client.stop ();
}
}
Serial.println ("////////////////////// O FIM ///////////////////////// ");
atraso (3000);
}
}
Etapa 4: SAÍDA
Esta é a representação do gráfico de barras dos valores lidos do sensor na plataforma de nuvem thingsai, io,
Etapa 5: Gráfico
Esta é a representação gráfica dos valores do sensor. A partir do gráfico acima, podemos analisar a aplicação do sensor. Obrigada