Table des matières:
Vidéo: Détecteur de mouvement utilisant Thingsai.io Iot Cloud Platform : 6 étapes
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Dans ce tutoriel, je vais expliquer la détection de mouvement en utilisant un capteur PIR et Esp32 avec une plate-forme cloud IOT Thingai.io
Étape 1: Composants
COMPOSANTS MATÉRIELS;
Carte de développement 1.esp32
2. Capteur PIR
3. Fils de cavalier
LOGICIEL:
1. IDE Arduino
2. Compte Thingsai.io
Étape 2: CONNEXIONS
Les connexions sont assez simples.
BROCHES PIR ------------ BROCHES ESP32
VCC------------------3V3 sur esp32
GND ------------------ GND sur esp32
SORTIE --------------------D22 sur esp32
Étape 3: CODAGE
Collez ce code dans votre IDE Arduino avec quelques mises à jour, votre capteur de mouvement donnera la sortie parfaitement.
#comprendre
#comprendre
#comprendre
nombre int=0, i, m, j, k;
entier t, t1, t2, t3;
broche int = 22;
///////////////////////////////////// TOUTES LES DÉCLARATIONS pour CLOUD ////// ///////////////////////
const char* hôte = "api.thingsai.io"; // OU hôte = devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // OU /api/v2/thingscloud2/_table/data_ac
const char* time_server = "baas.thethingscloud.com"; // c'est pour convertir l'horodatage
const int httpPort = 80;
const int httpsPort = 443;
const char* serveur = "api.thingsai.io"; // URL du serveur
horodatage du char[10];
WiFiMulti WiFiMulti;
// Utiliser la classe WiFiClient pour créer des connexions TCP
Client WiFi;
///////////////////////////////////// Fonction CALCUL TIMESTAMP ///////// //////////////////////////////
int GiveMeTimestamp()
{
délai d'attente long non signé = millis();
// Client WiFiClient;
while (client.available() == 0)
{
if (millis() - délai d'attente > 50000)
{
client.stop();
renvoie 0;
}
}
tandis que (client.available())
{
Ligne de chaîne = client.readStringUntil('\r'); //indexOf() est une fonction pour rechercher smthng, il renvoie -1 s'il n'est pas trouvé
int pos = line.indexOf("\"timestamp\""); //recherchez "\"timestamp\"" à partir du début de la réponse et copiez toutes les données après cela, ce sera votre horodatage
si (pos >= 0)
{
entier j = 0;
pour(j=0;j<10;j++)
{
horodatage[j] = ligne[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup()
{
Serial.begin(115200);
retard(10);
pinMode(pin, INPUT);
// On commence par se connecter à un réseau WiFi
WiFiMulti.addAP("nom_wifi", "mot_passe_Wifi");
Serial.println();
Serial.println();
Serial.print("Attendez le WiFi… ");
while(WiFiMulti.run() != WL_CONNECTED) {
Serial.print(".");
retard (500);
}
Serial.println("");
Serial.println("WiFi connecté");
Serial.println("Adresse IP: ");
Serial.println(WiFi.localIP());
retard (500);
}
boucle vide()
{
int analogValue = analogRead(outputpin);
{
//////////////////////////////////// ENVOYER LA REQUÊTE ET RECEVOIR LA RÉPONSE//// ///////////////////
{
bool isDetected = digitalRead(pin);
si (est détecté){
Serial.println("Présence détectée");
}
retard (500);
}
Serial.print("connexion à ");
Serial.println(hôte); // à l'envers défini: - hôte = devapi2.thethingscloud.com ou 139.59.26.117
///////////////////////////////////////////////////////////////////////////////////////////// ///////////////
Serial.println("à l'intérieur obtenir l'horodatage\n");
if (!client.connect(time_server, {
revenir; //*-*-*-*-*-*-*-*-*-*
}
client.println("GET /api/timestamp HTTP/1.1"); //Qu'est-ce que cette partie fait, je n'ai pas compris
client.println("Hôte: baas.thethingscloud.com");
client.println("Cache-Control: no-cache");
client.println("Facteur-Jeton: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp(); //il appellera la fonction qui obtiendra la réponse d'horodatage du serveur
Serial.println("horodatage reçu");
Serial.println(horodatage);
Serial.println("à l'intérieur de ThingsCloudPost");
String PostValue = "{"device_id\": 61121695839, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" +timestamp;
PostValue = PostValue +", \"data\":{"PIR\":" + pin +"}"+"}";
Serial.println(PostValue);
/* créer une instance de WiFiClientSecure */
Client WiFiClientSecure;
Serial.println("Connectez-vous au serveur via le port 443");
if (!client.connect(serveur, 443)){
Serial.println("La connexion a échoué !");
} autre {
Serial.println("Connecté au serveur !");
/* créer une requête HTTP */
client.println( POST /devices/deviceData
client.println("Hôte: api.thingsai.io");
//client.println("Connexion: fermer");
client.println("Type de contenu: application/json");
client.println("cache-control: no-cache");
client.println( Autorisation: Porteur eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTyfV6);
client.print("Contenu-Longueur: ");
client.println(PostValue.length());
client.println();
client.println(PostValue);
//////////////////////////////// L'AFFICHAGE des données sur le cloud est terminé et récupérez maintenant le formulaire de réponse cloud serveur//////////////////
Serial.print("En attente de réponse ");
while (!client.available()){
retard (50); //
Serial.print(".");
}
/* si les données sont disponibles alors recevoir et imprimer au terminal */
while (client.available()) {
char c = client.read();
Serial.write(c);
}
/* si le serveur s'est déconnecté, arrête le client */
if (!client.connected()) {
Serial.println();
Serial.println("Serveur déconnecté");javascript:;
client.stop();
}
}
Serial.println("///////////////////// LA FIN //////////////////// ");
retard(3000);
}
}
Étape 4: SORTIE
Il s'agit de la représentation graphique à barres des valeurs lues par le capteur dans la plate-forme cloud Thingsai, io,
Étape 5: Graphique
Il s'agit de la représentation graphique des valeurs du capteur. À partir du graphique ci-dessus, nous pouvons analyser l'application du capteur. Merci