Модуль датчика BME280 позволяет измерять не только значение атмосферного давления, но и температуру и влажность. Датчик характеризуется высокой точностью измерения, высоким быстродействием интерфейса и сверхмалым потреблением. Является емкостным датчиком и главным отличием от датчика BMP280 является наличие гигрометра, что позволяет измерять относительную влажность воздуха и создать на его основе маленькую метеостанцию.
Для подключения используется I2C- или SPI-интерфейс.
Пример: Подключение по I2C
|
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 |
#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 (может быть 0x77) 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С } |
Пример: Подключение по SPI
|
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
#include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BME280.h> #define BME_SCK 13 #define BME_MISO 12 #define BME_MOSI 11 #define BME_CS 10 #define SEALEVELPRESSURE_HPA (1013.25) //Adafruit_BME280 bme; // I2C Adafruit_BME280 bme(BME_CS); // hardware SPI //Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI unsigned long delayTime; void setup() { Serial.begin(9600); while (!Serial); Serial.println(F("BME280 test")); unsigned status; status = bme.begin(BME_CS); // Явно указываем CS пин if (!status) { Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!"); Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(), 16); Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n"); Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n"); Serial.print(" ID of 0x60 represents a BME 280.\n"); Serial.print(" ID of 0x61 represents a BME 680.\n"); while (1); } Serial.println("-- Default Test --"); delayTime = 1000; Serial.println(); } void loop() { printValues(); delay(delayTime); } void printValues() { 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(); } |
Скачать документацию (PDF)
Скачать библиотеку Adafruit_Sensor (ZIP)
Скачать библиотеку Adafruit_BME280 (ZIP)








