BMP280:Medir temperatura, presión y altitud
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Acerca de este proyecto
Hola y bienvenido a este tutorial donde uso el BMP280 para medir temperatura, presión y también altitud, con la ayuda de una placa Arduino UNO y una pantalla OLED. Estos son algunos de los parámetros clave de BMP280 de su hoja de datos:
Entonces, para este proyecto, usaremos el módulo para medir todas estas cosas en sistemas métricos e imperiales como de costumbre, no estoy muy seguro acerca de las unidades, pero siempre puedes convertirlas a través del código, y aquí están los componentes que vamos a utilizar:
Prueba y solución de problemas:
Después de cablear su módulo, es mejor probar el código del ejemplo de la biblioteca, su nombre es "BMP280test", si su módulo no se detecta como en la siguiente imagen:
Puede ejecutar el código del escáner i²c (pero desenchufar cualquier otro dispositivo i²c como un LCD u OLED), y si su módulo no está roto o no tiene un problema de soldadura, verá que el dispositivo es detectado por el escáner :
Ahora tenga en cuenta esa dirección y vaya al archivo c ++ de su biblioteca, la biblioteca generalmente se instala en "Documentos / Arduino / Bibliotecas":
Y ábralo con un editor adecuado, estoy usando Dev c ++
Luego vaya a la línea "41" y _i2caddr cambie la "a" con la dirección que encontró en el monitor serial:
Guarde todo y cierre, la biblioteca está destinada a funcionar con módulos que tienen 0x77 como dirección i²c, pero el que estoy usando tiene 0x76.
Ejecute el código de prueba nuevamente:
Imágenes de prueba:
Espero que te funcione, y si tienes algún problema déjalo en un comentario.
Código
- bmp280_Serial_metric.ino
- bmp280_Serial_Imperial.ino
- bmp280_OLED_m.ino
- bmp280_OLED_US.ino
bmp280_Serial_metric.ino Arduino
/ * Este código es para usar con Adafruit BMP280 (Métrico) * Mide tanto la temperatura como la presión y las muestra en el monitor serial con la altitud * Es una versión modificada del código de ejemplo de Adafruit * Consulte www.surtrtech .com o SurtrTech canal de Youtube * / # incluyeAdafruit_BMP280 bmp; // I2C Interfacevoid setup () {Serial.begin (9600); Serial.println (F ("prueba BMP280")); if (! bmp.begin ()) {Serial.println (F ("No se pudo encontrar un sensor BMP280 válido, verifique el cableado!")); mientras (1); } / * Configuración predeterminada de la hoja de datos. * / bmp.setSampling (Adafruit_BMP280 ::MODE_NORMAL, / * Modo operativo. * / Adafruit_BMP280 ::SAMPLING_X2, / * Sobremuestreo de temperatura * / Adafruit_BMP280 ::SAMPLING_X16, / * Sobremuestreo de presión * / Adafruit_BMP280 ::/ FILTER_X. * / Adafruit_BMP280 ::STANDBY_MS_500); /* Tiempo de espera. * /} bucle vacío () {Serial.print (F ("Temperatura =")); Serial.print (bmp.readTemperature ()); Serial.println ("* C"); Serial.print (F ("Presión =")); Serial.print (bmp.readPressure () / 100); // mostrando la presión en hPa, puede cambiar la unidad Serial.println ("hPa"); Serial.print (F ("Altitud aproximada =")); Serial.print (bmp.readAltitude (1019.66)); // El "1019.66" es la presión (hPa) al nivel del mar en el día en su región Serial.println ("m"); // Si no lo sabe, modifíquelo hasta que obtenga su altitud actual Serial.println (); retraso (2000);}
bmp280_Serial_Imperial.ino Arduino
/ * Este código es para usar con Adafruit BMP280 (Imperial) * Mide tanto la temperatura como la presión y las muestra en el monitor serial con la altitud * Es una versión modificada del código de ejemplo de Adafruit * Consulte www.surtrtech .com o SurtrTech canal de Youtube * / # incluyeAdafruit_BMP280 bmp; // I2Cvoid setup () {Serial.begin (9600); Serial.println (F ("prueba BMP280")); if (! bmp.begin ()) {Serial.println (F ("No se pudo encontrar un sensor BMP280 válido, verifique el cableado!")); mientras (1); } / * Configuración predeterminada de la hoja de datos. * / bmp.setSampling (Adafruit_BMP280 ::MODE_NORMAL, / * Modo operativo. * / Adafruit_BMP280 ::SAMPLING_X2, / * Sobremuestreo de temperatura * / Adafruit_BMP280 ::SAMPLING_X16, / * Sobremuestreo de presión * / Adafruit_BMP280 ::/ FILTER_X. * / Adafruit_BMP280 ::STANDBY_MS_500); /* Tiempo de espera. * /} bucle vacío () {float f =bmp.readTemperature () * 9/5 + 32; // Conversión de C a F Serial.print (F ("Temperatura =")); Serial.print (f); Serial.println ("* F"); flotar P =bmp.readPressure () / 3386.39; // mostrando la presión en pulgadas de mercurio, puede cambiar la unidad Serial.print (F ("Presión =")); Serial.print (P); Serial.println ("inHg"); flotar A =bmp.readAltitude (1019.66) * 3.28084; // El "1019.66" es la presión (hPa) al nivel del mar en el día en su región Serial.print (F ("Altitud aproximada =")); // Si no lo sabe, modifíquelo hasta que obtenga su altitud actual Serial.print (A); Serial.println ("ft"); Serial.println (); retraso (2000);}
bmp280_OLED_m.ino Arduino
/ * Este código es para usar con Adafruit BMP280 y la pantalla OLED (métrica) * Mide tanto la temperatura como la presión y las muestra en la pantalla OLED con la altitud * Es una versión modificada del código de ejemplo de Adafruit * Consulte www.surtrtech.com o el canal de Youtube de SurtrTech * / # incluyen// Bibliotecas para OLED y BMP280 # incluyen #include #define SCREEN_WIDTH 128 // Ancho de pantalla OLED, en píxeles # definir SCREEN_HEIGHT 32 // Altura de la pantalla OLED, en píxeles # definir OLED_RESET -1 // Restablecer el pin # (o -1 si se comparte el pin de restablecimiento de Arduino) Pantalla Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Declarando el nombre para mostrar (mostrar) Adafruit_BMP280 bmp; void setup () {bmp.begin (); // Inicie el bmp display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Inicie la pantalla OLED display.clearDisplay (); display.display (); display.setTextColor (BLANCO); display.setTextSize (1); display.print ("SurtrTech"); // Muestra el nombre, puedes eliminarlo o reemplazarlo display.setCursor (32,12); display.setTextSize (2); display.println ("BMP280"); display.display (); delay (2000);} bucle vacío () {display.clearDisplay (); flotar T =bmp.readTemperature (); // Leer temperatura en C float P =bmp.readPressure () / 100; // Leer presión en Pa y conversión a hPa float A =bmp.readAltitude (1019.66); // Calculando la Altitud, el "1019.66" es la presión en (hPa) al nivel del mar durante el día en su región // Si no la conoce, modifíquela hasta que obtenga la altitud de su lugar display.setCursor (0 , 0); // Pantalla Oled, simplemente jugando con el tamaño del texto y el cursor para obtener la pantalla que desea display.setTextColor (WHITE); display.setTextSize (2); display.print ("Temp"); display.setCursor (0,18); display.print (T, 1); display.setCursor (50,17); display.setTextSize (1); display.print ("C"); display.setTextSize (1); display.setCursor (65,0); display.print ("Pres"); display.setCursor (65,10); display.print (P); display.setCursor (110,10); display.print ("hPa"); display.setCursor (65,25); display.print ("Alt"); display.setCursor (90,25); display.print (A, 0); display.setCursor (110,25); display.print ("m"); display.display (); retraso (2000);}
bmp280_OLED_US.ino Arduino
/ * Este código es para usar con Adafruit BMP280 y la pantalla OLED (Imperial) * Mide tanto la temperatura como la presión y las muestra en la pantalla OLED con la altitud * Es una versión modificada del código de ejemplo de Adafruit * Consulte www.surtrtech.com o SurtrTech canal de Youtube * / #include// Bibliotecas para OLED y BMP280 # incluyen #include #define SCREEN_WIDTH 128 // Ancho de pantalla OLED, en píxeles # definir SCREEN_HEIGHT 32 // Altura de la pantalla OLED, en píxeles # definir OLED_RESET -1 // Restablecer el pin # (o -1 si se comparte el pin de restablecimiento de Arduino) Pantalla Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Declarando el nombre para mostrar (mostrar) Adafruit_BMP280 bmp; void setup () {bmp.begin (); // Inicie el bmp display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Inicie la pantalla OLED display.clearDisplay (); display.display (); display.setTextColor (BLANCO); display.setTextSize (1); display.print ("SurtrTech"); // Muestra el nombre, puedes eliminarlo o reemplazarlo display.setCursor (32,12); display.setTextSize (2); display.println ("BMP280"); display.display (); delay (2000);} bucle vacío () {display.clearDisplay (); flotar T =bmp.readTemperature () * 9/5 + 32; // Leer temperatura en C y convertir a F float P =bmp.readPressure () / 3386.39; // Leer presión en Pa y conversión a pulgadas de mercurio flotador A =bmp.readAltitude (1019.66) * 3.28084; // Calculando la Altitud, el "1019.66" es la presión en (hPa) al nivel del mar durante el día en su región // Si no la conoce, modifíquela hasta que obtenga la altitud de su lugar display.setCursor (0 , 0); // Pantalla Oled, simplemente jugando con el tamaño del texto y el cursor para obtener la pantalla que desea display.setTextColor (WHITE); display.setTextSize (2); display.print ("Temp"); display.setCursor (0,18); display.print (T, 1); display.setCursor (50,17); display.setTextSize (1); display.print ("F"); display.setTextSize (1); display.setCursor (65,0); display.print ("Pres"); display.setCursor (65,10); display.print (P); display.setCursor (100,10); display.print ("inHg"); display.setCursor (65,25); display.print ("Alt"); display.setCursor (90,25); display.print (A, 0); display.setCursor (110,25); display.print ("ft"); display.display (); retraso (2000);}
BMP280_Adafruit_library
Es posible que desee cambiar cosas como en el tutorialhttps://github.com/adafruit/Adafruit_BMP280_LibraryBiblioteca Adafruit GFX
https://github.com/adafruit/Adafruit-GFX-LibraryAdafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306Esquemas
Ambos módulos usan la interfaz i²c, SDA / SCL con A4 y A5, el BMP280 está alimentado por 5v mientras que el OLED está usando 3.3v.Proceso de manufactura
- Control de acceso con QR, RFID y verificación de temperatura
- Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
- Sensor de temperatura Python y Raspberry Pi
- Temperatura y humedad sencillas en Raspberry Pi
- Bricolaje:Regulación y monitoreo de temperatura para HomeBrew
- Lectura de Raspberry Pi BMP085 Temperatura y presión
- Medición de temperatura para proyectos científicos y de laboratorio
- Sensor de temperatura y luz Raspberry Pi
- Dispositivo de medición de flujo de aire a presión con sensor analógico
- Registrador de datos de temperatura y humedad
- Medición de frecuencia y ciclo de trabajo con Arduino