Jste zde

Měření podmínek prostředí s Raspberry Pi a Pimoroni Enviro+

Měření teploty, vlhkosti, tlaku, osvětlení, koncentraci plynů pro Raspberry Pi? Navíc s vlastním malým LCD pro funkci i bez externího displeje? To umožňuje malinkatá rozširující pHAT deska Pimoroni Enviro+Air Quality a i hotové připravené Python programy pro rychlé zprovoznění.

K čemu je Pimoroni Enviro+ ?

Pimoroni Enviro+ (celým názvem Pimoroni Enviro+Air Quality) se nazývá zajímavá rozšiřující měřící deska pro počítačové moduly Raspberry Pi, která provádí kompletní měření většiny veličin pro kompletní identifikaci kvality prostředí, tedy nejen klasických veličin jako jsou teplota nebo vlhkost, ale i hodnoty tlaku vzduchu, kvality vzduchu, hodnotu nebo úrovně osvětlení. Tedy nejde zde o samostatně fungující měřící desku, ale o tzv. pHAT rozšiřující doplněk k počítačové desce Raspberry Pi, na které běží vlastní řídící program. Až ten naměřené informace Pimoroni Enviro+ deskou vyhodnocuje, zpracovává a nějakým způsobem následně prezentuje uživateli.

Dá se říct, že Pimoroni Enviro+ je vlastně o takový sdružený multifunkční měřící modul, který v sobě implementuje různé senzory různých veličin. Navíc však obsahuje i malinký 0,96 palcový LCD displej pro základní prezentaci naměřených hodnot. To co bude displej zobrazovat však libovolně závisí na programu, běžící na Raspberry Pi. Není tedy přímo ovládaný nějakým procesorem na Enviro+ desce. Ten čistě realizuje jen komunikační interface mezi Raspberry Pi a na desce osazenými senzory / displejem.

Pimoroni Enviro+ hardware

Pimoroni Enviro+ svými rozměry je přesně přizpůsobená rozměrů Raspberry Pi řady Zero (konkrétně 65x30x8,5mm), ale protože se připojuje přes standardní 40-pinový Raspberry Pi GPIO konektor, lze jej libovolně použít pro jakoukoliv Raspberry Pi desku. Přes něj se provádí jak napájení destičky, tak i jejích komunikace prostřednictvím I2C a SPI séeriové komunikace. Po připojení na GPIO piny Raspberry Pi tak již není potřeba po hardwarové stránce nic dalšího propojovat a Pimoroni Enviro+ je připraveno k měření.

Rozšiřující deska Pimoroni Enviro+ z obou stran.

Deska Enviro+ je rozměrově plně kompatibilní s procesorovou deskou Raspberry PI Zero.

Na desce jsou konkrétně osazeny následující komponenty:

  •  Osazené senzory:
    • BME280 = senzor teploty, tlaku, vlhkosti (datasheet)
    • LTR-559 = senzor osvětlení a přiblížení (datasheet)
    • MICS6814 = analogový senzor koncentrace plynů (datasheet)
  • Další osazené prvky:
    • ADS1015 analog-digitální převodník (ADC) (datasheet)
    • MEMS mikrofon (datasheet)
    • 0,96" barevný LCD displej s rozlišením 160x80 pixelů.

Senzor kvality vzduchu MICS6814

Rozhodně nejzajímavější je právě kombinovaný senzor kvality vzduchu MICS6814, který sice není tak miniaturní ani již plně digitální jako senzory Sensirion, ale zase ve sobě v jednom pouzdře poskytuje více integrovaných měřících "plošek" a tedy díky tomu současně měří jak koncentraci CO, NOx, tak i VOC plyny. Přesněji řečeno, v přímo v senzoru se měří 3 veličiny, tedy koncentrace tzv. oxidačních plynů, koncentraci redukčních plynů a koncentraci NH3. Zatímco mezi oxidační plyny patří například NO či NO2, mezi redukční plyny například CO, H2S, vodík nebo VOC plyny (např. ethanol, isobutan, metan). Pomocí měřícího místa na  kategorie NH3 pak lze měřit nejen amoniak, ale i ethanol, vodík, propan či isobutan.

Aktuální hodnoty těchto koncentrací jsou snímány v podobě hodnoty odporu různých 3 měřících plošek uvnitř senzoru, které jsou zapojeny do můstku, tak, že výstupem každé snímací části je napětí. To je následně přiváděno na v senzoru integrovaný A/D převodník a následně je v procesoru desky Enviro+ přepočítávána na číselnou hodnotu odporu v Ohmech.

Tyto odpory se budou pohybovat od nízkých stovek ohmů po desítky tisíc ohmů a budou se lišit v závislosti na úrovních každé skupiny plynů. Protože každá skupina plynů může být směsí různých plynů, není možné konkrétně vyčlenit žádný konkrétní plyn nebo přesně kvantifikovat jeho hladiny. Výrobce senzoru proto radí, že nejlepším způsobem, jak interpretovat data, je odečítat hodnoty dokud se nestabilizují, nestanoví základní linii, a poté definovat referenční hladinu a následné změny kvality vzduchu interpretovat vzhledem k ní. Hodnota el. odporu redukčního a NH3 snímacího místa bude klesat s rostoucí koncentrací plynů,  zatímco el. odpor oxidačního snímače se bude zvyšovat se zvyšujícími se hladinami např. oxidu dusičitého.

Průběžně naměřené hodnoty odporů odpovídající koncentrací plynů jsou tedy průběžně updatovány v paměti desky Enviro+ a k dispozici pro přečtení prostřednictvím SPI sběrnice OS Raspberry Pi a v něm běžícího uživatelského programu. V základu tedy jsou tedy v Python programu běžící v Raspberry Pi k dispozici signály s hodnotami v ohmech, které lze buď přímo zobrazovat a nebo v programu zpracovat a převést na některou jednotku koncentrace či lépe index kvality vzduchu. K tomu lze využít i převodní charakteristiky a výpočty uvedené přímo v datasheetu senzoru.

 

Převodní charakteristiky senzoru MICS6814 na pHAT desce Enviro+.

Senzor teploty, tlaku a vlhkosti BME280

BME280 je elegantní malý senzor "počasí", který měří teplotu, tlak a vlhkost. Znečištění ovzduší, a zejména částicemi, mohou být ovlivněny změnami počasí, takže měření teploty, vlhkosti a tlaku na desce Enviro+ je pro určení kvality prostředí užitečné. Na desce Enviro+ je snímač BME280 záměrně umístěn až na levém okraji desky, aby byl umístěn co nejdále o "topícího" procesoru Raspberry Pi. Senzoru je také na plošném spoji od ostatních obvodů oddělen otvorem (vzduchovou mezerou), který pomáhá snižovat teplo vyzařované dalšími obvody desky Enviro+.

Provedení a blkokové schéma senzoru Bosch BDE280 použitého na desce Enviro+.

Světelný a přibližovací senzor LTR-559

Senzor LTR-559 umí měřit hladinu okolního světla v jednotkách Lux (jednotka intenzity světla) a má také snímač přiblížení. LTR-559 je stejný druh senzoru, jaký se nachází ve fotoaparátu např. v mobilním telefonu, a který automaticky ztlumí a zesvětlí obrazovku v závislosti na úrovni světla či deaktivuje dotykovou obrazovku, když je u ucha. Senzor přiblížení LTR-559 je skvělý pro čtení úrovně světla a je velmi užitečný i jako bezdotykový detektor přiblížení. V tomto režimu se také používá v jednom z Pimoroni Python vzorových programů k přepínání zobrazení různých dat na LCD. Na desce je označen jako "LIGHT".

Pimoroni Enviro+ software

Aby bylo možné si alespoň zobrazit hodnoty měřící desky Pimoroni Enviro+, je nutné Raspberry Pi jednak aktivovat / nastavit SPI komunikaci a pak spustit vhodný program v programovacím jazyce Python. Naštěstí není nutné nic od nuly programovat a pro rychlý rozjezd měření a dokonce i případný i základní provoz a měření lze využít hotové Python programy přímo od výrobce Pimoroni. Na GitHubu Pimoroni v adresáři https://github.com/pimoroni/enviroplus-python lze najít hned několik různých verzí Python programů, podle toho, jaká měření chcete provozovat a také, zda chcete používat přídavný mini displej například pro zobrazování některých hodnot. 

Konkrétně na GitHub adrese https://github.com/pimoroni/enviroplus-python/tree/master/examples najdete následující Python programy (platné k 28.2.2021):

 

Pro první kompletní odzkoušení možností měření desky Enviro+ je ideální Python program "all-in-one-no-pm.py", což je program využívající výše uvedené senzory MICS6814 a BME280 na desce, zobrazení jejich aktuálních hodnot na mini LCD displeji s přepínáním zobrazení pomocí přiblížením prstu k senzoru "Light" (LTR-559). Přídomek "no-pm" znamená, že se program nesnaží číst data z externího senzoru PM částic, který není standardní součástí desky Enviro+ a musí se zvlášť dokoupit.

Nejdříve je však nutné při prvním zprovozňování nahrát do Raspberry Pi OS potřebné knihovny, opět z GitHub webu Pimoroni. To lze udělat snadno spuštěním skriptu z terminálu následujícími příkazy:

Instalační skript i povolí potřebnou I2C, SPI a UART komunikaci, deaktivuje sériovou konzoly. Následně je dobré udělat kompletní reboot OS.

Pak už lze jen spustit výše uvedený stáhnutý Python program "python all-in-one-no-pm.py" (případně "python3 all-in-one-no-pm.py"). A pak se již jednak naměřené hodnoty začnou zobrazovat jednak v terminálu na obrazovce OS Raspberry a pak hlavně i v na mini displeji na desce Enviro+. Jako první se zobrazuje teplota, ale opakovaným přiblížením prstu na plošku senzoru "LIGHT" se postupně přepíná zobrazení na další měřené veličiny.

Pokud ale chcete využívat Enviro+ napojení na Raspberry Pi Zero jako samostatný senzor a ne vždycky to dělat ručně po zapnutí napájení, tak musíte python program vložit do seznamu programů automaticky spouštěných po startu operačního systému. Tuto funkci spouštění programů po bootu OS realizuje prostřednictvím tzv. globálního systémového procesu plánovače úloh "Cron", který se nastavuje pomocí systémového souboru "crontab".

V programu terminálu zadejte "crontab -e" a poté vyberte jako editor program "nano". Pomocí kláves se šipkami přejděte dolů do spodní části souboru a zadejte následující řádek:

  • @reboot sudo python /home/pi/enviroplus-python/examples/all-in-one-no-pm.py &

Zkontrolujte znovu tento příkaz, abyste se ujistili, že je přesně správný, protože jakákoli chyba způsobí, že se při spuštění nespustí. Stiskněte "CTRL+x", poté "y", poté "Enter" pro ukončení a uložení nové karty. Nyní byste měli Raspberry Pi Zero vypnout či restartovat. Po novém zapnutí by již mělo měření automaticky najet, což indikuje zahájení zobrazování mini LCD na desce. Rozjezd je poměrně pomalý a proto je nutné míst trpělivost. Po zapnutí napájení je nutné vyčkat 30 - 60 sekund.

 

Ukázka zobrazení měření koncetrace oxidačních a NH3 plynů v hodnotách naměřeného odporu v kOhmech.

Závěr

Destička Pimoroni Enviro+ je zajímavý multifunkční měřící modul, který lze využít nejen pro "hraní" a různé vývojové aplikace a startupy, ale může i díky malému LCD displeji velmi dobře v kombinaci s Raspberry Pi Zero posloužit jako samostatný měřící senzor. Pokud využijete varianty Raspberry Pi Zero W, která má v sob+ i integrovanou WIFI komunikaci, lze si snadno vzdáleně z počítače do Raspberry Pi OS připojit. Pomocí aplikace NodeRed lze pak hodnoty prezentovat na interní webové stránce či je například s pomocí MQTT odesílat na cloud.

V dalším článku o Pimoroni Enviro+ s Raspberry Pi Zero se pak blíže podíváme právě na provedení a případné možné úpravy výše vedených ukázkových Python programů.

Odkazy:

Hodnocení článku: