Senzor barometrického tlaku BMP085 od firmy Bosch je oblíbený Arduino modul, který kromě senzoru tlaku obsahuje taktéž senzor teploty. S pomocí hodnot naměřených z obou senzorů pak lze získat také informace o aktuální nadmořské výšce. Tento modul BMP085 je tedy velmi vhodný do různých zapojení, kdy je třeba měřit okolní barometrický tlak a současně s tím můžeme také měřit teplotu a ušetřit tak jeden modul. Podle informací výrobce je možné měřit tlak v rozsahu 300 až 1100 hPa (hekto Pascalů), což odpovídá po přepočtu nadmořské výšce +9000m až -500m. Typická přesnost je pak ±1 hPa. Okolní teplotu je možné pomocí senzoru BMP085 měřit v rozsahu 0 až +65 stupňů Celsia s přesností ±1 °C.
Pro úspěšné propojení senzoru BMP085 s Arduino deskou je potřeba propojit celkem 4 vodiče. Pro zapojení napájení lze využít +3V3 nebo +5V napájecí pin, kdy je třeba propojit jeden ze zmíněných pinů s odpovídajícím napájecím pinem na Arduino desce. Dále propojíme GND se zemí, SDA na A4 a SCL na A5. Piny SDA a SCL jsou připojeny na I2C sběrnici a zmíněné piny A4 a A5 platí pro použitou desku Arduino Uno.
Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu BMP085, návod jak na to je uveden zde. Ukázkový kód obsahuje na začátku připojení potřebných knihoven a jako další krok inicializaci senzoru BMP085 z knihovny BMP085. V podprogramu setup je nastavena jako první komunikace po sériové lince a následně zapnuta komunikace se senzorem BMP085. V nekonečné smyčce loop je pak uvedena ukázka výpisu všech měřitelných informací ze senzoru, tedy teploty, barometrického tlaku a nadmořské výšky. Pokud budeme chtít tyto hodnoty ukládat do proměnných a dále je používat, je vhodné použít proměnné typu float, tedy čísla s desetinnou čárkou. Na konci programu je pak už jen pauza pro přehlednější výpis.
Po nahrání programu do Arduino desky s připojeným senzorem BMP085 dostaneme například tento výpis:
// Senzor barometrického tlaku Bosch BMP085 // připojení knihoven Wire a BMP085 #include <Wire.h> #include <Adafruit_BMP085.h> // inicializace senzoru BMP085 z knihovny BMP085 Adafruit_BMP085 bmp085; void setup() { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // zapnutí komunikace se senzorem BMP085 bmp085.begin(); } void loop() { // výpis teploty ve stupních Celsia Serial.print("Teplota: "); Serial.print(bmp085.readTemperature()); Serial.println(" stupnu Celsia"); // výpis barometrického tlaku v hekto Pascalech Serial.print("Barometricky tlak: "); Serial.print(bmp085.readPressure()/100); Serial.println(" hPa"); // výpis nadmořské výšky při započítání // běžné hodnoty tlaku 1013,25 hekto Pascalů Serial.print("Nadmorska vyska: "); Serial.print(bmp085.readAltitude()); Serial.println(" metru"); Serial.println("------------------------------"); // pauza pro přehlednější výpis delay(2000); }
Senzor barometrického tlaku a teploty BMP085 je vhodné používat z mnoha důvodů, mezi které patří například jeho dobrý poměr cena/přesnost, kombinace měření tlaku a teploty či zabrání pouze 2 datových pinů díky komunikaci přes I2C sběrnici. Jako poznámku bych rád uvedl svoji zkušenost, kdy po delším používání jsem při porovnání s hodnotami naměřeného tlaku meteorologickou stanicí v okolí zjistil konstantní rozdíl mezi mnou a stanicí naměřenou hodnotou tlaku. Tento konstantní rozdíl činil v mém případě 32 hPa, stačilo tedy tuto hodnotu vždy přičíst k mé naměřené a výsledkem byly hodnoty odpovídající udávaným meteorologickou stanicí. Pokud byste rádi postavili vlastní domácí meteorologickou stanici, tento senzor je vhodným kandidátem.
Teplota: 27.20 stupnu Celsia Barometricky tlak: 980 hPa Nadmorska vyska: 276.05 metru ------------------------------ Teplota: 27.10 stupnu Celsia Barometricky tlak: 980 hPa Nadmorska vyska: 276.39 metru ------------------------------ Teplota: 27.10 stupnu Celsia Barometricky tlak: 980 hPa Nadmorska vyska: 276.39 metru ------------------------------
Seznam použitých komponent:
http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
http://dratek.cz/arduino/1227-7-ks-mini-nepajive-pole-25-kontaktu-1458405292.html