Цифровой датчик давления, температуры и влажности BME-280

Подключение к Arduino

Подключение довольно простое. Начните с соединения выводов GND на модуле и на плате Arduino, затем подключите вывод VIN к выводу 5V на Arduino.

Теперь остаются выводы, которые используются для связи I2C. Обратите внимание, что у разных плат Arduino для I2C используются разные выводы. На платах Arduino с разводкой R3 SDA (линия передачи данных) и SCL (линия синхронизации) находятся на разъеме выводов рядом с выводом AREF. Они также известны как A5 (SCL) и A4 (SDA).

Если у вас Arduino Mega, выводы будут отличаться! Вам необходимо использовать цифровые выводы 21 (SCL) и 20 (SDA). В таблице ниже приведены выводы, использующиеся для I2C на разных платах Arduino.

Установка библиотеки для работы с модулем

Нам потребуется библиотека Adafruit BME280

Чтобы установить библиотеку, перейдите в раздел «Скетч»→ «Подключить библиотеку» → «Управлять библиотеками…». Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте результаты поиска, набрав «bme280». Там должно быть пара записей. Ищите библиотеку Adafruit BME280 by Adafruit. Нажмите на эту запись, а затем выберите «Установка».

Библиотека датчиков BME280 использует Adafruit Sensor support backend, поэтому при установке Arduino IDE предложит установить и эти библиотеки. Соглашайтесь (Install all).

Скетч и прошивка

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

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

#define SEALEVELPRESSURE_HPA (1013.25) // Переменная для вычисления высоты

Adafruit_BME280 bme;

void setup() 
{
  Serial.begin(9600);

  if (!bme.begin(0x76)) // Если ваш модуль имеет другой адрес I2C или вы изменили его, вам нужно указать его правильно. 
  {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    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);
}