Senzor HTU21D je vstupní modul, který umožňuje s pomocí Arduina měřit teplotu a vlhkost v okolí. Tento senzor dokáže měřit teplotu v rozsahu -40 až +125 stupňů Celsia a vlhkost v rozsahu 0 až 100% relativní vlhkosti. Co se týká přesnosti měření, tak u teploty je přesnost typicky +- 0,3 °C a nejvíce přesné je měření v rozsahu 5 až 60 °C. Zatímco u vlhkosti je přesnost +- 1% RH a nejpřesněji dostaneme výsledek v rozsahu 10 až 90% RH. Napájecí napětí pro tento modul je výrobcem doporučeno v rozsahu 3,3 až 5 Voltů. Odebíraný elektrický proud je velmi nízký, kdy v klidu dosahuje maximální hodnoty 140 nanoAmpér a při měření maximálně 0,5 miliAmpér. Ke všem zmíněným výhodám lze také přidat velikost celého modulu, která je 12 x 10 mm, či existenci montážního otvoru.
Pro úspěšné propojení senzoru HTU21D s Arduinem stačí propojit celkem čtyři vodiče. Propojíme SDA s pinem A4, SCL s pinem A5, GND se zemí Arduina a VIN s 3,3 nebo 5 V Arduina. Jak asi tušíte z názvu datových pinů, komunikace mezi Arduinem a senzorem probíhá po sběrnici I2C, takže je nutné využít pro datové piny SCL a SDA odpovídající I2C piny na Arduino desce.
Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu HTU21D, návod jak na to je uveden zde. Ukázkový kód obsahuje na začátku připojení potřebných knihoven a inicializaci senzoru z knihovny. V podprogramu setup nejprve zahájíme komunikaci po sériové lince pro příjem výsledků měření a následně zahájíme komunikaci se senzorem. V nekonečné smyčce loop v prvním kroku načteme informace o teplotě a vlhkosti do vytvořených proměnných typu Float (desetinné číslo). V druhém kroku zkontrolujeme, jestli jsou přijatá data v měřeném rozsahu. Pokud načteme alespoň jeden z údajů mimo rozsah, vytiskneme informaci o chybě komunikace. V opačném případě už rovnou můžeme tisknout naměřené údaje po sériové lince, kdy při tištění údajů z proměnných je nastaven počet desetinných míst pomocí jedničky na jedno místo. Na konci programu se nachází už jen pauza po dobu 1 sekundy před novým měřením.
//Senzor teploty a vlhkosti HTU21D @I2C // připojení potřebných knihoven #include <Wire.h> #include "SparkFunHTU21D.h" // inicializace senzoru z knihovny HTU21D mujHTU; void setup() { // komunikace po sériové lince rychlostí 9600 baud Serial.begin(9600); // zahájení komunikace se senzorem mujHTU.begin(); } void loop() { // načtení informací o teplotě a vlhkosti // do proměnných float teplota = mujHTU.readTemperature(); float vlhkost = mujHTU.readHumidity(); if (teplota > 125 | vlhkost > 100) { Serial.println("Chyba komunikace se senzorem HTU21D!"); } else { // vytištění naměřených údajů, 1 ve výpisu označuje // počet desetinných míst Serial.print("HTU21D | Teplota: "); Serial.print(teplota, 1); Serial.print(" st C | "); Serial.print("Vlhkost: "); Serial.print(vlhkost, 1); Serial.print("%"); Serial.println(); } // pauza 1 sekunda mezi výpisy delay(1000); }
Po nahrání programu do Arduino desky s připojeným senzorem HTU21D dostaneme například tento výsledek:
HTU21D | Teplota: 25.4 st C | Vlhkost: 49.6% HTU21D | Teplota: 25.4 st C | Vlhkost: 49.6% HTU21D | Teplota: 25.4 st C | Vlhkost: 49.6% HTU21D | Teplota: 25.3 st C | Vlhkost: 49.6%
Senzor HTU21D je dle mého názoru velice zajímavým vstupním modulem, který nám za dobrou cenu poskytne velmi přesné údaje o teplotě a vlhkosti. Hodí se tak do projektů, jako je například domácí meteostanice či chytrá domácnost. Velkou výhodou je jak dobrá přesnost měřených údajů, tak i malá velikost modulu se senzorem a velmi nízký proudový odběr. Díky všem jeho vlastnostem je tedy tento modul i vhodným kandidátem na bateriový provoz.
Seznam použitých komponent:
http://dratek.cz/arduino/1511-original-arduino-uno-rev3-1485165418.html
http://dratek.cz/arduino/1487-htu21d-i2c-senzor-teploty-a-vlhkosti-1484094054.html