Ghid pentru senzorul BME280 cu Arduino (presiune, temperatură, umiditate)
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.
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.
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:
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.
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 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.
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ă.
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();
}
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
Încărcați codul pe placa Arduino.
Deschideți Monitorul Serial la o rată de transfer de 9600.Ar trebui să vedeți citirile afișate pe monitorul serial.
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
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