Modul pro měření teploty, vlhkosti a barometrického tlaku obsahuje precizní senzor BME280. Tento měřící senzor od firmy Bosch komunikuje přes rozhraní I2C a zvládá komunikovat rychlostí až 3,4 MHz. Co se týká provozních a měřících rozsahů senzoru BME280, tak u teploty je to -40 až +85 stupňů Celsia, u vlhkosti 0 až 100% a tlak lze měřit v rozsahu 300 až 1100 hektoPascalů. Rozlišení u měřených veličin je 0,01 stupně Celsia u teploty, 0,008% u vlhkosti a 0,18 Pascalu u tlaku. Přesnost těchto veličin je pak +- 1 stupeň Celsia u teploty, +- 3% u vlhkosti a +- 1 Pascal u tlaku. Pro napájení modulu se senzorem BME280 můžeme použít rozsah napájecího napětí 1,8 až 5 Voltů.

BME280

Pro úspěšné propojení modulu se senzorem BME280 a Arduino desky je nutné zapojit 4 propojovací piny. Propojíme VIN s 3,3 nebo 5V Arduina, GND se zemí Arduina, SCL s pinem A5 a SDA s pinem A4. Datové piny SCL a SDA je nutné zapojit na I2C piny použité Arduino desky, kdy například u Arduino Uno desky jsou to zmíněné piny A4 a A5.

Schéma zapojení BME280

Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu BME280, návod jak na to je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebných knihoven, definování adresy 0x76 pro komunikaci po I2C rozhraní a poté inicializaci senzoru z připojené knihovny. V podprogramu setup jako první nastavíme komunikaci po sériové lince a následně zahájíme komunikaci se senzorem BME280. Pokud by však selhalo nastavení komunikace, vytiskne se po sériové lince chybová hláška a program se zastaví. Nekonečná smyčka loop pak obsahuje pouze vytištění všech dostupných údajů, tedy teploty, relativní vlhkosti a barometrického tlaku následované pauzou po dobu dvou vteřin.

// Modul pro měření teploty, vlhkosti a barometrického tlaku se senzorem BME280

// připojení potřebných knihoven
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
// nastavení adresy senzoru
#define BME280_ADRESA (0x76)
// inicializace senzoru BME z knihovny
Adafruit_BME280 bme;

void setup() {
  // komunikace po sériové lince rychlostí 9600 baud
  Serial.begin(9600);
  // zahájení komunikace se senzorem BME280,
  // v případě chyby je vypsána hláška po sériové lince
  // a zastaven program
  if (!bme.begin(BME280_ADRESA)) {
    Serial.println("BME280 senzor nenalezen, zkontrolujte zapojeni!");
    while (1);
  }
}

void loop() {
  // výpis všech dostupných informací ze senzoru BMP
  // výpis teploty
  Serial.print("Teplota: ");
  Serial.print(bme.readTemperature());
  Serial.println(" stupnu Celsia.");
  // výpis relativní vlhkosti
  Serial.print("Relativni vlhkost: ");
  Serial.print(bme.readHumidity());
  Serial.println(" %");
  // výpis tlaku s přepočtem na hektoPascaly
  Serial.print("Tlak: ");
  Serial.print(bme.readPressure() / 100.0F);
  Serial.println(" hPa.");
  // vytištění prázdného řádku a pauza po dobu 2 vteřin
  Serial.println();
  delay(2000);
}

Po nahrání ukázkového kódu do Arduino desky s připojeným modulem se senzorem BME280 dostaneme například tento výsledek:

Teplota: 23.38 stupnu Celsia.
Relativni vlhkost: 28.66 %
Tlak: 1006.59 hPa.

Teplota: 23.39 stupnu Celsia.
Relativni vlhkost: 28.60 %
Tlak: 1006.61 hPa.

Teplota: 23.39 stupnu Celsia.
Relativni vlhkost: 28.73 %
Tlak: 1006.62 hPa.

Modul pro měření teploty, vlhkosti a barometrického tlaku se senzorem BME280 je jednoduše použitelným nástrojem pro měření zmíněných tří veličin. Díky jeho univerzálnosti ho tedy můžeme využít například v domácích měřících systémech či při stavbě vlastní meteostanice. Pro přesnější měření se ale příliš nehodí, hlavně díky svým horším přesnostem měřených veličin, které jsou popsány v prvním odstavci.

 

Seznam použitých komponent:

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/1361-bme280-modul-mereni-teploty-vlhkosti-a-barometrickeho-tlaku-precizni-1469214547.html

FB tw

Další podobné články