Содержание
Обзор датчика BME280
Модуль BME280 предназначен для измерения атмосферного давления, температуры и влажности. Это очередной датчик давления фирмы Bosch Sensortec для измерения атмосферного давления и температуры. По сравнению с первыми датчиками серии (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Отличие от датчика BMP280 – наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.
Рисунок 1. Модуль BME280.
Технические характеристики модуля BME280
- Интерфейс: SPI, I2C;
- Напряжение питания: 3.3В;
- Диапазон измерений давления: 300-1100hPa;
- Диапазон измерений температуры: -40 - +85 °C;
- Диапазон измерений влажности: 0 - 100 %;
- Энергопотребление: режим измерений - 2.74 нА; в спящий режим: - 0.1 нА
- Точность измерений:давление - 0.01 hPa ( < 10 cm). Температура - 0.01° CВлажность – 3%
Подключение к плате Arduino
Датчик поддерживает два интерфейса – I2C и SPI, поэтому подключать модуль можно двумя способами . Для подключения по интерфейсу I2C используем 2 вывода Arduino.
Для подключения по протоколу SPI используем 4 вывода Arduino.
Схемы подключения к плате Arduino по протоколам I2C и SPI показаны на рис. 2 и 3. Обратите внимание, что напряжение питания датчика 3.3 В!!!
Рисунок 2. Схема соединений для подключения датчика BME280 по протоколу I2C
Рисунок 3. Схема соединений для подключения датчика BME280 по протоколу SPI
Для работы с датчиком необходимо установить две библиотеки – Adafruit BME280 Library и Adafruit Sensor. Для работы по протоколу I2C необходимо определить I2C-адрес нашего датчика, т.к. он может иметь адрес 0x76 или 0x77. Определяем адрес с помощью скетча I2C-сканер (скачать test_i2c_uno.zip). Подключаем датчик к плате Arduino согласно схеме соединений на рисунке 2, загружаем скетч и запускаем монитор последовательного порта (см. рис. 4).
Рисунок 4. Сканер I2C устройств
Подключим датчик BME280 к плате Arduino (схема соединений на рис. 2) и загрузим на плату пример BME280test из библиотеки Adafruit BME280 Library. Если I2C-адрес равен 0x76, необходимо внести изменения в файле Adafruit BME280.h библиотеки Adafruit BME280 Library (рис. 6).
Рисунок 5. Загрузка примера BME280test из библиотеки Adafruit BME280 Library
Рисунок 6. Изменения в файле Adafruit BME280.h
После загрузки скетча, открываем монитор последовательного порта и наблюдаем вывод значений атмосферного давления, температуры и влажности (рис. 7).
Рисунок 7. Вывод данных с датчика BME280 в монитор последовательного порта
Пример использования BME-280
Будем использовать следующие компоненты:
- Плата Arduino – 1;
- Плата прототипирования – 1;
- Датчик BME280 – 1;
- OLED-дисплей – 1;
- Провода.
Соединим элементы по схеме на рис. 8.
Рисунок 8. Схема соединений для подключения BME280 и OLED-дисплея 0.96"
Каждые 5 секунд считываем данные с датчика BME280 и выводим на дисплей. Для работы с OLED-дисплеем используем библиотеку OLED_I2C.
Содержимое скетча показано в листинге 1.
Листинг 1
#include <Wire.h> #include <SPI.h> // подключение библиотек #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> #include <OLED_I2C.h> #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME280 bme280; // BME280 на I2C OLED oled(SDA, SCL, 8); // extern uint8_t SmallFont[]; // шрифт unsigned long millist; String txt1=""; void setup() { Serial.begin(9600); bme280.begin(); oled.begin(); oled.setFont(SmallFont); } void loop() { // прошло 5 секунд? if(millis()-millist>=5000) { oled.clrScr(); // температура txt1="Temp="; txt1= txt1+String(bme280.readTemperature()); txt1= txt1+" *C"; oled.print(txt1, CENTER, 10); // влажность txt1="Hum="; txt1= txt1+String(bme280.readHumidity()); txt1= txt1+" %"; oled.print(txt1, CENTER, 25); // давление txt1="P="; txt1= txt1+String(bme280.readPressure() / 100.0F); txt1= txt1+" hPa"; oled.print(txt1, CENTER, 40); oled.update(); // новый отсчет 5 секунд millist=millis(); } }
Загружаем скетч на плату Arduino и смотрим вывод данных на OLED-дисплей (рис. 9).
Рисунок 9. Вывод данных на дисплей.
Часто задаваемые вопросы
- Проверьте правильность подключения датчика BME280 к плате Arduino.
- Проверьте I2C-адрес датчика BME280, при необходимости внесите изменения в файл Adafruit BME280.h.