BME280 — датчик атмосферного давления, влажности и температуры
Сегодня расскажу о датчике BME280 с помощью которого можно получить показания влажности, температуры, атмосферного давления и высоту (расчетную). Данный датчик прост, предварительно откалиброван и для подключения не требуется дополнительных компонентов.
Технические параметры
► Напряжение питания: 3.3 В – 5 В
► Рабочий ток: 1 мA
► Диапазон измерения давления: 300 гПа – 1100 гПа (точность ±1.0 гПа)
► Диапазон измерения температуры: -40 °C до +85 °C (точность ±0.5 °C)
►Диапазон измерения влажности: 20 % до 80 % (точность ±3 %)
► Интерфейс: I2C
► Габариты: 12 мм х 10 мм
Общие сведения
Рассмотрим модуль поближе, в правой части расположен датчик BME280 фирмы Bosch (это приемник таких датчиков, как BMP180, BMP085). Данный датчик измеряет влажность, температуру и давление с помощью данных показаний осуществляется расчет высоты, но эти показания не точные, подробно о датчике можно посмотреть в документации. На обратной стороне установлен стабилизатор напряжения LM6206 на 3.3 В и преобразователь уровней I2C, поэтому можно подключить модуль к микроконтроллерам с 3.3 В или 5 В логикой, не боясь.
Назначение контактов:
► VCC, GND — питание модуля 3.3 В или 5 В
► SCL — линия тактирования (Serial CLock)
► SDA — линия данных (Serial Data)
Данный модуль работает по двухпроводному интерфейсу I2C, адрес по умолчанию 0x76, но есть возможность изменить на адрес 0x77. Если присмотреться на модуль, рядом с датчиком расположены контакты, по умолчанию левый и средний контакт замкнуты проводником. Необходимо острым предметом перерезать проводник и установить припоем перемычку между центральный и правым контактом,тем самым установив адрес 0x77. При необходимости можно вернуть адрес 0x76.
Подключение датчика давления BME280 к Arduino
Необходимые детали:
► BME280 — датчик атмосферного давления, влажности и температуры x 1 шт.
► Arduino UNO R3 (DCCduino, CH340G)x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.
Подключение:
В данном примере используем датчик BME280 и плату Arduino UNO R3, все получение показание отправлять в «Мониторинг порта», принципе и все, осталось собрать схему по рисунку ниже. Для интерфейса I2C на плате arduino предусмотрено только два вывода A4 и A5, другие вывода не поддерживают I2C, так что учтите при проектирование.
Программа:
Для датчика BME280 разработана библиотека «Adafruit BME280 Library» с помощью которой можно упростить работу с датчиком. Так же, для работы датчика необходима дополнительная библиотека «Adafruit Unified Sensor«. Скачать библиотеки можно в конце статьи или можно скачать через «Менеджер библиотек» в среде разработки IDE Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/* Тестировалось на Arduino IDE 1.8.5 Дата тестирования 23.05.2018г. */ #include <Wire.h> // Подключаем библиотеку Wire #include <Adafruit_Sensor.h> // Подключаем библиотеку Adafruit_Sensor #include <Adafruit_BME280.h> // Подключаем библиотеку Adafruit_BME280 #define SEALEVELPRESSURE_HPA (1013.25) // Задаем высоту Adafruit_BME280 bme; void setup() { Serial.begin(9600); // Открытие последовательного порта на скорости 9600 if (!bme.begin(0x76)) { // Инициализация датчика BME280 Serial.println("Could not find a valid BME280!"); // Печать сообщения об ошибки while (1); } } void loop() { Serial.print("Temperature = "); // Печать текста Serial.print(bme.readTemperature()); // Печать температуры Serial.println("*C"); // Печать текста Serial.print("Pressure = "); // Печать текста Serial.print(bme.readPressure() / 100.0F); // Печать атмосферное давление Serial.println("hPa"); // Печать текста Serial.print("Approx. Altitude = "); // Печать текста Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); // Вычисление высоты Serial.println("m"); // Печать текста Serial.print("Humidity = "); // Печать текста Serial.print(bme.readHumidity()); // Печать влажности Serial.println("%"); // Печать текста Serial.println(); // Новая строка delay(1000); // Пауза 1С } |
При открытие окна «Мониторинг порта» можно увидеть показания.
Описание скетча:
Программа начинается с подключение библиотек Wire.h , Adafruit_Sensor.h и Adafruit_BME280.h .
1 2 3 |
#include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> |
Далее мы указываем переменную SEALEVELPRESSURE_HPA, необходимую для вычисления высоты, и создаем объект библиотеки Adafruit_BME280
1 2 |
#define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme; |
В разделе void setup инициализируем последовательную связь с ПК и вызываем функцию begin(),
1 2 3 4 5 |
Serial.begin(9600); if (!bme.begin(0x76)) { Serial.println("Could not find a valid BME280 sensor, check wiring!"); while (1); } |
В разделе void loop используем следующие функции для считывания температуры, относительной влажности и барометрического давления из модуля BME280.
► Функция readTempera () — считываем показания температуру с датчика.
► Функция readPressure () — считываем показания атмосферное давление с датчика.
► Функция readAltitude (SEALEVELPRESSURE_HPA) — расчет высоты (в метрах) из заданного атмосферного давления (в гПа) и давления на уровне моря (в гПа).
► Функция readHumidity () — считываем относительную влажность с датчика.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println("*C"); Serial.print("Pressure = "); Serial.print(bme.readPressure() / 100.0F); Serial.println("hPa"); Serial.print("Approx. Altitude = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println("m"); Serial.print("Humidity = "); Serial.print(bme.readHumidity()); Serial.println("%"); |
Ссылки
Документация на BME280
Библиотека Adafruit BME280 Library
Библиотека Adafruit Unified Sensor
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
BME280 — датчик атмосферного давления, влажности и температуры
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
BME280 — датчик атмосферного давления, влажности и температуры
Спасибо! Четко и грамотно!
Хорошо организована работа RobotChip!
Дальнейших успехов и Удачи!
Подскажите что сделать для показа давления в мм. ртут. столба?