Domotique : Mesurer la température/pression avec un BMP180

19 mai 2018 rdorigny 0 commentaires

Cela fait presque un an que j'ai ce composant sous blister sur mon bureau. Et comme je dispose depuis peu d'un ESP32 en kit de développement, voilà une bonne occasion de le tester.

Le BMP180 est un tout petit capteur qui mesure la pression et la température. Il est généralement employé dans les stations météo de type DIY (do it yourself). Il faut dire aussi que son coût est dérisoire. Pour communiquer, il dispose d'une sortie numérique I2C afin de transmettre les mesures. Voyons un peu comment faire pour réaliser ce montage.



Le schéma du montage est assez simple. Il faut alimenter le bmp180 en 3.3V (et non 5v!!) et relier les pin I2C avec les entrées/sorties de votre module ESP32. Sur le mien, il s'agit des pin 21 et 22.

Ensuite, il faut récupérer les bibliothèques du capteur bmp180 ici. Décompacter le fichier zip, renommer le répertoire Adafruit-BMP085-Library-master en Adafruit_BMP085_Library et copier ce répertoire dans le dosiers des librairies de l'IDE Arduino. Il est nécessaire de relancer l'IDE pour faire prendre en compte la librairie. Le code du programme du microcontrôleur est :

#include (Wire.h)
#include (Adafruit_BMP085.h)  // remplacer les () par <>

/*************************************************** 
  This is an example for the BMP085 Barometric Pressure & Temp Sensor

  Designed specifically to work with the Adafruit BMP085 Breakout 
  ----> https://www.adafruit.com/products/391

  These displays use I2C to communicate, 2 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

// Connect VCC of the BMP085 sensor to 3.3V (NOT 5.0V!)
// Connect GND to Ground
// Connect SCL to i2c clock - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 5
// Connect SDA to i2c data - on '168/'328 Arduino Uno/Duemilanove/etc thats Analog 4
// EOC is not used, it signifies an end of conversion
// XCLR is a reset pin, also not used here

Adafruit_BMP085 bmp;
  
void setup() {
  Serial.begin(9600);
  if (!bmp.begin()) {
	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
	while (1) {}
  }
}
  
void loop() {
    Serial.print("Temperature = ");
    Serial.print(bmp.readTemperature());
    Serial.println(" *C");
    
    Serial.print("Pressure = ");
    Serial.print(bmp.readPressure());
    Serial.println(" Pa");
    
    // Calculate altitude assuming 'standard' barometric
    // pressure of 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");

    Serial.print("Pressure at sealevel (calculated) = ");
    Serial.print(bmp.readSealevelPressure());
    Serial.println(" Pa");

  // you can get a more precise measurement of altitude
  // if you know the current sea level pressure which will
  // vary with weather and such. If it is 1015 millibars
  // that is equal to 101500 Pascals.
    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(101500));
    Serial.println(" meters");
    
    Serial.println();
    delay(5000);
}

Ce qui donne:

Conclusion

Petit montage rapide avec un ESP32. Le bmp180 est un composant intéressant puisqu'il donne les mesure de la pression et de la température dans un petit module très compact.







Pseudonyme (obligatoire) :
Adresse mail (obligatoire) :
Site web :




© 2018 www.doritique.fr par Robert DORIGNY