Aprende > Electrónica > Sensores > BMP20+AHT20
El BMP280 es un sensor barométrico de alta precisión y bajo consumo, diseñado para medir la presión atmosférica y la temperatura ambiental. Fabricado por Bosch Sensortec, este sensor es ampliamente utilizado en aplicaciones como estaciones meteorológicas, dispositivos de navegación, y en la industria de la Internet de las Cosas (IoT).
Rango de Medición de Presión:
300 hPa a 1100 hPa (equivalente a una altitud de -500 a 9000 metros sobre el nivel del mar).
Precisión de Medición de Presión:
Precisión absoluta típica: ±1 hPa
Precisión relativa típica: ±0.12 hPa (equivalente a ±1 metro)
Resolución: 0.16 Pa (equivalente a 1.3 cm de altitud).
Rango de Medición de Temperatura: -40 °C a +85 °C.
Precisión de Medición de Temperatura: ±1.0 °C.
Resolución de Temperatura: 0.01 °C.
Interfaces de Comunicación:
I2C (con direcciones 0x76 y 0x77 seleccionables).
SPI (3 o 4 hilos).
Consumo de Energía:
Modo ultra bajo consumo: 2.7 μA.
Modo normal: 4.2 μA.
Corriente de espera: 0.1 μA.
Voltaje de Operación: 1.71 V a 3.6 V.
Voltaje de Entrada/Salida (I/O): 1.2 V a 3.6 V.
Tiempo de Respuesta:
Modo rápido: 7.5 ms.
Modo ultra alto: 125 ms.
Dimensiones: 2.0 mm × 2.5 mm × 0.95 mm (L×W×H).
Peso: 0.2 g (aprox).
Características Principales
Alta Precisión: Ideal para aplicaciones que requieren mediciones exactas de presión y altitud, como estaciones meteorológicas y sistemas de navegación.
Bajo Consumo de Energía: Adecuado para dispositivos portátiles y aplicaciones IoT alimentadas por baterías.
Fácil Integración: Compatible con las interfaces I2C y SPI, permitiendo una sencilla conexión con microcontroladores como Arduino, Raspberry Pi, ESP32, entre otros.
Amplio Rango de Temperatura Operativa: Permite su uso en condiciones ambientales extremas, desde -40 °C hasta +85 °C.
Tamaño Compacto: Su pequeño tamaño lo hace ideal para aplicaciones en espacios reducidos o dispositivos móviles.
Versatilidad: Utilizado en una amplia gama de aplicaciones, incluyendo drones, dispositivos de navegación, wearables, y proyectos meteorológicos.
VCC
Descripción: Pin de alimentación.
Función: Suministra la energía al sensor.
Voltaje: 1.71V a 3.6V.
GND
Descripción: Pin de tierra.
Función: Referencia de tierra para el circuito.
SCL
Descripción: Pin de reloj de la interfaz de comunicación.
Función:
En modo I2C: Actúa como el pin de línea de reloj serial (SCL).
En modo SPI: Funciona como la línea de reloj serial (SCK).
SDA
Descripción: Pin de datos de la interfaz de comunicación.
Función:
En modo I2C: Actúa como el pin de línea de datos (SDA).
En modo SPI: Funciona como el pin de entrada de datos (SDI) y puede ser usado también como una línea bidireccional en el modo 3-hilos (SDIO).
Para usar el sensor BMP280 junto con el AHT20 en Arduino, necesitas instalar las siguientes bibliotecas en el Arduino IDE:
BMP280:
Adafruit BMP280 Library: Es una biblioteca popular que te permitirá interactuar con el sensor BMP280.
Para instalarla, sigue estos pasos:
Ve a "Programa (sketch)" > "Incluir librería (Include Library)" > "Gestor de librerías (Manage Libraries)..." en el Arduino IDE.
Busca "Adafruit BMP280".
Selecciona la biblioteca y haz clic en "Install".
AHT20:
Adafruit AHT20 Library: Esta biblioteca es compatible con el AHT20 y otros sensores de la serie AHT.
Para instalarla, sigue el mismo procedimiento que con la biblioteca del BMP280, pero busca "Adafruit AHT20" en lugar de "Adafruit BMP280".
Realizar la siguiente conexión para probar el sensor BMP280+AHT20.
Después de hacer la conexión carga el siguiente código al IDE de Arduino.
/*
Programa: Encender y apagar un led en Arduino uno. (Blink)
Curso: Arduino UNO
Autor: Expacio Science Group
*/
#include <Wire.h> // Incluye la biblioteca Wire para la comunicación I2C
#include <Adafruit_Sensor.h> // Incluye la biblioteca base para manejar sensores Adafruit
#include <Adafruit_AHTX0.h> // Incluye la biblioteca para el sensor AHT20 (AHTX0 es el nombre de la biblioteca para AHT20)
#include <Adafruit_BMP280.h> // Incluye la biblioteca para el sensor BMP280
// Crear objetos para los sensores
Adafruit_AHTX0 aht; // Crea un objeto para el sensor AHT20
Adafruit_BMP280 bmp; // Crea un objeto para el sensor BMP280 (usará la comunicación I2C)
// Función de configuración inicial, se ejecuta una vez al inicio
void setup() {
Serial.begin(9600); // Inicializa la comunicación serie a 9600 baudios
delay(1000); // Espera 1 segundo para permitir que el Monitor Serie se establezca correctamente
Serial.println("Iniciando sensores..."); // Imprime un mensaje en el Monitor Serie indicando que los sensores se están iniciando
// Iniciar el sensor AHT20
if (!aht.begin()) { // Intenta iniciar el sensor AHT20
Serial.println("No se pudo encontrar el sensor AHT20. Verifique la conexión."); // Mensaje de error si el sensor no se encuentra
while (1) delay(10); // Si no se encuentra el sensor, se detiene el programa y espera indefinidamente
}
Serial.println("Sensor AHT20 iniciado correctamente"); // Mensaje en el Monitor Serie indicando que el sensor AHT20 se ha iniciado correctamente
// Iniciar el sensor BMP280 con la dirección I2C 0x77
if (!bmp.begin(0x77)) { // Intenta iniciar el sensor BMP280 en la dirección I2C 0x77
Serial.println("No se pudo encontrar el sensor BMP280 en la dirección 0x77. Verifique la conexión."); // Mensaje de error si el sensor no se encuentra
while (1) delay(10); // Si no se encuentra el sensor, se detiene el programa y espera indefinidamente
}
Serial.println("Sensor BMP280 iniciado correctamente"); // Mensaje en el Monitor Serie indicando que el sensor BMP280 se ha iniciado correctamente
}
// Función principal que se ejecuta en un bucle infinito
void loop() {
// Leer datos del sensor AHT20
sensors_event_t humidity, temp; // Declara variables para almacenar los eventos de humedad y temperatura
aht.getEvent(&humidity, &temp); // Obtiene los eventos de humedad y temperatura del sensor AHT20
Serial.print("Temperatura AHT20: "); // Imprime el texto en el Monitor Serie
Serial.print(temp.temperature); // Imprime la temperatura leída del sensor AHT20
Serial.println(" °C"); // Imprime la unidad de medida (°C) y pasa a la siguiente línea
Serial.print("Humedad: "); // Imprime el texto en el Monitor Serie
Serial.print(humidity.relative_humidity); // Imprime la humedad relativa leída del sensor AHT20
Serial.println(" %"); // Imprime el símbolo de porcentaje (%) y pasa a la siguiente línea
// Leer datos del sensor BMP280
float bmpTemp = bmp.readTemperature(); // Lee la temperatura del sensor BMP280 y almacena el valor en bmpTemp
float pressure = bmp.readPressure() / 100.0F; // Lee la presión del sensor BMP280, la convierte de Pa a hPa y almacena el valor en pressure
Serial.print("Temperatura BMP280: "); // Imprime el texto en el Monitor Serie
Serial.print(bmpTemp); // Imprime la temperatura leída del sensor BMP280
Serial.println(" °C"); // Imprime la unidad de medida (°C) y pasa a la siguiente línea
Serial.print("Presión: "); // Imprime el texto en el Monitor Serie
Serial.print(pressure); // Imprime la presión leída del sensor BMP280
Serial.println(" hPa"); // Imprime la unidad de medida (hPa) y pasa a la siguiente línea
delay(2000); // Espera 2 segundos antes de realizar la siguiente lectura de los sensores
}
Al carga el código comprobamos las lecturas en el monitor series y listo podras usar el sensor en tus proyectos.
Para conocer el funcionamiento de otros sensores visita sensores.