Ghid pentru senzorul BME280 cu Arduino (presiune, temperatură, umiditate)

versiunea originală

Acest ghid arată cum se utilizează modulul senzor BME280 cu Arduino pentru a citi presiunea, temperatura, umiditatea și altitudinea estimată. Vă vom arăta cum să conectați senzorul, să instalați bibliotecile necesare și să scrieți o schiță simplă pentru a afișa citirile senzorului.

Ghid pentru senzorul BME280 cu presiune, temperatură și umiditate Arduino

Ați putea dori, de asemenea, să citiți alte ghiduri BME280:

Introducerea modulului senzor BME280

Modulul Senzor BME280 citește presiunea barometrică, temperatura și umiditatea. Deoarece presiunea se schimbă cu altitudine, puteți estima și altitudinea. Există mai multe versiuni ale acestui modul senzor. Senzorul BME280 utilizează protocolul de comunicație I2C sau SPI pentru a schimba date cu un microcontroler.

Folosim modulul ilustrat în figura de mai jos.

Modulul senzor BME280 citește presiunea, temperatura și umiditatea

Acest senzor comunică prin intermediul protocolului de comunicație I2C, astfel încât cablarea este foarte simplă. Conectați senzorul BME280 la pinii Arduino Uno I2C așa cum se arată în tabelul de mai jos:

Există și alte versiuni ale acestui senzor care pot utiliza fie protocoale de comunicare SPI, fie I2C, cum ar fi modulul prezentat în figura următoare:

BME280 cu SPI și I2C

Dacă utilizați unul dintre acești senzori, pentru a utiliza protocolul de comunicație I2C, utilizați următorii pini:

BME280

SCK (Pin SCL)

SDI (PIN SDA)

Arduino

A5

A4

Dacă utilizați protocolul de comunicare SPI, trebuie să utilizați următorii pini:

Componente necesare

Pentru a finaliza acest tutorial aveți nevoie de următoarele componente:

Puteți utiliza link-urile precedente sau puteți merge direct la MakerAdvisor.com/tools pentru a găsi toate componentele pentru proiectele dvs. la cel mai bun preț!

Schema

Conectați senzorul BME280 la placa dvs. Arduino așa cum se arată în diagrama schematică următoare.

Arduino BME280 Diagrama schematică a cablării

Instalarea bibliotecii BME280

Pentru a obține citiri de la modulul senzor BME280, trebuie să utilizați biblioteca Adafruit_BME280. Urmați pașii următori pentru a instala biblioteca în Arduino IDE:

Deschideți Arduino IDE și mergeți la Sketch > Include Library > Manage Libraries. Managerul de bibliotecă trebuie să se deschidă.

Căutați "adafruit bme280" în caseta Search și instalați biblioteca.

Instalarea bibliotecii BME280 în IDE Arduino

Instalarea bibliotecii Adafruit_Sensor

Pentru a utiliza biblioteca BME280, trebuie să instalați și biblioteca Adafruit_Sensor. Urmați pașii următori pentru a instala biblioteca în Arduino IDE:

Accesați Sketch > Include Library > Manage Libraries și tastați "Adafruit Unified Sensor" în caseta de căutare. Derulați până la capăt pentru a găsi biblioteca și a o instala.

Instalarea bibliotecii șoferului Adafruit Unified Sensor

După instalarea bibliotecilor, reporniți Arduino IDE.

Citirea presiunii, temperaturii și umidității

Pentru a citi presiunea, temperatura și umiditatea, vom folosi un exemplu de schiță din bibliotecă.

Arduino BME280 Ghid de citire a temperaturii, umidității și schiței de presiune

După instalarea bibliotecii BME280 și a bibliotecii Adafruit_Sensor, deschideți Arduino IDE și mergeți la File > Examples > Adafruit BME280 library > bme280 test.

/*
* Complete Project Details https://randomnerdtutorials.com
*/

#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; // I2C
//Adafruit_BME280 bme(BME_CS); // hardware SPI
//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

unsigned long delayTime;

void setup() {
Serial.begin(9600);
Serial.println(F("BME280 test"));

bool status;

// default settings
// (you can also pass in a Wire library object like &Wire2)
status = bme.begin();
if (!status) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}

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");

// Convert temperature to Fahrenheit
/*Serial.print("Temperature = ");
Serial.print(1.8 * bme.readTemperature() + 32);
Serial.println(" *F");*/

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();
}

Vizualizați codul brut

Cum funcționează codul

Continuați să citiți această secțiune pentru a afla cum funcționează codul sau săriți la secțiunea "Demonstrație".

Biblioteci

Codul începe prin includerea bibliotecile necesare: biblioteca wire pentru a utiliza I2C, precum și bibliotecile Adafruit_Sensor și Adafruit_BME280 pentru interfața cu senzorul BME280.

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BME280.h>

Comunicația SPI

Deoarece am ales să folosim comunicația I2C, următoarele linii care definesc pinii SPI sunt comentate:

/*#define BME_SCK 13

#define BME_MISO 12

#define BME_MOSI 11

#define BME_CS 10*/

Presiunea la nivelul mării

Se creează o variabilă denumită SEALEVELPRESSURE_HPA.

#define SEALEVELPRESSURE_HPA (1013.25)

Această variabilă salvează presiunea la nivelul mării în hectopascal (este echivalentă cu milibar). Această variabilă este utilizată pentru a estima altitudinea pentru o anumită presiune prin compararea ei cu presiunea la nivelul mării. Acest exemplu utilizează valoarea implicită, dar pentru rezultate mai exacte, înlocuiți valoarea cu presiunea curentă la nivelul mării la locația dvs.

I2C

Acest exemplu utilizează în mod implicit protocolul de comunicație I2C. După cum puteți vedea, trebuie doar să creați un obiect Adafruit_BME280 numit bme.

Adafruit_BME280 bme; // I2C

Pentru a utiliza SPI, trebuie să comentați această linie anterioară și să dezactivați una dintre următoarele linii.

//Adafruit_BME280 bme(BME_CS); // hardware SPI

//Adafruit_BME280 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK); // software SPI

setup()

În setup () , porniți o comunicație serială:

Serial.begin(9600);

Și senzorul este inițializat:

status = bme.begin();

if (!status) {

Serial.println("Could not find a valid BME280 sensor, check wiring!");

while (1);

}

Notă: când testați senzorul, dacă nu puteți obține citiri ale senzorilor, trebuie să găsiți adresa I2C a senzorului BME280. Cu BME280 conectat la Arduino, executați schița scanerului I2C pentru a verifica adresa senzorului. Apoi, treceți adresa la metoda begin ().

Valorile de imprimare

În loop (), funcția printValues ​​() citește valorile de la BME280 și imprimă rezultatele în Monitorul Serial.

void loop() {

printValues();

delay(delayTime);

}

Citirea temperaturii, umidității, presiunii și altitudinii estimate este la fel de simplă ca și utilizarea următoarelor metode pe obiectul bme :

  • bme.readTemperature() – citește temperatura în Celsius;

  • bme.readHumidity () - citește umiditatea absolută;

  • bme.readPressure () - citește presiunea în hPa (hectoPascal = milibar);

  • bme.readAltitude (SEALEVELPRESSURE_HPA) - estimează altitudinea în metri bazată pe presiunea la nivelul mării.

Demonstrație

Arduino BME280 Citiți temperatura, umiditatea și schița de presiune

Încărcați codul pe placa Arduino.

Încărcați schița Arduino pentru senzorul BME280
Încărcați schița Arduino pentru senzorul BME280

Deschideți Monitorul Serial la o rată de transfer de 9600.Ar trebui să vedeți citirile afișate pe monitorul serial.

Arduino Sketch for BME280 Sensor Demonstration Serial Monitor

BME280 oferă un mod ușor și ieftin de a obține citiri de presiune, temperatură și umiditate. Senzorul comunică prin protocolul de comunicație I2C, ceea ce înseamnă că cablarea este foarte simplă, trebuie doar să conectați senzorul la pinii Arduino I2C.

Scrierea codului pentru a obține citirile senzorului este, de asemenea, foarte simplă datorită bibliotecii BME280_Adafruit. Trebuie doar să utilizați metodele readTemperature (), readHumidity () și readPressure (). De asemenea, puteți estima altitudinea utilizând metoda readAltitude ().

Avem ghiduri pentru alți senzori și module cu Arduino, pe care le puteți găsi utile:

Senzor de umiditate și temperatură DHT11 / DHT22 cu Arduino

Senzor de temperatură DS18B20 cu Arduino

Afișaj I2C OLED cu Arduino

Modul de releu cu Arduino

Senzor cu ultrasunete HC-SR04 cu Arduino

Dacă doriți să aflați mai multe despre Arduino, aruncați o privire la resursele noastre:

Arduino Curs de proiecte pas cu pas

Proiecte și tutoriale Arduino gratuite

Arduino Mini Course