Fabriquer un thermomètre / baromètre / altimètre avec Arduino

Ça y est, j’ai reçu mon Arduino Uno ! Je l’ai commandée chez Lextronic, livrée en 1 semaine et demie.

Dans la foulée, comme ces salopards n’offrent pas les frais de port, même pour une commande de plus de 100€, je me suis équipé en capteurs et composants divers pour amortir lesdits frais de port.

En même temps, me direz-vous, à quoi servirait une carte Arduino sans capteurs et composants divers? A rien. Bon, on est d’accord.

Du coup, j’ai commandé un capteur qui fait thermomètre et baromètre, le BMP085.

Et l’altimètre dans tout ça ? Hé bien il existe une formule qui lie la pression atmosphérique à l’altitude, elle est présentée ici.

Comme on peut le constater, cette formule utilise une pression de référence de 1013,25 hPa au niveau de la mer. Ce qui signifie que l’altitude calculée ne pourra jamais être précise et va inexorablement varier, car nous ne vivons pas dans une bulle avec une pression régulée…

Par beau temps, l’altitude calculée sera inférieure à celle calculée par mauvais temps (anticyclone vs. dépression).

Mais bon, nous ne cherchons pas à connaitre l’altitude au mètre près! Sinon, il faut s’orienter vers un module GPS, qui fournira une information bien plus précise sur l’altitude. Maiiiis pas la température ni la pression atmosphérique. Faut faire des choix dans la vie.

La carte Arduino et le module BMP085 vont discuter selon le protocole I2C, et c’est la classe Wire fournie dans la bibliothèque d’Arduino qui va nous aider dans cette discussion.

Avant tout, je tiens à préciser que les informations proviennent essentiellement du tutorial du BMP085, chez SparkFun. Je me suis hautement appuyé sur eux pour mettre en place ce montage.

Alors en fait, le capteur possède une petite EPROM qui contient des valeurs d’étalonnage. Ces valeurs vont nous servir de référence pour calculer les valeurs réelles de pression et température.

Pour extraire ces valeurs de référence, avec la librairie Wire, on donne l’adresse de la valeur dans l’EPROM, le nombre d’octets à extraire(typiquement 1 ou 2) et hop.

 

Prêt ? on y va.

Alors tout d’abord, commençons par le montage. Il faut alimenter le capteur, mais alors attention: la tension maximale acceptée est de 3.6V ! Utilisons donc la tension régulée à 3.3V fournie par notre carte Arduino. Nous allons donc connecter la masse à la borne GND et le 3.3V à la borne VCC du capteur.

Pour la communication entre la carte Arduino et la bébête, nous allons relier respectivement la borne SDA (Serial DAta) du capteur au pin A4 de l’Arduino (oui oui, dans les entrées analogiques), et la borne SCL (Serial CLock) au pin A5.

Les pins A4 et A5 de l’Arduino sont utilisés par défaut par la classe Wire pour les données et le signal d’horloge.

Pour la faire courte, donc :

VCC -> 3.3V
GND -> masse
SDA -> A4
SCL -> A5

 

Dans le prochain article, je vais vous présenter le programme qui permet d’exploiter l’engin.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Es-tu capable de répondre à ça? * Time limit is exhausted. Please reload the CAPTCHA.