BME280 - mcworkshop

MC        WORKSHOP
Vai ai contenuti

Menu principale:

BME280

Projects
BME / BMP280
HW-611 E/P 280


clic to enlarge

Connection LCD I2C
SCL to SCL
SDA to SDA
GND to GND
VCC to 5V

Connection BME
SDA to A4
SCL to A5
GND to GND
VIN to 3.3

DS18B20 BME280
clic to enlarge

clic to enlarge

Per settare l'altitudine si consiglia di visualizzare il valore restituito dal BME e sommare o sottrarre l'altitudine corretta del punto in cui vi trovate. Non è una procedura tecnicamente corretta, ma funziona. Il settaggio va effettuato tutte le volte che volete utilizzare il dispositivo. Il dispositivo non va utilizzato come riferimento assoluto, bensì come indicazione relativa. Se volete usarlo per le escursioni sarà bene che voi abbiate una buona conoscenza della meteorologia. Sconsiglio l'utilizzo e soprattutto l'affidarsi a questo dispositivo come unica risorsa.
To set the altitude it is advisable to display the value returned by the BME and to add or subtract the correct altitude of the point where you are. It is not a technically correct procedure, but it works. The setting must be made as often as you want to use the device. The device should not be used as an absolute reference, but rather as a relative indication. If you want to use it for excursions it will be good if you have a good knowledge of meteorology. I do not recommend the use and above all the reliance on this device as the only resource.

Sketch

//altimetro, barometro, termometro, igrometro
//LCD I2C + test monitor seriale
//ottobre 2019 M.C.
//This example code is in the public domain.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
unsigned long delayTime;
void setup() {
 Serial.begin(9600);
 while (!Serial);
 Serial.println(F("BME280 test"));
 unsigned status;
 status = bme.begin();
 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);
   lcd.init();
 }
 Serial.println("-- Default Test --");
 delayTime = 1000;
 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();
 lcd.begin(16, 2);
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print (bme.readTemperature());
 lcd.print ("C ");
 lcd.print (bme.readPressure() / 100.0F);
 lcd.print ("P");
 lcd.setCursor(0, 1);
 lcd.print (bme.readAltitude(SEALEVELPRESSURE_HPA)+97);// fare la differenza tra altitudine restituita dal BME e quella effettiva.
 lcd.print ("m ");
 lcd.print (bme.readHumidity());
 lcd.print ("%");
}
 
Copyright 2015. All rights reserved.
Torna ai contenuti | Torna al menu