Fabriquez un compteur de personnes pour 30 $en utilisant un ESP8266 et un NodeMCU
Un compteur de personnes est un appareil permettant de mesurer le nombre de personnes traversant une entrée, un couloir, un coin de rue, etc. Si vous souhaitez connaître le nombre de personnes présentes dans un espace, c'est la solution idéale. Généralement utilisé dans les commerces, lors de grands événements et dans les immeubles de bureaux connectés, ce système de comptage fournit des informations précieuses sur le nombre de personnes dans un environnement et sur leurs comportements. Imaginez que vous soyez propriétaire d'un magasin : ce compteur peut vous informer du nombre de visiteurs quotidiens, des itinéraires empruntés, des points d'arrêt les plus fréquents et du temps passé par chaque personne à un endroit. Ne souhaiteriez-vous pas savoir quels produits attirent le plus l'attention ? Grâce à ces informations, un responsable marketing peut optimiser le positionnement géographique de ses produits afin d'accroître leur visibilité. Ceci, au bénéfice de vos clients et de votre chiffre d'affaires.
Ce guide vous apprendra à fabriquer votre propre compteur de personnes. Vous y trouverez également des instructions pour utiliser les données collectées via Ubidots, une plateforme d'activation d'applications.
Matériel requis
- ESP8266 NodeMCU
- Détecteur de mouvement PIR
- Fils femelles – femelles
- Étui de protection en plastique
- Câble microUSB
Câblage et boîtier
Comme vous pouvez le constater, le capteur de mouvement possède trois broches : V+, la masse et une troisième pour le signal de sortie (« 1 » = mouvement, « 0 » = environnement statique). Commencez par connecter les câbles directement aux broches de votre NodeMCU, en vous référant au tableau et au schéma ci-dessous :
| NodeMCU | Capteur PIR | NodeMCU | DIRIGÉ | |
|---|---|---|---|---|
| GND | GND | GND | GND | |
| D6 | DEHORS | D4 | VCC | |
| 3,3 V | VCC |
Le détecteur de mouvement PIR étant très sensible, j'ai utilisé un cavalier à l'arrière pour régler sa sensibilité au minimum. J'ai également peint les coins de l'objectif pour cibler une zone précise plutôt qu'une zone omnidirectionnelle. (N'hésitez pas à explorer et à innover !) Ces quelques minutes de travail supplémentaires ont permis d'obtenir l'appareil compact et convivial présenté ci-dessous.
Une fois le boîtier et l'appareil assemblés, il nous faut maintenant nous connecter à l'IDE Arduino.
Pour commencer, connectez votre NodeMCU au port de votre ordinateur à l'aide du câble micro USB
REMARQUE : Si vous ne possédez pas déjà l’ IDE Arduino , cliquez ici pour le télécharger.
1. Ouvrez l'IDE Arduino, puis sélectionnez Fichier -> Préférences. Ensuite, saisissez l'URL suivante dans le « URL supplémentaires du gestionnaire de cartes » . Vous pouvez ajouter plusieurs URL en les séparant par des virgules, si nécessaire.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
REMARQUE : Si vous utilisez un Mac , veuillez noter qu’Arduino propose des menus déroulants différents de ceux disponibles sous Windows. De plus, vous devrez installer le pilote pour pouvoir téléverser votre NodeMCU.
2. Ouvrez le Gestionnaire de cartes depuis le menu Outils -> Carte et installez la plateforme ESP8266. Pour trouver facilement le périphérique, saisissez ESP8266 dans la barre de recherche.
3.- Sélectionnez votre NodeMCU 1.0 (module ESP-12) dans Outils > Carte .
De plus, nous devons pouvoir communiquer avec le NodeMCU ; sélectionnez le port com approprié pour votre appareil.
Allez dans Outils > Port > Sélectionnez le PORT approprié pour la connexion de votre ordinateur/appareil.
De plus, pour que tout fonctionne rapidement et sans accroc, assurons-nous que la vitesse de téléchargement soit optimisée à 115 200 bits/s.
Allez dans Outils > Vitesse de chargement > 115200 :
4. Ensuite, nous devons télécharger la Ubidots MQTT ESP depuis GitHub. Pour ce faire, ouvrez la bibliothèque MQTT ESP ici , téléchargez-la en cliquant sur le bouton vert « Cloner ou télécharger » et sélectionnez « Télécharger le fichier ZIP ».
5. Retournez dans votre IDE Arduino, cliquez sur Croquis -> Inclure une bibliothèque -> Ajouter une bibliothèque .ZIP
6. Sélectionnez le fichier .ZIP d' ubidots MQTTESP , puis cliquez sur « Accepter » ou « Choisir ».
En cas de succès, vous recevrez le message ci-dessous dans l'IDE Arduino confirmant votre bibliothèque :
7. Ensuite, allez dans Sketch/Programme -> Inclure une bibliothèque -> Gestionnaire de bibliothèques et installez la PubSubClient . Pour trouver facilement la bibliothèque, saisissez « PubSubClient » dans la barre de recherche.
8. Fermez l'IDE Arduino et rouvrez-le. Ce redémarrage est indispensable. Veuillez ne pas manquer cette étape !
Il est temps de commencer à coder 🙂
Copiez le code ci-dessous et collez-le dans l'IDE Arduino.
Une fois le code copié, vous devrez renseigner les paramètres suivants : nom et mot de passe du Wi-Fi, ainsi que votre jeton Ubidots unique. Si vous ne savez pas où trouver votre jeton Ubidots , veuillez consulter l’article ci-dessous.
// Créé par : Maria Carlina Hernandez /**************************************** * Inclure les bibliothèques ****************************************/ #include "UbidotsESPMQTT.h" /**************************************** * Définir les constantes ****************************************/ #define TOKEN "..." // Votre jeton Ubidots #define WIFINAME "..." // Votre SSID #define WIFIPASS "..." // Votre mot de passe Wi-Fi #define DEVICE "pir-sensor" // Attribuer l'étiquette du périphérique #define VARIABLE "motion" // Attribuer l'étiquette de la variable #define LED 2 #define SENSOR D6 uint8_t counter=0; unsigned long state = 0; Ubidots client(TOKEN); /**************************************** * Fonctions auxiliaires ****************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message reçu ["); Serial.print(topic); Serial.print("] "); for (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(SENSOR, INPUT); pinMode(LED, OUTPUT); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if (!client.connected()) { digitalWrite(LED, LOW); client.reconnect(); digitalWrite(LED, HIGH); } else { digitalWrite(LED, HIGH); } uint8_t sensorValue = digitalRead(SENSOR); bool flag = false; if(sensorValue> 0){ for(uint8_t wait=0; wait<=4; wait++){ sensorValue = digitalRead(SENSOR); Serial.println(sensorValue); if(sensorValue==1){ counter++; } if(counter>3){ flag = true; } delay(500); } } Serial.println("envoi des données"); uint8_t value; if(flag){ value = 1; client.add(VARIABLE, value); client.ubidotsPublish(DEVICE); }else{ value = 0; if(state == 10000){ client.add(VARIABLE, value); client.ubidotsPublish(DEVICE); state = 0; } } state++; client.loop(); counter = 0; }
Une fois le code collé et les paramètres Wi-Fi mis à jour, vous devez les vérifier dans l'IDE Arduino. Pour ce faire, en haut à gauche de l'IDE Arduino, vous verrez les icônes ci-dessous. Cliquez sur l'icône de validation (coche) pour valider le code.
Une fois le code vérifié, vous recevrez un message « Compilation terminée » dans l'IDE Arduino.
Ensuite, vous devez téléverser le code dans votre NodeMCU. Pour ce faire, cliquez sur l'icône de flèche vers la droite située à côté de l'icône de validation.
Une fois le code téléchargé, vous recevrez un message « Téléchargement terminé » dans l’IDE Arduino.
Votre capteur envoie maintenant des données au cloud Ubidots !
LED d'état
Une fois votre code téléchargé, la LED intégrée vous indiquera la connectivité de l'appareil.
- Voyant LED allumé -> OK, appareil connecté et envoi de données.
- Clignotement de la LED (1 seconde) -> Tentative de reconnexion. Connexion perdue. Accès à Internet indisponible.
- LED éteinte -> Appareil non connecté
Gestion des données dans Ubidots
Si votre appareil est correctement connecté, vous verrez un nouvel appareil créé dans la section « Appareils » de votre Ubidots . Le nom de l’appareil sera « sensor-pir », et vous verrez également à l’intérieur de cet appareil la variable créée appelée « motion »
Si vous souhaitez modifier les noms de votre appareil et de vos variables pour les rendre plus conviviaux, veuillez consulter cet article
Ensuite, pour compter le nombre de personnes détectées par votre appareil, nous devons créer une nouvelle variable dérivée afin de pouvoir gérer les données et compter le nombre de personnes détectées.
Cliquez sur « Ajouter une variable » et sélectionnez « Synthétique » :
Sélectionnez le périphérique nommé « pir-sensor » et la variable « motion », puis calculez la somme à chaque intervalle de temps défini (1 minute, 1 heure, 1 jour) pour obtenir le nombre de personnes détectées. Cliquez sur Enregistrer et nommez la variable. Votre formule ressemblera à ceci :
somme(mouvement, "1H")
Une fois votre variable créée, vous recevrez le nombre de personnes détectées dans cette nouvelle variable synthétique. Voici une illustration du résultat final :
Résultat
Ce projet vise à sensibiliser les administrateurs et les décideurs au nombre de personnes qui transitent dans un espace donné et à leurs habitudes de déplacement. Veuillez noter que, compte tenu des limitations du capteur de mouvement, certaines personnes ne seront pas détectées. La visibilité directe est essentielle, tant pour les humains que pour les machines. Nous travaillons à l'améliorer !
Il est temps de créer un dashboard pour contrôler et gérer les variables de votre compteur de personnes. Pour en savoir plus sur Ubidots , consultez ces tutoriels vidéo et inscrivez-vous gratuitement dès aujourd'hui !