LoRaWAN

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

Daniela Rico
· 6 min de lecture
Envoyer par courriel

Vous avez déjà rêvé de développer votre propre IoT , mais vous ne saviez pas par où commencer ? Bonne nouvelle ! Ici, vous apprendrez comment faire ! Suivez l’avancement du projet [ ici ].

Voici le deuxième article d'une série consacrée au développement de ma propre IoT . Si vous n'avez pas encore lu le premier article, je vous recommande de le faire afin de bien comprendre le contexte du projet et les critères de sélection des technologies et des composants nécessaires à la création du premier prototype.

Pour construire un prototype, il est indispensable de connaître le fonctionnement et les spécifications techniques de chaque composant. D'après mon expérience, la première étape (et peut-être la plus importante) consiste à bien comprendre les points essentiels de la fiche technique des modules. Ensuite, je recommande d'effectuer des tests individuels avec chacun d'eux afin d'en comprendre le comportement.

Compte tenu de tout cela, j'ai décidé de commencer par la partie la plus critique du prototype : les capteurs. La raison est simple : il est indispensable de s'assurer que les capteurs sélectionnés sont bien capables de détecter la présence d'un véhicule, et de les comparer afin de déterminer lequel est le plus adapté aux exigences et aux objectifs de l'application.

Dans cet article, je décrirai la procédure mise en œuvre pour évaluer le comportement du capteur magnétique MMC5883MA et sa capacité à détecter la présence d'un véhicule sur une place de stationnement. Les résultats des tests seront présentés et analysés en fin d'article.

À propos des composants

Le MMC5883MA est un capteur magnétique triaxial basse consommation qui communique, via une interface I2C, avec un microcontrôleur externe. En lisant et en écrivant dans certains registres spécifiques du capteur, le microcontrôleur peut configurer le mode de fonctionnement, lancer le processus de mesure et acquérir les données de mesure.

Pour ce test, j'utilise la version d'évaluation du capteur MMC5883MA, appelée MMC5883MA-B , car il est difficile de tester directement les composants. Comme je devais d'abord construire un prototype, la plupart des composants ont été connectés via une plaque d'essai et le MMC5883MA-B, ce qui m'a permis de le faire rapidement et facilement.

Pour 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, l'objectif du test étant l'analyse du comportement du capteur et non celui du microcontrôleur, il était judicieux d'opter pour un microcontrôleur simple à programmer, afin de réduire la durée et la complexité de l'expérience. En résumé, il me fallait trouver un microcontrôleur (ou une carte de développement) simple et pratique, doté d'une interface I2C et capable d'envoyer les données du capteur à la plateforme Ubidots pour y être stockées et traitées.

Compte tenu de ces éléments, j'ai opté pour une carte NodeMCU ESP8266 comme microcontrôleur. Compatible Arduino, cette carte de développement est basée sur le module WiFi ESP8266 et est très répandue dans les applications de l'Internet des objets grâce à sa praticité. Elle dispose de diverses interfaces de communication, notamment I2C. L'ensemble de ces caractéristiques la rend parfaitement adaptée à cette expérience.

Description du test

L'expérience consistait à effectuer des mesures périodiques du champ magnétique sur une place de parking simulant des conditions réelles, c'est-à-dire avec des véhicules entrant et sortant. Les données des capteurs devaient être transmises en temps réel à la plateforme Ubidots , puis analysées afin de déterminer si des variations dans le comportement des mesures pouvaient être liées à la présence des véhicules.

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 plaque d'essai. Le module NodeMCU doit être correctement configuré pour accéder à un réseau Wi-Fi et envoyer des données à Ubidots. Avant de commencer le test, il fallait alimenter les modules afin de les rendre portables. Leur tension de fonctionnement étant de 3,3 volts, deux piles AA de 1,5 volt chacune, connectées en série, devraient suffire. Le schéma ci-dessous illustre ces connexions.

Il est temps de coder

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

  • Acquisition des données des capteurs.
  • Publication des données sur 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 en se basant sur la fiche technique du MMC5883MA, qui décrit en détail les registres du capteur. La bibliothèque Arduino Wire.h s'est avérée très utile pour la communication I2C.

La partie du code qui configure la connexion Wi-Fi et envoie les données à la Ubidots est basée sur le tutoriel Ubidots  Connecter un NodeMCU ESP8266 à Ubidots via HTTP ». Pour apprendre à configurer l'IDE Arduino afin de programmer la carte NodeMCU, je recommande de suivre l'étape 1 du tutoriel.

Le code résultant est disponible sur ce dépôt Github .

Résultats des tests

Après avoir effectué les configurations expliquées ci-dessus et vérifié que le NodeMCU lisait et envoyait correctement les données à Ubidots , j'ai placé la plaque d'essai sur le sol de l'emplacement de stationnement, approximativement à l'endroit marqué d'une croix verte sur l'image ci-dessous.

Pour commencer le test, j'ai garé une voiture et l'ai laissée là quelques minutes. Ensuite, je l'ai déplacée et j'ai attendu encore deux minutes avant de recommencer. Le capteur effectuait des mesures périodiquement, environ toutes les deux secondes. J'ai répété la même procédure 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 constaté :

Lors de l'analyse des données, j'ai constaté des variations significatives dans les mesures de l'axe z. La première s'est produite lorsque l'intensité du champ magnétique sur cet axe a augmenté (indiquée par « 1 » sur l'image ci-dessus) ; la seconde, lorsqu'elle a diminué (indiquée par « 2 » sur l'image ci-dessus). Il est important de noter que l'intensité des données relevées entre ces deux points reste sensiblement la même.

Compte tenu de ces éléments, on peut conclure que les changements marqués 1 et 2 correspondent aux moments où j'ai garé la voiture (1) puis l'ai déplacée (2). De plus, les mesures prises entre ces deux moments représentent la durée pendant laquelle la voiture était stationnée. Ce comportement s'est reproduit au point marqué 3.

Les résultats de l'expérience indiquent qu'avec le MMC5883MA, la présence d'un véhicule peut être détectée grâce aux variations des mesures du champ magnétique. Ces variations sont plus importantes sur l'un des axes, en l'occurrence l'axe z. En résumé, lorsqu'une voiture est garée, le champ magnétique mesuré est plus élevé que lorsqu'elle est seule. La différence entre ces valeurs permet de définir un seuil pour déterminer la présence d'un véhicule.

L'objectif suivant est de réaliser des expériences similaires avec les autres capteurs. Enfin, les résultats devront être comparés afin de déterminer quel capteur est le plus approprié pour la construction du prototype final du projet.

Si vous voulez connaître les résultats des autres expériences, restez à l'affût des prochains articles.