14.2.2018
Dostalo se mi do rukou velmi levné čidlo pro měření atmosférického tlaku. Čidlo se dá koupit například na Banggood - hledejte BMP280.
Za cenu několika desetikorun má čidlo vynikající vlastnosti:
Relativní přesnost dovoluje rozeznat spolehlivě gradient tlaku při změně výšky o jeden metr. Čidlo je proto možné použít například pro výškoměr v RC modelech.
Čidlo lze připojit jak pomocí sběrnice I2C, tak pomocí SPI. Pokud se připojuje čidlo k BeagleBone, je výhodnější využít sběrnici I2C. Na našich deskách jsou k této sběrnici připojené EEPROM paměti rozšiřujících desek a hodiny reálného času. Připojení dalšího čidla na I2C sběrnici díky tomu neobsadí další vývody procesoru.
Na nabídku rozšiřujících desek se můžete podívat v sekci hardware.
Čidlo jsem k rozšiřující desce úplně normálně přiletoval. Pro první experimenty doporučuji použít raději univerzální desku nebo jednoduchou drátovou montáž přes propojovací vodiče s konektory na koncích.
Sensor | BeagleBone |
---|---|
VCC | P9.3 |
GND | P9.1 |
SCL | P9.19 |
SDA | P9.20 |
Pomocí utility i2cdetect najděte své čidlo. Já jsem nalezl čidlo na adrese 0x76:
root@beaglebone:~# i2cdetect -y -r 2 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU 70: -- -- -- -- -- -- UU -- root@beaglebone:~#
Na adresách 0x54, 0x55, 0x56 a 0x57 jsou umístěné EEPROM rozšiřujících desek. Na adrese 0x6f jsou umístěně hodiny reálného času na rozšiřující desce. Konečně na adrese 0x76 je umístěné tlakové čidlo.
Informujte linuxový kernel, jak má zacházet se zařízením na I2C sběrnici:
root@beaglebone:~# echo bmp280 0x76 > /sys/class/i2c-adapter/i2c-2/new_device
Kernel automaticky natáhne potřebný modul a zpřístupní čidlo. Hodnotu tlaku můžete přečíst ze souboru v adresáři /sys:
root@beaglebone:~# cat /sys/bus/i2c/devices/i2c-2/2-0076/iio\:device0/in_pressure_input 96.608011718
Tlak je dle všeho udávaný v kPa.
Ve stejném adresáři najdete i údaje o teplotě a lze zde i nastavit frekvenci měření. Naše čidlo je umístěné v kaceláři, údaje o teplotě proto nelze použít. Místo toho jsou použité hodnoty ze dvou různých teploměrů umístěných na východním a západním okně budovy. Použita je vždy nižší hodnota teploty.
Čas měření | |
Naměřený tlak | Pa |
Tlak přepočtený na hladinu moře | Pa |
Teplota | °C |
Výstupem z čidla je absolutní hodnota atmosférického tlaku v místě měření. Aby bylo možné porovnávat měření tlaku v různých lokacích, přepočítává se naměřená hodnota tlaku a teploty na hladinu moře:
Pro správné zobrazení rovnice použijte webový prohlížeč s podporou MathML, například Firefox.
Čidlo je umístěné v Rožnově pod Radhoštěm. V okolí je umístěno několik dalších čidel:
První dvě uvedená čidla pochází od stejného výrobce. Naměřený absolutní tlak u těchto dvou čidel odpovídá hodnotě naměřené v kanceláři Hobrasoft, tlak přepočtený na hladinu moře se však výrazně liší. Třetí čidlo v Zašové (zhruba 10 km daleko) udává přepočtenou hodnotu srovnatelnou s naším čidlem.
Přepočtená hodnota tlaku našeho čidla odpovídá s tolerancí do jednoho hPa i s údaji z meteorologických modelů Aladin nebo Klara.
Rovnice uvedená výše, stejně tak různé kalkulačky dostupné na internetu, udávají hodnotu pro první dvě čidla tvrdošíjně jinou. Přepočet u prvních dvou čidel jsem se proto rozhodl raději ignorovat.
Linux a BeagleBone je pro obsluhu zařízení, jako je tlakové čidlo BMP280, užasný nástroj. Velikou spoustu různých driverů už Linux obsahuje, takže často stačí pouze připojit zařízení na sběrnici a Linux vám je zprostředkuje v podobě vhodné i pro aplikačního programátora.