Ukázka materiálů
Last updated
Was this helpful?
Last updated
Was this helpful?
Z minulých lekcí víme, jak k našemu systému připojit základní prvky uživatelského rozhraní (tlačítka, LED, LCD displej, sériová linka), jak detekovat přiblížení uživatele, měřit úroveň osvětlení. V dnešní lekci náš systém rozšíříme o to, co můžete využít při sestavování vlastní meteostanice, tedy o měření atmosférických veličin. Konkrétně se bude jednat o dvě veličiny – TEPLOTU VZDUCHU a jeho RELATIVNÍ VLHKOST.
Pro měření teploty existuje velká spousta různých analogových i digitálních senzorů. Jednotlivé senzory se liší zejména citlivostí, rozsahy teplot, rozhraním atd.
Obdobně, jako v případě analogových senzorů, existuje i u digitálních senzorů řada rozhraní, přes která se data ze senzorů dají vyčítat. Mezi nejpopulárnější rozhraní patří například rozhraní SPI, I2C a 1-Wire. SPI (Serial Peripheral Interconnect) je synchronní sběrnice využívající čtyři vodiče. Sériový vstup a výstup jsou použity pro přenos dat, jeden vodič je pak použit k vedení hodinového signálu (a tedy k synchronizaci komunikace) a jeden vodič pak slouží k výběru prvku na sběrnici (tedy například konkrétního senzoru). I2C (Inter-Integrated Cicruit) je, obdobně jako SPI, synchronní sběrnice, která ale využívá pouze 2 vodiče. Jeden pro přenos dat a jeden k vedení hodinového signálu.
1-Wire je komunikační rozhraní založené na podobném principu, jako I2C, nicméně využívá pouze jediný vodič. Toto rozhraní se typicky používá u low-cost senzorů.
Bez ohledu na použité rozhraní se s digitálním senzorem pracuje většinou velmi podobně. Senzory často měří více veličin a ke zjištění přesné hodnoty je mnohdy potřeba vyčíst ze senzoru více údajů (např. kalibrační data). Veškeré informace bývají v senzoru uložené v tzv. registrech. V typickém případě je tedy nejprve nutné specifikovat, se kterým senzorem chceme komunikovat a poté určit, co (tedy jaký registr) chceme ze senzoru vyčíst. V jednodušších případech senzor při vyčítání vrátí všechna data najednou. V případě, že se senzor nachází ve větších vzdálenostech od měřícího systému, je třeba využít průmyslové sběrnice, jako například EIA485.
K měření relativní vlhkosti využijeme senzor DHT11 (také označovaný jako AM2303). Jedná se o kombinovaný digitální senzor relativní vlhkosti a teploty vzduchu využívající 1-Wire rozhraní. Z pouzdra senzoru jsou vyvedeny čtyři kontakty. Napájecí pin (VDD), zemnící pin (GND) a datový pin (DATA) senzoru budeme potřebovat. Jeden z pinů (NULL) nemá žádný účel a můžeme ho tedy ignorovat.
Úkol Projděte datasheet senzoru DHT11. Identifikujte piny senzoru. Jaké hodnoty napájecího napětí lze použít? Jaký rozsah relativní vlhkosti je senzor schopný měřit?
Připojení senzoru k našemu systému je jednoduché. 1-Wire rozhraní vyžaduje pull-up rezistor na datové lince (10 kΩ). Některé senzory mají již rezistor zabodovaný na desce. Lze tedy zapojit senzor třemi způsoby:
Zapojit přes nepájivé pole, kde využiji 10 kΩ rezistor jako pull-up.
Zapojit pomocí pull-up rezistoru zabudovaného na vybraných pinech mikrokontroleru.
Využít senzor, který má již u sebe na desce zabudovaný rezistor.
Pro vyčítání dat ze senzoru přes 1-Wire rozhraní použijeme dostupnou knihovnu DHT (nainstalujte v Arduino IDE přes Spravovat knihovny/Library Manager). Knihovna je určena pro příbuzné senzory DHT11 a DHT22 a rovnou nám dává k dispozici funkci vyčtení teploty a vyčtení vlhkosti.
ÚKOL Zjistěte jak se tyto funkce volají a doplňte je do níže uvedeného kódu. Projděte si celý kód a doplňte ho tam, kde vidíte '???'. Nejlepší varianta, jak zjistit jaké funkce knihovna nabízí, je podívat se přímo do souboru knihovny (DHT.h).
Po nahrání do mikrokontroleru by měl program každé 2 sekundy do sériové konzole vypsat aktuální hodnotu naměřené teploty a relativní vlhkosti vzduchu.
Úkol Znovu projděte datasheet senzoru. Proč vyčítáme senzor každé 2 sekundy?
Co jsme zvládli?
umíme zapojit digitální čidlo teploty a vlhkosti
víme o 3 nejpopulárnějších rozhraní pro digitální čidla
umíme si z knihovny vyčíst potřebné funkce
zlepšujeme se v debuggování kódu 😎