Arduino UNO prueba el sensor ambiental BME680

Introducción a BME680

El BME680 es un sensor de detección ambiental digital cuatro en uno que puede medir la temperatura, la humedad, la presión del aire y los compuestos orgánicos volátiles (COV) del entorno circundante. El elemento sensible al óxido de metal interno se usa para medir los COV en el aire.La conductividad de la superficie del óxido de metal es diferente bajo diferentes concentraciones de COV y, por lo tanto, genera diferentes valores de resistencia. Este sensor puede dar una idea cualitativa de la suma de COV/contaminantes en el aire circundante, en lugar de moléculas de gas específicas.
inserte la descripción de la imagen aquí

componentes sensibles Rango de medición precisión
temperatura -40 a 85 ºC +/- 1,0ºC
humedad 0 a 100 % +/- 3 %
presión del aire 300 a 1100 hPa +/- 1hPa

Descripción de la interfaz

inserte la descripción de la imagen aquí
VCC Fuente de alimentación positiva 3.3-5V
GND Fuente de alimentación negativa
SCL Entrada de señal de reloj en modo SPI/IIC Modo
SDA SPI Entrada de señal de datos MOSI, entrada y salida
de señal de datos en modo IIC Salida de señal de datos MISO en modo SDO SPI, en modo IIC: Configuración de dirección de dispositivo IIC pin, cuando se conecta a GND, la dirección del dispositivo es 1110110 (0x76), cuando se conecta a VCC, la dirección del dispositivo es 1110111 (0x77)
pin de selección de modo CS SPI/IIC, cuando se conecta a VCC es el modo IIC, cuando se conecta a GND para el modo SPI

Cableado y programa BME680 y Arduino UNO

BME680 Método de cableado SPI Método de cableado IIC
SCL D13 A5
ASD D11 A4
SDO D12 /
CS D10 /

Método de cableado IIC

El administrador de la biblioteca Arduino IDE instala la biblioteca Adafruit_BME680 El administrador de la biblioteca Arduino IDE instala el código de ejemplo
inserte la descripción de la imagen aquí
Adafruit Unified SensorOpen
inserte la descripción de la imagen aquí

/***************************************************************************
  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 async test"));

  if (!bme.begin()) {
    
    
    Serial.println(F("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() {
    
    
  // Tell BME680 to begin measurement.
  unsigned long endTime = bme.beginReading();
  if (endTime == 0) {
    
    
    Serial.println(F("Failed to begin reading :("));
    return;
  }
  Serial.print(F("Reading started at "));
  Serial.print(millis());
  Serial.print(F(" and will finish at "));
  Serial.println(endTime);

  Serial.println(F("You can do other work during BME680 measurement."));
  delay(50); // This represents parallel work.
  // There's no need to delay() until millis() >= endTime: bme.endReading()
  // takes care of that. It's okay for parallel work to take longer than
  // BME680's measurement time.

  // Obtain measurement results from BME680. Note that this operation isn't
  // instantaneous even if milli() >= endTime due to I2C/SPI latency.
  if (!bme.endReading()) {
    
    
    Serial.println(F("Failed to complete reading :("));
    return;
  }
  Serial.print(F("Reading completed at "));
  Serial.println(millis());

  Serial.print(F("Temperature = "));
  Serial.print(bme.temperature);
  Serial.println(F(" *C"));

  Serial.print(F("Pressure = "));
  Serial.print(bme.pressure / 100.0);
  Serial.println(F(" hPa"));

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

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

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

  Serial.println();
  delay(2000);
}

Abra el monitor serie para mostrar los datos medidos por el sensor
inserte la descripción de la imagen aquí

Resumir

Cuando utilice el sensor por primera vez, se recomienda que los datos medidos sean relativamente estables y precisos después de 48 horas de funcionamiento. Este experimento permite utilizar de forma rápida e intuitiva el sensor para obtener los parámetros del entorno.

Supongo que te gusta

Origin blog.csdn.net/qq_42250136/article/details/122330231
Recomendado
Clasificación