[2/3] Du matériel au cloud : Test du MMC5883MA

Avez-vous déjà pensé à développer votre propre IoT à partir de zéro, mais vous ne saviez pas par où commencer ? Bonne nouvelle, vous allez apprendre ici comment faire ! Restez au courant de l'avancement du projet [ ici ].

Ceci est le deuxième d'une série d'articles à travers lesquels je décrirai le processus de développement de ma propre IoT à partir de zéro. Si vous n'avez pas encore lu la première partie, je vous recommande de la faire en premier , afin de comprendre le contexte du projet et de prendre connaissance des considérations prises en compte pour sélectionner les technologies et les composants nécessaires à la construction du premier prototype.

Pour pouvoir construire un prototype, il devient nécessaire de connaître les détails de fonctionnement et les spécifications techniques de chaque composant. D'après mon expérience, je considère que la première étape (et peut-être la plus importante) est de comprendre les principaux aspects de la fiche technique des modules. Par la suite, je recommande de réaliser des tests individuels avec chacun d’eux pour comprendre leur comportement.

En gardant tout cela à l’esprit, j’ai décidé de commencer par la partie la plus critique du prototype : les capteurs. La raison est simple : il faut s'assurer que les capteurs sélectionnés sont effectivement capables de détecter la présence d'un véhicule, en plus de les comparer pour savoir lequel est le plus adéquat pour remplir les exigences et les objectifs de l'application.

Tout au long de cet article, je décrirai le processus effectué pour évaluer le comportement du capteur magnétique MMC5883MA et sa capacité à détecter la présence d'un véhicule dans une place de stationnement. À la fin, les résultats des tests seront affichés et analysés.

À propos des composants

Le MMC5883MA est un capteur magnétique 3 axes basse consommation qui peut communiquer, via une interface I2C, avec un microcontrôleur externe. En écrivant et en lisant certains registres spécifiques du capteur, le microcontrôleur peut configurer le mode de fonctionnement et démarrer le processus de mesure, en plus d'obtenir les données de mesure.

Pour ce test, j'utilise la version d'évaluation du capteur MMC5883MA, appelée MMC5883MA-B , car les composants superficiels ne peuvent pas être testés aussi facilement. Comme je devais d'abord construire un prototype, la plupart des composants devaient être connectés via une maquette et le MMC5883MA-B, ce qui me permet de le faire sans nécessiter de temps ni de travail supplémentaire.

Pour pouvoir réaliser le test, la première étape consistait à sélectionner un microcontrôleur pour collecter les données générées par le capteur. Cependant, comme le test se concentre sur l'analyse du comportement du capteur et non sur celui du microcontrôleur, une bonne option peut être de choisir un microcontrôleur simple à programmer, afin de réduire le temps et la complexité de l'expérience. En bref, il me fallait trouver un microcontrôleur (ou carte de développement) simple et pratique, doté d'une interface I2C, qui aurait également la capacité d'envoyer les données du capteur à la plateforme Ubidots pour y être stockées et traitées.

En gardant tout cela à l'esprit, j'ai décidé d'utiliser un NodeMCU ESP8266 comme microcontrôleur. Cette carte de développement compatible Arduino est basée sur le module WiFi ESP8266 et elle est très populaire parmi les applications Internet des objets en raison de sa praticité. Cet appareil dispose de diverses interfaces de communication, notamment I2C. Toutes ces fonctionnalités le rendent approprié pour être utilisé dans l’expérience.

Description de l'essai

L'expérience consistait à effectuer des mesures périodiques du champ magnétique sur une place de stationnement simulant les conditions réelles, c'est-à-dire d'entrée et de sortie de véhicules. Les données des capteurs doivent être envoyées en temps réel à la plateforme Ubidots puis analysées pour identifier s'il y a eu un changement dans le comportement des mesures qui pourrait être lié à la présence du véhicule.

Le MMC5883MA-B doit être connecté au NodeMCU ESP8266 via le port I2C. Ces connexions peuvent être facilement réalisées à l’aide d’une maquette. Le module NodeMCU doit être correctement configuré pour pouvoir accéder à un réseau WiFi et envoyer des données aux Ubidots . Le dernier détail avant de démarrer le test était de fournir une alimentation électrique aux modules, afin de les rendre portables. Comme la tension de travail des modules est de 3,3 volts, il devrait suffire d'utiliser deux piles AA de 1,5 volts chacune, connectées en série. Les connexions résultantes sont illustrées dans le schéma ci-dessous.

Il est temps de coder

Le NodeMCU étant une carte compatible Arduino, il peut être programmé via l'IDE Arduino. Le code Arduino doit implémenter deux tâches principales :

  • Acquisition de données de capteur.
  • Publication des données dans la plateforme Ubidots .

La partie du code chargée de lire les données du capteur et de les décoder pour obtenir la mesure du champ magnétique a été écrite sur la base de la fiche technique du MMC5883MA, où les registres du capteur sont expliqués en détail. Ici, la bibliothèque Arduino Wire.h a été très utile pour réaliser la communication I2C.

La partie du code en charge de la mise en place de la connexion WiFi et de l'envoi des données vers la Ubidots est basée sur le tutoriel Ubidots Connecter un NodeMCU ESP8266 à Ubidots via HTTP ». Pour apprendre à configurer l'IDE Arduino pour programmer la carte NodeMCU, je vous recommande de suivre l'étape 1 du tutoriel.

Le code résultant peut être trouvé sur ce référentiel Github .

Résultats des tests

Après avoir terminé les configurations expliquées ci-dessus et m'être assuré que le NodeMCU lisait les données et les envoyait avec succès à Ubidots , j'ai placé la planche à pain sur le sol de la place de parking, à proximité de la position marquée du X vert dans l'image ci-dessous.

Pour commencer le test, j'ai garé une voiture et je l'ai laissée là pendant quelques minutes. Après cela, j'ai sorti la voiture et j'ai attendu quelques minutes avant de répéter le processus. Gardez à l’esprit que le capteur prenait les mesures périodiquement, toutes les deux secondes environ. J'ai répété le même processus plusieurs fois et j'ai terminé le test.

Auparavant, j'avais configuré un dashboard dans mon compte Ubidots pour faciliter la visualisation des données des capteurs. Après avoir terminé le test, j'ai examiné les graphiques de mon dashboard et voici ce que j'ai trouvé :

En analysant les données, j'ai remarqué des changements significatifs dans les mesures de l'axe z. Le premier s'est produit lorsque l'amplitude du champ magnétique sur l'axe z a augmenté (marqué du « 1 » dans l'image ci-dessus) ; la seconde a eu lieu lorsque la magnitude a de nouveau diminué (marquée du "2" dans l'image ci-dessus). Il est important de noter que l'ampleur des données prises entre ces points se situe approximativement à la même valeur.

En gardant tout cela à l'esprit, il est possible de conclure que les changements marqués 1 et 2 correspondent aux moments où j'ai garé la voiture (1) et l'ai déplacée à nouveau (2). De plus, les mesures prises entre eux signifient le temps pendant lequel la voiture était garée. Ce comportement dans les mesures a été répété à nouveau au point marqué 3.

Le résultat de l'expérience implique qu'avec le MMC5883MA, la présence d'un véhicule peut être détectée grâce aux changements dans les mesures du champ magnétique, qui seront plus considérables dans l'un des axes, dans ce cas, l'axe z. Pour résumer, lorsqu’il y a une voiture sur la place de stationnement, la mesure du champ magnétique sera plus élevée que lorsqu’elle est seule. En fonction de la différence entre ces valeurs, il est possible de définir un seuil pour prendre une décision sur la présence du véhicule.

Le prochain objectif à atteindre est de réaliser des expériences similaires avec les autres capteurs. À la fin, les résultats doivent être comparés afin de déterminer lequel des capteurs est le plus approprié pour construire le prototype final du projet.

Si vous souhaitez connaître les résultats des autres expériences, gardez un œil sur les prochains articles.