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






