"Ciencia y Tecnología" por Manolo: Sensor BME280 + placa ZUM core BQ

Marquesina

"AQUÍ NO NOS DETENEMOS A MIRAR EL PASADO POR MUCHO TIEMPO SIGUE SIEMPRE ADELANTE, ABRIENDO NUEVAS PUERTAS Y HACIENDO COSAS NUEVAS. SÉ CURIOSO" Walt Disney.

sábado, 22 de mayo de 2021

Sensor BME280 + placa ZUM core BQ

 Este sensor para es para arduino y no da lecturas de temperatura, presión y humedad.

El temperatura que puede llegar a medir es de -40ºC a 85ºC. 

La presión puede medir desde 300 a 1100 hPa.

Y la humedad puede ser medida desde 0 a 100% de humedad relativa.

Las precisiones son muy buenas para el fin que nosotros buscamos.

También se puede calcular la altura con respecto al mar en el que se encuentra el sensor.

En cuanto a la comunicación con la placa es la habitual en estos casos, es decir la SPI o la I2C que es la que vamos usar.

El voltaje de conexión puede ser de 3,3V o de 5 V.


Las conexiones con la placa ZUM core son las habituales, es decir:

Pin Arduino UNO/ZUM COREPin Arduino MEGA
VCC5 V.5 V.
GNDGNDGND
SCLA5Pin 21
SDAA4Pin 20

Aunque el dibujo de abajo es un core2 es válido para el core.

 


He señalado en el esquema que además de usar los pines analógicos A4 y A5 podemos usar los indicados con SCL y SDA.

Para la programación en Arduino uso la librería https://github.com/adafruit/Adafruit_BME280_Library

Y este es el programa que he usado para esta sensor.

#Compartir


  


#include <Wire.h>
//#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>



#define SEALEVELPRESSURE_HPA (1013.25)

Adafruit_BME280 bme; // I2C


unsigned long delayTime;


void setup() {
    Serial.begin(57600);
    while(!Serial);    // time to get serial running
    Serial.println(F("BME280 test"));
  
    unsigned status;
    
    // default settings
    status = bme.begin(0x76); //Comprobado con scaner I2C

      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) delay(10);    }        Serial.println("-- Default Test --");    delayTime = 10000;    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(); }