Capteur de température et de pression barométrique BMP180 pour Arduino

Capteur de température et de pression barométrique BMP180 pour Arduino

Le capteur BMP180 est un dispositif polyvalent qui mesure la température et la pression barométrique, ce qui le rend idéal pour diverses applications telles que la surveillance météorologique et la mesure d'altitude. Dans ce tutoriel, nous allons connecter le capteur BMP180 à un Arduino, lire les données de température et de pression, et afficher les résultats. À la fin de ce projet, vous serez en mesure d'obtenir des relevés de température précis en degrés Celsius et en degrés Fahrenheit, ainsi que des valeurs de pression en millibars et en pouces de mercure.

Pour clarifier les concepts et les étapes de codage, je vous encourage à regarder la vidéo associée pour des explications détaillées (dans la vidéo à 00:00).

Le matériel expliqué

Le BMP180 est un capteur numérique qui communique via I2C, ce qui lui permet de s'interfacer facilement avec des microcontrôleurs comme l'Arduino. Il comporte quatre broches :Vn(alimentation),GND(sol),SDA(ligne de données), etSCL(ligne d'horloge). Le capteur fonctionne dans une plage de tension de 1,8 à 3,6 volts, mais il peut être alimenté par une alimentation régulée de 5 V à l'aide d'un régulateur de tension.

La capacité de ce capteur à mesurer la pression atmosphérique le rend adapté aux applications nécessitant une estimation de l'altitude et la surveillance météorologique. Le BMP180 comprend également un capteur de température intégré, essentiel pour obtenir des mesures de pression précises. En mesurant d'abord la température, le capteur peut compenser les variations de température qui affectent les mesures de pression.

Détails de la fiche technique

FabricantBosch
Numéro de pièceBMP180
Tension logique/E/S1,8 - 3,6 V
Tension d'alimentation1,8 - 5,0 V
Courant de sortie (typ.)5 μA
Courant de crête (max.)1 mA
Recommandations de fréquence PWMSans objet
Seuils logiques d'entréeSans objet
Chute de tension / RDS(en conduction)/ saturationSans objet
Limites thermiquesde -40 à 85 °C
Paquet3.6 x 3.8 mm
Notes / variantesFaible consommation d'énergie

  • Assurez-vous que les niveaux de tension sont appropriés pour éviter d'endommager le capteur.
  • Utilisez des résistances de pull-up sur les lignes I2C si nécessaire.
  • Maintenez le capteur dans un environnement à température stable pour des mesures précises.
  • Calibrez l'altitude en fonction de votre emplacement spécifique pour des résultats précis.
  • Surveillez l'alimentation électrique pour vous assurer qu'elle reste dans les limites spécifiées.

Instructions de câblage

Arduino wiring for BMP180 Temperature sensor

Pour câbler le capteur BMP180 à votre Arduino, commencez par connecter leVnConnectez la broche du BMP180 à la broche 5V de l'Arduino. Ensuite, connectez laGNDBranchez la broche sur la masse de l'Arduino. Pour la communication I2C, connectez laSDAconnectez la broche à l'entrée analogique A4 de l'Arduino et laSCLBranchez la broche sur A5. Assurez-vous que vos connexions sont solides pour éviter tout problème de communication.

Si vous utilisez un modèle d'Arduino différent, sachez que les broches I2C peuvent varier. Par exemple, sur un Mega2560, leSDAetSCLLes broches sont 20 et 21, respectivement. Vérifiez toujours l'affectation des broches de votre carte spécifique pour garantir le bon fonctionnement.

Exemples de code et guide pas à pas

#include 
#include 

SFE_BMP180 pressure;
#define ALTITUDE 90.0 // Altitude of Robojax Headquarter

Dans le code, nous commençons par inclure les bibliothèques nécessaires :SFE_BMP180.hpour le capteur etWire.hpour la communication I2C. Nous créons une instance de l'objet BMP180 nomméepressureet définir l'altitude à laquelle nos relevés seront effectués à l'aide duALTITUDEconstant.

void setup() {
  Serial.begin(9600);
  if (pressure.begin()) Serial.println("BMP180 init success");
  else { Serial.println("BMP180 init fail\n\n"); while(1); }
}

LesetupLa fonction initialise la communication série à 9600 bauds et tente de démarrer le capteur BMP180. Si l'initialisation échoue, le programme entre dans une boucle infinie pour empêcher toute exécution ultérieure, indiquant un problème de connexion.

void loop() {
  char status;
  double T, P, p0, a;

  status = pressure.startTemperature();
  if (status != 0) {
    delay(status);
    status = pressure.getTemperature(T);
    if (status != 0) {
      Serial.print("temperature: "); Serial.print(T,2);
    }
  }
}

Dans leloopDans la fonction, nous lançons d'abord une mesure de température en appelantstartTemperature(). Si cela réussit, nous attendons que la mesure soit terminée et récupérons la température avecgetTemperature(T), oùTEnregistre la valeur de la température. La température est ensuite affichée sur le moniteur série.

Démonstration / À quoi s'attendre

Lorsqu'il est alimenté et correctement câblé, le BMP180 lira et affichera en continu les données de température et de pression toutes les cinq secondes. Vous devriez voir les valeurs de température en Celsius et en Fahrenheit, ainsi que les valeurs de pression absolue et relative. Si le capteur fonctionne correctement, vous recevrez des mesures sans erreurs. Soyez attentif aux écueils potentiels tels que des niveaux de tension incorrects ou des connexions lâches, qui peuvent empêcher l'obtention des données.

Images

BMP18_module-1
BMP18_module-1
BMP18_module-2
BMP18_module-2
BMP18_module-3
BMP18_module-3
Arduino wiring for BMP180 Temperature sensor
Arduino wiring for BMP180 Temperature sensor
112-BMP180 temperature and barometric pressure sensor for Arduino
Langue: C++
Copié !

Ressources et références

Fichiers📁

Bibliothèques Arduino (zip)

Fiche technique (pdf)