Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

BMP280:измерение температуры, давления и высоты

Компоненты и расходные материалы

Arduino UNO
× 1
Adafruit BMP280
× 1
Adafruit OLED 128x32 i2c
× 1

Об этом проекте

Здравствуйте, и добро пожаловать в это руководство, в котором я использую BMP280 для измерения температуры, давления, а также высоты с помощью платы Arduino UNO и OLED-дисплея. Вот некоторые из ключевых параметров BMP280 из его таблицы:

Итак, в этом проекте мы собираемся использовать модуль для измерения всех этих вещей как в метрической, так и в британской системе, как обычно, я не уверен в единицах измерения, но вы всегда можете преобразовать их с помощью кода, и вот компоненты, которые мы собираемся использование:

Тестирование и устранение неполадок:

После подключения модуля лучше протестировать код из примера библиотеки, его имя - «BMP280test», если ваш модуль не определяется, как показано на рисунке ниже:

Вы можете запустить код сканера i²c (но отключив любое другое устройство i²c, например ЖК-дисплей или OLED), и если ваш модуль не сломан или не имеет проблем с пайкой, вы увидите, что устройство обнаружено сканером :

Теперь обратите внимание на этот адрес и перейдите в файл библиотеки c ++, библиотека обычно устанавливается в папке «Documents / Arduino / Libraries»:

И откройте его в подходящем редакторе, я использую Dev c ++

Затем перейдите к строке «41» и _i2caddr замените «a» на адрес, который вы нашли на последовательном мониторе:

Сохраните все и закройте, библиотека предназначена для работы с модулями, которые имеют адрес i²c 0x77, но тот, который я использую, имеет 0x76.

Снова запустите тестовый код:

Тестовые изображения:

Надеюсь, это сработает для вас, и если у вас возникнут проблемы, оставьте это в комментарии.

Код

  • bmp280_Serial_metric.ino
  • bmp280_Serial_Imperial.ino
  • bmp280_OLED_m.ino
  • bmp280_OLED_US.ino
bmp280_Serial_metric.ino Arduino
 / * Этот код предназначен для использования с Adafruit BMP280 (метрическая система) * Он измеряет как температуру, так и давление и отображает их на последовательном мониторе с указанием высоты * Это модифицированная версия примера кода Adafruit * См. www.surtrtech .com или канал SurtrTech на Youtube * / # include  Adafruit_BMP280 bmp; // I2C Interfacevoid setup () {Serial.begin (9600); Serial.println (F («Тест BMP280»)); if (! bmp.begin ()) {Serial.println (F («Не удалось найти действующий датчик BMP280, проверьте проводку!»)); в то время как (1); } / * Настройки по умолчанию из таблицы. * / bmp.setSampling (Adafruit_BMP280 ::MODE_NORMAL, / * Рабочий режим. * / Adafruit_BMP280 ::SAMPLING_X2, / * Передискретизация температуры * / Adafruit_BMP280 ::SAMPLING_X16, / * Передискретизация давления * / Adafruit_BMP280 ::FILTER_BMP280 ::FILTER_ * / Adafruit_BMP280 ::STANDBY_MS_500); /* Время ожидания. * /} void loop () {Serial.print (F ("Температура =")); Serial.print (bmp.readTemperature ()); Serial.println ("* C"); Serial.print (F ("Давление =")); Serial.print (bmp.readPressure () / 100); // отображение давления в гПа, вы можете изменить единицу измерения Serial.println ("hPa"); Serial.print (F ("Примерная высота =")); Serial.print (bmp.readAltitude (1019.66)); // «1019,66» - это давление (гПа) на уровне моря в день в вашем регионе Serial.println («m»); // Если вы этого не знаете, измените его, пока не получите текущую высоту Serial.println (); задержка (2000);} 
bmp280_Serial_Imperial.ino Arduino
 / * Этот код предназначен для использования с Adafruit BMP280 (Imperial) * Он измеряет как температуру, так и давление и отображает их на последовательном мониторе с указанием высоты * Это модифицированная версия примера кода Adafruit * См. www.surtrtech .com или канал SurtrTech на Youtube * / # include  Adafruit_BMP280 bmp; // I2Cvoid setup () {Serial.begin (9600); Serial.println (F («Тест BMP280»)); if (! bmp.begin ()) {Serial.println (F («Не удалось найти действующий датчик BMP280, проверьте проводку!»)); в то время как (1); } / * Настройки по умолчанию из таблицы. * / bmp.setSampling (Adafruit_BMP280 ::MODE_NORMAL, / * Рабочий режим. * / Adafruit_BMP280 ::SAMPLING_X2, / * Передискретизация температуры * / Adafruit_BMP280 ::SAMPLING_X16, / * Передискретизация давления * / Adafruit_BMP280 ::FILTER_BMP280 ::FILTER_ * / Adafruit_BMP280 ::STANDBY_MS_500); /* Время ожидания. * /} void loop () {float f =bmp.readTemperature () * 9/5 + 32; // Преобразование из C в F Serial.print (F ("Temperature =")); Серийный принт (е); Serial.println ("* F"); float P =bmp.readPressure () / 3386.39; // отображение давления в дюймах ртутного столба, вы можете изменить единицы измерения Serial.print (F ("Pressure =")); Серийный принт (P); Serial.println («дюйм рт. Ст.»); float A =bmp.readAltitude (1019.66) * 3.28084; // «1019,66» - это давление (гПа) на уровне моря в день в вашем регионе Serial.print (F («Приблизительная высота =»)); // Если вы этого не знаете, измените его, пока не получите текущую высоту Serial.print (A); Serial.println ("футы"); Serial.println (); задержка (2000);} 
bmp280_OLED_m.ino Arduino
 / * Этот код предназначен для использования с Adafruit BMP280 и OLED-экраном (метрическая система) * Он измеряет температуру и давление и отображает их на OLED-дисплее с указанием высоты * Это модифицированная версия примера кода Adafruit * См. www.surtrtech.com или канал SurtrTech Youtube * / # include  // Библиотеки для OLED и BMP280 # include  #include  #define SCREEN_WIDTH 128 // Ширина экрана OLED, в пикселях # define SCREEN_HEIGHT 32 // Высота OLED-дисплея в пикселях # define OLED_RESET -1 // Сброс вывода # (или -1, если используется общий вывод сброса Arduino) Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Объявление отображаемого имени (display) Adafruit_BMP280 bmp; void setup () {bmp.begin (); // Запускаем bmp display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Запускаем OLED-дисплей display.clearDisplay (); display.display (); display.setTextColor (БЕЛЫЙ); display.setTextSize (1); display.print ("SurtrTech"); // Показываем имя, его можно удалить или заменить display.setCursor (32,12); display.setTextSize (2); display.println («BMP280»); display.display (); задержка (2000);} недействительный цикл () {display.clearDisplay (); float T =bmp.readTemperature (); // Считываем температуру в C float P =bmp.readPressure () / 100; // Считываем давление в Па и конвертируем в гПа float A =bmp.readAltitude (1019.66); // При вычислении высоты «1019,66» - это давление в (гПа) на уровне моря в день в вашем регионе // Если вы не знаете, просто измените его, пока не получите высоту вашего места display.setCursor (0 , 0); // Oled-дисплей, просто играем с размером текста и курсором, чтобы получить нужный дисплей display.setTextColor (WHITE); display.setTextSize (2); display.print («Температура»); 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); дисплей.печать (P); display.setCursor (110,10); display.print ("гПа"); display.setCursor (65,25); display.print ("Alt"); display.setCursor (90,25); display.print (A, 0); display.setCursor (110,25); display.print («м»); display.display (); задержка (2000);} 
bmp280_OLED_US.ino Arduino
 / * Этот код предназначен для использования с Adafruit BMP280 и OLED-экраном (Imperial) * Он измеряет как температуру, так и давление и отображает их на OLED-дисплее с указанием высоты * Это модифицированная версия примера кода Adafruit * См. www.surtrtech.com или канал SurtrTech Youtube * / #include  // Библиотеки для OLED и BMP280 # include  #include  #define SCREEN_WIDTH 128 // Ширина экрана OLED, в пикселях # define SCREEN_HEIGHT 32 // Высота OLED-дисплея в пикселях # define OLED_RESET -1 // Сброс вывода # (или -1, если используется общий вывод сброса Arduino) Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Объявление отображаемого имени (display) Adafruit_BMP280 bmp; void setup () {bmp.begin (); // Запускаем bmp display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // Запускаем OLED-дисплей display.clearDisplay (); display.display (); display.setTextColor (БЕЛЫЙ); display.setTextSize (1); display.print ("SurtrTech"); // Показываем имя, его можно удалить или заменить display.setCursor (32,12); display.setTextSize (2); display.println («BMP280»); display.display (); задержка (2000);} недействительный цикл () {display.clearDisplay (); float T =bmp.readTemperature () * 9/5 + 32; // Считываем температуру в C и конвертируем в F float P =bmp.readPressure () / 3386.39; // Считываем давление в Па и переводим в дюймы ртутного столба float A =bmp.readAltitude (1019.66) * 3.28084; // При вычислении высоты «1019,66» - это давление в (гПа) на уровне моря в день в вашем регионе // Если вы не знаете, просто измените его, пока не получите высоту вашего места display.setCursor (0 , 0); // Oled-дисплей, просто играем с размером текста и курсором, чтобы получить нужный дисплей display.setTextColor (WHITE); display.setTextSize (2); display.print («Температура»); 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); дисплей.печать (P); display.setCursor (100,10); display.print ("дюйм рт. ст."); display.setCursor (65,25); display.print ("Alt"); display.setCursor (90,25); display.print (A, 0); display.setCursor (110,25); display.print ("футы"); display.display (); задержка (2000);} 
BMP280_Adafruit_library
Вы можете изменить вещи, как в учебнике https://github.com/adafruit/Adafruit_BMP280_Library.
Библиотека Adafruit GFX
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Схема

Оба модуля используют интерфейс i²c, SDA / SCL с A4 и A5, BMP280 питается от 5 В, в то время как OLED использует 3,3 В.

Производственный процесс

  1. Контроль доступа с помощью QR, RFID и проверки температуры
  2. Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
  3. Датчик температуры Python и Raspberry Pi
  4. Простая температура и влажность на Raspberry Pi
  5. Сделай сам:мониторинг и регулирование температуры для домашнего пивоварения
  6. Raspberry Pi, считывающий температуру и давление BMP085
  7. Измерение температуры для лабораторных и научных проектов
  8. Датчик температуры и освещенности Raspberry Pi
  9. Устройство измерения расхода воздуха под давлением с аналоговым датчиком
  10. Регистратор данных температуры и влажности