Модуль “CJMCU-680” выполнен на базе датчика “BME680” от Bosch, позволяет измерять такие параметры окружающей среды, как: содержание газов в воздухе, а также давление, влажность, температуру воздуха и может использоваться для мониторинга и контроля качества воздуха в помещении и на улице.
Сенсор может измерять влажность с точностью ±3%, атмосферное давление ±1 hPa и температуру с точностью ±1.0°C. Так как давление изменяется с высотой и этот датчик измеряет его очень точно, его можно использовать как высотомер с точностью ±1 метр.
Также датчик позволяет определять летучие органические соединения (VOC) в воздухе, поэтому его можно применять для мониторинга газов и спиртов, таких как: спирт этиловый, монооксид углерода- “CO” (уга́рный газ, о́кись углеро́да, оксид углерода) и выполнять измерения качества воздуха. При этом, сенсор не может измерить содержание конкретного газа или алкоголя, так как выдает значение общего содержания VOC соединений в воздухе.
Для работы с микроконтроллером “BME680” имеет интерфейсы “I2C” и “SPI”.
Подключение модуля “BME680” (CJMCU-680) к “Aduino”:
Таблица соединений “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:
В итоге должны быть установлены и подключены в скетче следующие библиотеки:
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:
| № выводы микросхемы |
назв. вывода | тип | описание |
| 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 |