Модуль “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:
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
/*************************************************************************** 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 |