Senzor teploty a vlhkosti HTU21D I2C

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

Další podobné články