Journal du projet #2 : capteurs et programmation
Dans mon premier article, j’ai parlé de la première étape de mon projet de construction d’une station météorologique pour le Musée de l’aviation et de l’espace du Canada, qui consistait à faire communiquer le Raspberry Pi et l’Arduino. L’étape suivante du projet visait à brancher les capteurs météorologiques et à faire en sorte qu’ils fournissent de vraies mesures.
Au départ, je n’avais que deux capteurs : un dispositif de mesure de l’humidité et un capteur d’altimétrie. Le terme « dispositif de mesure de l’humidité » ne nécessite pas d’explications; quant au capteur d’altimétrie, il fournit des données barométriques et thermométriques, ce qui signifie qu’il permet de mesurer la pression atmosphérique et la température, et d’estimer l’altitude. Ces deux capteurs sont des composants de type montage en surface, ce qui signifie qu’ils n’ont aucune broche de raccordement.
![Gros plans des deux capteurs](/sites/default/files/2018-08/sensors.png)
Photo du haut : le capteur d’humidité; photo du bas : le capteur d’altimétrie (pression, température, altitude)
Il faut plutôt braser des raccords sur ces composants. Bien que j’aie de l’expérience en brasage, je me suis fait aider par Jason Robinson, le maître de l’entretien des expositions du Musée, afin de m’assurer de faire du bon travail.
![Gros plan d’un fer à souder et d’un capteur ainsi que de Jason et de Mohamed au travail](/sites/default/files/2018-08/20180711_102040_0.jpg)
Jason Robinson m’aidant à braser des fils sur les deux capteurs
Après avoir remercié Jason pour son excellent travail, j’ai amorcé le processus de câblage. Le câblage des composants n’est pas aussi difficile qu’il y paraît. Comme je n’en étais encore qu’aux premières étapes, je pouvais simplement utiliser une plaquette d’expérimentation. Cette dernière est une carte préfabriquée qui permet de réaliser le prototype d’un circuit sans prendre de décisions définitives, comme celle de braser des fils ensemble. Il s’agit de la plaquette blanche sur la photo ci-dessous.
![Images d'un Raspberry Pi, Arduino, plaquette d’expérimentation et capteurs](/sites/default/files/2018-08/screen_shot_2018-08-01_at_4.14.27_pm.png)
Première photo : le Raspberry Pi, l’Arduino, la plaquette d’expérimentation et les capteurs côte à côte; deuxième photo : gros plan du capteur d’altimétrie raccordé à l’Arduino par des fils de connexion. Le boîtier de la plaquette d’expérimentation est en plastique, mais on trouve du métal à l’intérieur. Ce métal est disposé en colonnes, ce qui permet de faire passer le courant à travers une colonne de supports. Dans cette photo, les quatre broches de l’altimètre sont insérées dans des colonnes différentes, et le fil de chacune permet la transmission de messages uniques entre la plaquette et l’Arduino (voir le schéma ci-après).
Chaque capteur est pourvu d’étiquettes décrivant la fonction de chaque broche. En général, on trouve une broche pour l’alimentation, une autre pour la mise à la terre et encore une pour la transmission des données. C’était le cas pour le capteur d’humidité; il y avait une broche de 5 V, une broche de mise à la terre et une autre broche branchée sur la broche analogique 0. Si l’Arduino ne vous est pas familier, sachez qu’il comporte des entrées numériques et analogiques. Pour vous représenter la différence, pensez à une lumière. Une entrée numérique est comme un interrupteur qui allume ou qui éteint la lumière. Il n’y a que deux options possibles. Quant à l’entrée analogique, elle agit comme un gradateur de lumière, qui permet de faire varier l’intensité lumineuse. La majorité des capteurs ont tendance à utiliser des signaux analogiques plutôt que numériques, car ils visent à fournir des données comprises dans un intervalle de valeurs possibles.
J’avais besoin d’une connexion à la broche VIN (qui sert de broche d’alimentation) et d’une broche de mise à la terre pour l’altimètre; mais ce dernier utilise deux broches plutôt qu’une seule pour la transmission des données : une broche SDA et une broche SCL. Celles-ci sont utilisées pour la communication i2C, ce qui permet à plusieurs composants de communiquer entre eux. La broche SCL est celle de l’horloge qui veille à ce que les données soient transmises au rythme et au moment voulus. La broche SDA est celle qui accepte les données. Ensemble, ces broches permettent une collecte de données sans faille.
![Schéma illustrant la façon dont les capteurs sont raccordés à l’Arduino](/sites/default/files/2018-08/mock-up_bb.jpg)
Schéma illustrant la façon dont les capteurs sont raccordés à l’Arduino
La programmation de l’Arduino pour obtenir des données des capteurs n’a pas été trop difficile, car les deux capteurs possédaient leurs propres bibliothèques d’exemples. Je les ai trouvées sur leurs pages GitHub respectives : (https://github.com/adafruit/Adafruit_MPL3115A2_Library et https://github.com/sparkfun/SparkFun_HIH4030_Arduino_Library). Pour modifier le code afin de combiner les deux en un programme complet, il m’a suffi de consulter les exemples pour trouver les bouts de code à insérer.
![Une portion du code permettant de renvoyer les données des capteurs au Raspberry Pi](/sites/default/files/2018-08/screen_shot_2018-07-27_at_3.38.18_pm.png)
Une portion du code permettant de renvoyer les données des capteurs au Raspberry Pi
![Capture d’écran des données provenant de l’Arduino](/sites/default/files/styles/inline_image/public/2018-08/the_data.png.webp?itok=Lyx74tUC)
Capture d’écran des données provenant de l’Arduino
Après avoir apporté d’ultimes ajustements et procédé au dernier nettoyage, j’ai exécuté un test rapide qui a bien fonctionné. Je peux maintenant lire les valeurs mesurées par les capteurs.
Le processus de conception englobe tous les aspects de la programmation. J’ai effectué le travail de conceptualisation et la recherche d’idées pour le boîtier de la station — et pour d’autres éléments — avec mon superviseur Jesse Rogerson, qui est aussi conseiller scientifique au Musée. Comme la station sera installée à l’extérieur, la manière dont tout cela prendra forme continue de faire l’objet de réflexions et de discussions.
Pour ce qui est de l’avenir, je suis impatient de tester d’éventuels concepts en 3D pour le boîtier. Mais ça, c’est le sujet de la semaine prochaine... Restez à l’affût de la suite de mes aventures!
Tout le code qui a été écrit se trouve sur ma page GitHub : https://github.com/mebsim/WeatherStation