BME280 — датчик атмосферного давления, влажности и температуры

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 В логикой, не боясь.

BME280 - датчик атмосферного давления, влажности и температуры

Назначение контактов:
► VCC, GND — питание модуля 3.3 В или 5 В
► SCL — линия тактирования (Serial CLock)
► SDA — линия данных (Serial Data)

Данный модуль работает по двухпроводному интерфейсу I2C, адрес по умолчанию 0x76, но есть возможность изменить на адрес 0x77. Если присмотреться на модуль, рядом с датчиком расположены контакты, по умолчанию левый и средний контакт замкнуты проводником. Необходимо острым предметом перерезать проводник и установить припоем перемычку между центральный и правым контактом,тем самым установив адрес 0x77. При необходимости можно вернуть адрес 0x76.

BME280 - датчик атмосферного давления, влажности и температуры

Подключение датчика давления 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 - датчик атмосферного давления, влажности и температуры

Программа:
Для датчика BME280 разработана библиотека «Adafruit BME280 Library» с помощью которой можно упростить работу с датчиком. Так же, для работы датчика необходима дополнительная библиотека «Adafruit Unified Sensor«. Скачать библиотеки можно в конце статьи или можно скачать через «Менеджер библиотек» в среде разработки IDE Arduino.

/* 
 Тестировалось на 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С
 }

Скачать скетч

При открытие окна «Мониторинг порта» можно увидеть показания.

BME280 - датчик атмосферного давления, влажности и температуры

Описание скетча:
Программа начинается с подключение библиотек Wire.h , Adafruit_Sensor.h и Adafruit_BME280.h .

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Далее мы указываем переменную SEALEVELPRESSURE_HPA, необходимую для вычисления высоты, и создаем объект библиотеки Adafruit_BME280

#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;

В разделе void setup инициализируем последовательную связь с ПК и вызываем функцию begin(),

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 () — считываем относительную влажность с датчика.

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 - датчик атмосферного давления, влажности и температуры

Ссылки
Документация на BME280
Библиотека Adafruit BME280 Library
Библиотека Adafruit Unified Sensor

Купить на Aliexpress
 Контроллер Arduino UNO R3
 Провода DuPont, 2,54 мм, 20 см
BME280 — датчик атмосферного давления, влажности и температуры

Купить в Самаре и области
 Контроллер Arduino UNO R3
 Провода DuPont, 2,54 мм, 20 см
BME280 — датчик атмосферного давления, влажности и температуры

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *