Este sensor proporciona mediciones de temperatura, presión y humedad. La placa del sensor tiene unas medidas de 15mm x 10mm. El modelo utilizado trabaja con señales y alimentación de 3.3V (existen modelos similares que incorporan regulador y admitirían alimentarles con 5V).
Se utiliza la conexión con protocolo I2C. Se utiliza un "Level Converter MH" de 4 conexiones para convertir el voltaje de las señales de 5V del Arduino Nano a las señales de 3.3V del BMP280.
Cableado entre el Arduino Nano, el conversor de nivéles lógicos y el sensor BMP280
Arduino Nano | Conversor voltajes | Sensor BMP280 |
---|---|---|
GND | GND | GND |
5V | HV | - |
3V | LV | VCC |
A5 | HV1 | - |
A4 | HV2 | - |
- | LV1 | SCL |
- | LV2 | SDA |
Ejemplo de código para probar el sensor BMP280 conectado a un Arduino Nano y a un "Level Converter MH" de 4 señales...
/* Capitulo 36 de Arduino desde cero en Español. Programa que muestra en monitor serie los valores de temperatura, presion atmosferica y altitud relativa del sensor BMP280 conectado mediante bus I2C. Autor: bitwiseAr */ #include <Wire.h> // incluye libreria de bus I2C #include <Adafruit_Sensor.h> // incluye librerias para sensor BMP280 #include <Adafruit_BMP280.h> Adafruit_BMP280 bmp; // crea objeto con nombre bmp float TEMPERATURA; // variable para almacenar valor de temperatura float PRESION, P0; // variables para almacenar valor de presion atmosferica // y presion actual como referencia para altitud void setup() { Serial.begin(9600); // inicializa comunicacion serie a 9600 bps Serial.println("Iniciando:"); // texto de inicio if ( !bmp.begin() ) { // si falla la comunicacion con el sensor mostrar Serial.println("BMP280 no encontrado !"); // texto y detener flujo del programa while (1); // mediante bucle infinito } P0 = bmp.readPressure()/100; // almacena en P0 el valor actual de presion } // en hectopascales para calculo de altitud relativa void loop() { TEMPERATURA = bmp.readTemperature(); // almacena en variable el valor de temperatura PRESION = bmp.readPressure()/100; // almacena en variable el valor de presion divido // por 100 para covertirlo a hectopascales Serial.print("Temperatura: "); // muestra texto Serial.print(TEMPERATURA); // muestra valor de la variable Serial.print(" C "); // muestra letra C indicando grados centigrados Serial.print("Presion: "); // muestra texto Serial.print(PRESION); // muestra valor de la variable Serial.println(" hPa"); // muestra texto hPa indicando hectopascales Serial.print("Altitud aprox: "); // muestra texto Serial.print(bmp.readAltitude(P0)); // muestra valor de altitud con referencia a P0 Serial.println(" m"); // muestra letra m indicando metros delay(5000); // demora de 5 segundos entre lecturas }
Pulsa aquí para descargar el código "arduino-bmp280.ino"
Este código se ha descargado de la página web https://github.com/bitwiseAr/Curso-Arduino-desde-cero/tree/master/Capitulo36 en el que también se ofrecen vídeos mostrando su funcionamiento: https://www.youtube.com/watch?v=LtZ_b2WVMrU y de otros temas que forman el curso "Arduino desde cero en Español".
En el "Monitor Serie" del Arduino IDE se pueden ver los valores otenidos de temperatura, presión atmosférica, altitud y humedad...
Ver información del sensor BMP280