X

“BME680” (CJMCU-680) датчик качества воздуха и окружающей обстановки (газы, давление, влажность, температура)

Модуль  “CJMCU-680” выполнен  на базе датчика “BME680” от Bosch, позволяет измерять такие параметры окружающей среды, как: содержание газов в воздухе, а также давление, влажность, температуру воздуха и может использоваться для мониторинга и контроля качества воздуха в помещении и на улице.

Фото модуля CJMCU-680 (BME680)

Сенсор может измерять влажность с точностью ±3%, атмосферное давление ±1 hPa и температуру с точностью  ±1.0°C. Так как давление изменяется с высотой и этот датчик измеряет его очень точно, его можно использовать как высотомер с точностью ±1 метр.

Также датчик позволяет определять летучие органические соединения (VOC) в воздухе, поэтому его можно применять для мониторинга газов и  спиртов, таких как: спирт этиловый,  монооксид углерода- “CO” (уга́рный газ, о́кись углеро́да, оксид углерода) и выполнять измерения качества воздуха. При этом, сенсор не может измерить содержание конкретного газа или алкоголя, так как выдает значение общего содержания VOC соединений в воздухе.

Для работы с микроконтроллером “BME680” имеет интерфейсы “I2C” и “SPI”.

Подключение модуля “BME680” (CJMCU-680) к “Aduino”:

Cхема подключение модуля “CJMCU-680” к “Aduino” по интерфейсу SPI:

Таблица соединений “BME680” (CJMCU-680) с “Aduino” по интерфейсу SPI:

№ выводы Aduino
№ выводы CJMCU-680
тип описание
5V VCC +питание +питание
GND GND -питание -питание
13 SCL вход Serial clock input
12 SDO выход Serial data output
11 SDA вход Serial data input
10 CS вход Chip select

Для работы “BME-680” с “Aduino” нужно установить библиотеку – “Adafruit_BME680 library” – скачать либо с github repository, но проще установить через менеджер библиотек в Aduino IDE:

установка библиотеки “Adafruit_BME680”

В итоге должны быть установлены и подключены в скетче следующие библиотеки:
Wire.h
SPI.h
Adafruit_Sensor.h
Adafruit_BME680.h

Пример кода (скетч) для работы BME680 и Arduino по интерфейсу SPI:

/***************************************************************************
  This is a library for the BME680 gas, humidity, temperature & pressure sensor

  Designed specifically to work with the Adafruit BME680 Breakout
  ----> http://www.adafruit.com/products/3660

  These sensors use I2C or SPI to communicate, 2 or 4 pins are required
  to interface.

  Adafruit invests time and resources providing this open source code,
  please support Adafruit and open-source hardware by purchasing products
  from Adafruit!

  Written by Limor Fried & Kevin Townsend for Adafruit Industries.
  BSD license, all text above must be included in any redistribution
 ***************************************************************************/

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"

#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10

#define SEALEVELPRESSURE_HPA (1013.25)

//Adafruit_BME680 bme; // I2C
//Adafruit_BME680 bme(BME_CS); // hardware SPI
Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO,  BME_SCK);

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println(F("BME680 test"));

  if (!bme.begin()) {
    Serial.println("Could not find a valid BME680 sensor, check wiring!");
    while (1);
  }

  // Set up oversampling and filter initialization
  bme.setTemperatureOversampling(BME680_OS_8X);
  bme.setHumidityOversampling(BME680_OS_2X);
  bme.setPressureOversampling(BME680_OS_4X);
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  bme.setGasHeater(320, 150); // 320*C for 150 ms
}

void loop() {
  if (! bme.performReading()) {
    Serial.println("Failed to perform reading :(");
    return;
  }
  Serial.print("Temperature = ");
  Serial.print(bme.temperature);
  Serial.println(" *C");

  Serial.print("Pressure = ");
  //Serial.print(bme.pressure / 100.0);
  //Serial.println(" hPa");
  Serial.print(bme.pressure * 0.0075);
  Serial.println(" mm Hg");
  

  Serial.print("Humidity = ");
  Serial.print(bme.humidity);
  Serial.println(" %");

  Serial.print("Gas = ");
  Serial.print(bme.gas_resistance / 1000.0);
  Serial.println(" KOhms");

  Serial.print("Approx. Altitude = ");
  Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
  Serial.println(" m");

  Serial.println();
  delay(6000);
}
Данные с датчика BME680 в мониторе порта Ардуино.

Таблица выводов микросхемы BME680:

№ выводы микросхемы
назв. вывода тип описание
1 GND -питание Ground
2 CSB вход Chip select
3 SDI вход/выход Serial data inpu
4 SCK вход Serial clock input
5 SDO вход/выход Serial data output
6 Vddio питание Digital / Interface supply
7 GND -питание Ground
8 Vdd +питание Analog supply

datasheet “BME680”

admin: