Table des matières:

Comment construire un système de détection de mouvement avec Arduino : 7 étapes
Comment construire un système de détection de mouvement avec Arduino : 7 étapes

Vidéo: Comment construire un système de détection de mouvement avec Arduino : 7 étapes

Vidéo: Comment construire un système de détection de mouvement avec Arduino : 7 étapes
Vidéo: Tutoriel 14 : Détecteur de mouvement Arduino 2024, Juillet
Anonim
Comment construire un système de détection de mouvement avec Arduino
Comment construire un système de détection de mouvement avec Arduino

Construisez un compteur de production de mouvement et de présence à l'aide d'un Feather HUZZAH programmé avec Arduino et alimenté par Ubidots.

Une détection efficace des mouvements physiques et de la présence dans les maisons intelligentes et la fabrication intelligente peut être très utile dans des applications allant des solutions d'assistance à l'autonomie aux personnes âgées (AAL) pour les personnes âgées ou un système de comptage de production qui alimente un plus grand MES. D'autres applications pour la détection de mouvement et de présence incluent, sans s'y limiter:

  1. Automatismes de portes et portails
  2. Des capteurs de stationnement pour désigner des places libres
  3. Surveillance à distance du niveau du réservoir
  4. Maisons et installations intelligentes pour l'éclairage et la sécurité
  5. Détection et comptage d'unités dans les lignes de convoyage
  6. Détection de marques sur les documents imprimés
  7. Détection de liquide à l'intérieur des inclinaisons de carton, de plastique et de papier
  8. Détection de distance
  9. Compteurs de personnes

S'il existe de nombreuses applications pour la présence et le mouvement, il existe tout autant de capteurs pour collecter des données, tels que des capteurs capacitifs, inductifs, photoélectriques et à ultrasons. En fonction des coûts, des conditions environnementales et des exigences de précision, il convient de sélectionner le matériel le mieux adapté à l'environnement et aux exigences de l'application.

Pour ce tutoriel, nous allons nous concentrer sur la construction d'un compteur de production en temps réel; l'application comptera chaque unité passant sur une bande transporteuse. Nous utiliserons l'IDE Arduino pour programmer un Feather HUZZAH ESP8266, un capteur à ultrasons et des Ubidots pour développer notre application et afficher notre tableau de bord IoT.

Étape 1: Exigences

  1. Plume HUZZAH avec ESP8266MB7389-100
  2. Capteur à ultrasons
  3. Arduino IDE 1.8.2 ou supérieur
  4. Compte Ubidots -ou-Licence STEM

Étape 2: configuration

  • I Configuration du matériel
  • II. Configuration du micrologiciel
  • III. Développement d'applications Ubidots (événements, variables et tableaux de bord)

Étape 3: configuration du matériel

configuration materielle
configuration materielle
configuration materielle
configuration materielle

Le capteur à ultrasons MB7389-100 est une option économique pour les applications industrielles avec des exigences de large gamme et de faible consommation d'énergie dans des conditions météorologiques difficiles grâce à sa classification IPv67.

Pour commencer, reproduisez le schéma ci-dessous pour fixer le capteur à ultrasons au Feather HUZZAH ESP8266.

REMARQUE: La lecture du capteur peut être prise en tant que lectures analogiques ou PWM; ci-dessous, nous allons expliquer la configuration de la lecture PWM, pour plus d'informations, veuillez consulter les exemples ci-dessus.

[En option] placez le microcontrôleur et les capteurs à l'intérieur du boîtier IP67 pour les protéger de la poussière, de l'eau et d'autres facteurs environnementaux menaçants. Le boîtier standard ressemble à celui présenté sur les photos ci-dessus.

Étape 4: configuration du micrologiciel

Configuration du micrologiciel
Configuration du micrologiciel
Configuration du micrologiciel
Configuration du micrologiciel

Tout d'abord, vous devez installer Feather Huzzah dans l'IDE Arduino et compiler le code. N'oubliez pas de vérifier cette configuration en effectuant un simple test de clignotement. Pour plus d'informations sur la connexion de votre appareil Feather, consultez ce guide de configuration matérielle utile.

Pour envoyer des données de capteur à la plate-forme de développement Ubidots IoT, copiez et collez le code ci-dessous dans l'IDE Arduino. N'oubliez pas d'attribuer le nom du réseau Wi-Fi, le mot de passe et votre jeton de compte Ubidots à l'endroit indiqué dans le code.

/************************************ Bibliothèques incluses *************** ****************/#comprendre /****************************** ** Constantes et objets *******************************//* Ubidots */const char* SSID_NAME = "xxxxxxxx"; // Mettez ici votre nom SSIDconst char* SSID_PASS = "xxxxxxxx"; // Mettez ici votre mot de passeconst char* TOKEN = "Assig_your_ubidots_token"; // Mettez ici votre TOKENconst char* DEVICE_LABEL = "motion-control"; // Votre appareil labelconst char* VARIABLE_LABEL = "distance"; // Votre variable labelconst char* USER_AGENT = "ESP8266";const char* VERSION = "1.0";const char* HTTPSERVER = "industrial.api.ubidots.com";// Ubidots Business users//const char* HTTPSERVER = " choses.ubidots.com"; // Ubidots Educational usersint HTTPPORT = 80;/* Capteur à ultrasons */const int pwPin1 = 5; // La broche PWM où le capteur est connectéWiFiClient clientUbi;/************************************ Fonctions Auxiliaires *** **************************//** Obtient la longueur du corps de la variable @arg le corps de type char @return dataLen le longueur de la variable*/int dataLen(char* variable) { uint8_t dataLen = 0; for (int i = 0; i distance / 25,4 */ float distance = pulseIn(pwPin1, HIGH); sendToUbidots(DEVICE_LABEL, VARIABLE_LABEL, distance); delay(1000);}void sendToUbidots(const char* device_label, const char* variable_label, float sensor_value) { char* body = (char *) malloc(sizeof(char) * 150); char* data = (char *) malloc(sizeof(char) * 300); /* Espace pour stocker les valeurs à envoyer * / char str_val[10]; /*---- Transforme les valeurs des capteurs en type char -----*/ /* 4 est la largeur minimale, 2 est la précision; la valeur flottante est copiée sur str_val*/ dtostrf(sensor_value, 4, 2, str_val); /* Construit le corps à envoyer dans la requête*/ sprintf(body, "{"%s\":%s}", variable_label, str_val); /* Construit le HTTP demande d'être POST */ sprintf(data, "POST /api/v1.6/devices/%s", device_label); sprintf(data, "%s HTTP/1.1\r\n", data); sprintf(data, "%sHost: Things.ubidots.com\r\n", data); sprintf(data, "%sUser-Agent: %s/%s\r\n", data, USER_AGENT, VERSION); sprintf(data, "%sX-Auth-Token: %s\r\n", data, TOKEN); sprint f(données, "%sConnexion: fermer\r\n", données); sprintf(data, "%sContent-Type: application/json\r\n", data); sprintf(data, "%sContent-Length: %d\r\n\r\n", data, dataLen(body)); sprintf(données, "%s%s\r\n\r\n", données, corps); /* Connexion initiale */ clientUbi.connect(HTTPSERVER, HTTPPORT); /* Vérifier la connexion client */ if (clientUbi.connect(HTTPSERVER, HTTPPORT)) { Serial.println(F("Posting your variables: ")); Serial.println(données); /* Envoie la requête HTTP */ clientUbi.print(data); } /* Tant que le client est disponible, lit la réponse du serveur */ while (clientUbi.available()) { char c = clientUbi.read(); Serial.write(c); } /* Mémoire libre */ free(data); corps libre); /* Arrêter le client */ clientUbi.stop();}

Astuce de pro: vous pouvez vérifier si votre appareil est correctement connecté en ouvrant le moniteur série dans l'IDE Arduino.

Vous pouvez vérifier qu'un appareil est créé dans votre backend Ubidots en le visualisant dans votre compte Gestion des appareils -> Appareils.

En cliquant sur votre appareil, vous trouverez une variable appelée "distance" où les lectures du capteur sont stockées. Ce nom a été attribué dans le code que vous venez de coller dans l'IDE Arduino. Si vous souhaitez ajuster vos variables automatiques, veuillez le faire en éditant la fiche Appareil ou en flashant un code mis à jour avec la nomenclature de variables correcte pour votre application.

Avec le Feather HUZZAH ESP8266 connecté et rapportant des données à Ubidots, il est maintenant temps de créer l'application en utilisant la configuration d'application sans code soigneusement conçue par Ubidots.

Étape 5: Développement d'applications Ubidots

Développement d'applications Ubidots
Développement d'applications Ubidots
Développement d'applications Ubidots
Développement d'applications Ubidots
Développement d'applications Ubidots
Développement d'applications Ubidots

Configuration de l'événement Ubidots

Les lectures actuelles que nous envoyons à Ubidots sont des entrées de distance. Pour traduire ces lectures en la sortie souhaitée que nous voulons - unités comptées - nous devons créer un événement en suivant ces étapes:

  1. À l'intérieur du dispositif actuel "motion-control", créez une nouvelle variable par défaut appelée "boxes", qui recevra un 1 à chaque fois qu'une nouvelle unité est comptée.
  2. Accédez à Gestion des appareils -> Événements, puis cliquez sur l'icône bleue plus dans le coin supérieur droit de la page pour ajouter un nouvel événement.
  3. Configurez votre événement en commençant par « Si les déclencheurs »:
  • Sélectionnez une variable: "distance"
  • Valeur: valeur (par défaut)
  • Est inférieur ou égal à [la distance maximale attendue} entre le capteur et les boîtiers qui passent*notre application demande 500 mm
  • Pendant 0 minute
  • sauvegarder

4. Une fois les déclencheurs configurés selon les spécifications de votre application, cliquez sur l'icône orange "plus" dans le coin supérieur droit pour ajouter une action conditionnelle.

5. Sélectionnez "Définir la variable" comme action.

6. Ensuite, choisissez la variable par défaut "boxes" précédemment créée et la valeur "1".

7. Enregistrez les modifications. Si l'événement est correctement configuré, il enverra un "1" à chaque fois que la distance entre le capteur et l'unité est supérieure à un seuil indiqué, ce qui suggère qu'il n'y a aucun objet à proximité - et devrait compter une nouvelle unité qui vient de passer.

Dans la carte de périphérique spécifique à Feather, vous constaterez que la variable "boîtes" où un "1" est envoyé chaque fois que la présence d'une unité est détectée.

Particulièrement utile pour les bandes transporteuses industrielles et le comptage d'unités, ce prototype peut être personnalisé pour s'adapter à différents environnements ou matériels simplement dans votre codage ou le développement de vos applications.

8. Visualisez le nombre d'unités détectées (ou de fois qu'un objet a été détecté) Maintenant, en utilisant la variable "boîtes", nous allons créer une nouvelle variable de fenêtre mobile pour additionner le nombre total de lectures reçues de la variable "boîtes" dans un spam défini (minutes, heures, jours, semaines, etc.). Pour exécuter ce développement, suivez ces étapes simples:

Attribuez les informations d'identification suivantes à votre nouvelle variable de fenêtre mobile

Sélectionnez un appareil: contrôle de mouvement (ou le nom de l'appareil auquel vous envoyez vos données)

Sélectionnez une variable: cases

Calculer la: somme

Toutes les: "1" heure (ou selon vos demandes d'application)

Attribuez maintenant un nom à la nouvelle variable qui indique le nombre de boîtes (ou mouvements) comptés en une heure, tout comme "boîtes/heure" ou "unités/heures.

Étape 6: Configurations du tableau de bord

Configurations du tableau de bord
Configurations du tableau de bord

Enfin, créez un tableau de bord pour afficher le nombre d'unités détectées.

Accédez à Gestion des appareils -> Tableaux de bord et ajoutez un nouveau widget. Ce widget affichera le nombre de boîtes comptées aujourd'hui ventilées par heure.

Attribuez les informations d'identification suivantes à votre nouveau widget pour visualiser votre nombre.

Comment voudriez-vous voir vos données ?: Graphique

Sélectionnez un type de widget: graphique en courbes

Ajouter un appareil: contrôle de mouvement

Ajouter une variable: cases/heure

Finir. Et avec ce développement final du tableau de bord, votre application est terminée et vous disposez désormais d'un système de détection de mouvement et de présence efficace et performant. Voici un dernier aperçu de nos résultats.

Conseillé: