Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

BMP280:Medir temperatura, presión y altitud

Componentes y suministros

Arduino UNO
× 1
Adafruit BMP280
× 1
Adafruit OLED 128x32 i2c
× 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 * / # incluye  Adafruit_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 * / # incluye  Adafruit_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_Library
Biblioteca Adafruit GFX
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Esquemas

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

  1. Control de acceso con QR, RFID y verificación de temperatura
  2. Mide temperaturas con un sensor DS18B20 de 1 cable y Raspberry Pi
  3. Sensor de temperatura Python y Raspberry Pi
  4. Temperatura y humedad sencillas en Raspberry Pi
  5. Bricolaje:Regulación y monitoreo de temperatura para HomeBrew
  6. Lectura de Raspberry Pi BMP085 Temperatura y presión
  7. Medición de temperatura para proyectos científicos y de laboratorio
  8. Sensor de temperatura y luz Raspberry Pi
  9. Dispositivo de medición de flujo de aire a presión con sensor analógico
  10. Registrador de datos de temperatura y humedad
  11. Medición de frecuencia y ciclo de trabajo con Arduino