Sommario:
- Passaggio 1: componenti
- Fase 2: CONNESSIONI
- Passaggio 3: CODIFICA
- Fase 4: USCITA
- Passaggio 5: grafico
- Passaggio 6: ecco un video di breve spiegazione
Video: Rilevatore di movimento utilizzando la piattaforma Iot Cloud Thingsai.io: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
In questo tutorial spiegherò il rilevamento del movimento utilizzando un sensore PIR e Esp32 insieme a una piattaforma cloud IOT Thingai.io
Passaggio 1: componenti
COMPONENTI HARDWARE;
Scheda di sviluppo 1.esp32
2. Sensore PIR
3. Cavi dei ponticelli
SOFTWARE:
1. Arduino IDE
2. Account Thingsai.io
Fase 2: CONNESSIONI
I collegamenti sono abbastanza semplici.
PIN PIR ------------ PIN ESP32
VCC--------------------3V3 su esp32
GND------------------GND su esp32
OUT-------------------D22 su esp32
Passaggio 3: CODIFICA
Incolla questo codice nel tuo IDE Arduino con qualche aggiornamento, il tuo sensore di movimento fornirà l'output in modo impeccabile.
#includere
#includere
#includere
int conteggio=0, i, m, j, k;
int t, t1, t2, t3;
int pin = 22;
//////////////////////////////////////// TUTTE LE DICHIARAZIONI per CLOUD ////// ////////////////////////
const char* host = "api.thingsai.io"; // OPPURE host = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // OPPURE /api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; //questo serve per convertire il timestamp
const int httpPort = 80;
const int httpsPort = 443;
const char* server = "api.thingsai.io"; // URL del server
char timestamp[10];
WiFi Multi WiFi Multi;
// Usa la classe WiFiClient per creare connessioni TCP
client WiFi Client;
/////////////////////////////////////// Funzione CALCOLO ORA//////// ///////////////////////////////
int GiveMeTimestamp()
{
timeout lungo senza segno = millis();
//client WiFiClient;
while (client.disponibile() == 0)
{
if (millis() - timeout > 50000)
{
cliente.stop();
restituisce 0;
}
}
mentre (client.disponibile())
{
Stringa riga = client.readStringUntil('\r'); //indexOf() è una funzione per cercare smthng, restituisce -1 se non trovata
int pos = line.indexOf("\"timestamp\""); //cerca "\"timestamp\"" dall'inizio della risposta ottenuta e copia tutti i dati dopo, sarà il tuo timestamp
se (pos >= 0)
{
intj = 0;
for(j=0;j<10;j++)
{
timestamp[j] = riga[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
configurazione nulla()
{
Serial.begin(115200);
ritardo(10);
pinMode(pin, INGRESSO);
// Iniziamo connettendoci a una rete WiFi
WiFiMulti.addAP("nome_wifi", "password_Wifi");
Serial.println();
Serial.println();
Serial.print("Attendi WiFi… ");
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
ritardo (500);
}
Serial.println("");
Serial.println("WiFi connesso");
Serial.println("Indirizzo IP: ");
Serial.println(WiFi.localIP());
ritardo (500);
}
ciclo vuoto()
{
int AnalogValue = analogRead(outputpin);
{
////////////////////////////////////// INVIARE LA DOMANDA E RICEVERE LA RISPOSTA//// ///////////////////
{
bool isDetected = digitalRead(pin);
if(isDetected){
Serial.println("Presenza rilevata");
}
ritardo (500);
}
Serial.print("connessione a ");
Serial.println(host); // rialzo definito: - host = devapi2.thethingscloud.com o 139.59.26.117
//////////////////////////////////// SNIPPET DEL CODICE TIMESTAMP ////////// ///////////////
Serial.println("inside ottieni timestamp\n");
if (!client.connect(time_server, {
Restituzione; //*-*-*-*-*-*-*-*-*-*
}
client.println("OTTIENI /api/timestamp HTTP/1.1"); //Cosa sta facendo questa parte, non l'ho capito
client.println("Host: baas.thethingscloud.com");
client.println("Cache-Control: no-cache");
client.println("Token postino: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp(); // chiamerà la funzione che otterrà la risposta del timestamp dal server
Serial.println("timestamp ricevuto");
Serial.println(timestamp);
Serial.println("dentro ThingsCloudPost");
String PostValue = "{"device_id\": 61121695839, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" + timestamp;
PostValue = PostValue +", \"data\":{"PIR\":" + pin +"}"+"}";
Serial.println(PostValue);
/* crea un'istanza di WiFiClientSecure */
client WiFiClientSecure;
Serial.println("Connetti al server tramite la porta 443");
if (!client.connect(server, 443)){
Serial.println("Connessione fallita!");
} altro {
Serial.println("Connesso al server!");
/* crea una richiesta HTTP */
client.println( POST /devices/deviceData
client.println("Host: api.thingsai.io");
//client.println("Connessione: chiudi");
client.println("Tipo di contenuto: application/json");
client.println("cache-control: no-cache");
client.println( Autorizzazione: Portatore eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlkXNqC2PNTy);
client.print("Lunghezza contenuto: ");
client.println(PostValue.length());
client.println();
client.println(PostValue);
/////////////////////////////////POSTARE i dati sul cloud è fatto e ora ottieni il modulo di risposta cloud server//////////////////
Serial.print("In attesa di risposta");
mentre (!client.available()){
ritardo(50); //
Serial.print(".");
}
/* se i dati sono disponibili, riceve e stampa su Terminale */
mentre (client.disponibile()) {
char c = client.read();
Serial.write(c);
}
/* se il server si è disconnesso, ferma il client */
if (!client.connected()) {
Serial.println();
Serial.println("Server disconnesso");javascript:;
cliente.stop();
}
}
Serial.println("////////////////////// LA FINE ///////////////////// ");
ritardo (3000);
}
}
Fase 4: USCITA
Questa è la rappresentazione del grafico a barre dei valori letti dal sensore nella piattaforma thingsai, io cloud,
Passaggio 5: grafico
Questa è la rappresentazione grafica dei valori del sensore. Dal grafico sopra possiamo analizzare l'applicazione del sensore. Grazie
Consigliato:
Monitoraggio della temperatura e dell'umidità DHT utilizzando ESP8266 e la piattaforma IoT AskSensors: 8 passaggi
Monitoraggio della temperatura e dell'umidità DHT utilizzando ESP8266 e la piattaforma IoT AskSensors: in una precedente istruzione, ho presentato una guida passo passo per iniziare con il nodeMCU ESP8266 e la piattaforma IoT AskSensors. In questo tutorial, sto collegando un sensore DHT11 al nodo MCU. Il DHT11 è un sensore di temperatura e umidità comunemente usato
Piattaforma IoT di base con RaspberryPi, WIZ850io: Driver del dispositivo della piattaforma: 5 passaggi (con immagini)
Piattaforma IoT di base con RaspberryPi, WIZ850io: Driver del dispositivo della piattaforma: conosco la piattaforma RaspberryPi per IoT. Recentemente WIZ850io è stato annunciato da WIZnet. Quindi ho implementato un'applicazione RaspberryPi tramite la modifica del SW Ethernet perché posso gestire facilmente un codice sorgente. Puoi testare Platform Device Driver tramite RaspberryPi
Rilevatore di movimento utilizzando NodeMCU: 5 passaggi
Rilevatore di movimento utilizzando NodeMCU: In questo progetto, utilizzando semplicemente un sensore di movimento è possibile rilevare la presenza di qualsiasi essere umano o animale. E dalla piattaforma chiamata thingsio puoi monitorare la data e l'ora in cui è stata rilevata la presenza
Come realizzare un sistema di automazione domestica Firebase utilizzando NodeMCU - nella piattaforma IOT: 14 passaggi
Come realizzare un sistema di automazione domestica Firebase utilizzando NodeMCU | in piattaforma IOT: OBIETTIVO DI QUESTO PROGETTOQuesto progetto mira a sviluppare un sistema di automazione domestica che offra all'utente il controllo completo su tutti i dispositivi controllabili da remoto della sua casa utilizzando l'app Android IOT. Esistono molti server e piattaforme online di terze parti a
Rilevatore di fumo IOT: aggiorna il rilevatore di fumo esistente con IOT: 6 passaggi (con immagini)
Rilevatore di fumo IOT: aggiorna il rilevatore di fumo esistente con IOT: elenco dei contributori, Inventore: Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Supervisore: Dr Chia Kim Seng Dipartimento di ingegneria meccatronica e robotica, Facoltà di ingegneria elettrica ed elettronica, Universiti Tun Hussein Onn Malaysia.Distribuzione