Teploměr a vlhkoměr AM2120 je vstupní modul pro Arduino. Tento modul obsahuje senzor AM2120 od firmy Aosong, který dokáže měřit teplotu a vlhkost ve svém okolí. Senzor je jak tvarem, tak i vlastnostmi velmi podobný oblíbeným modulům DHT11 a 22.
Teplotu je možné měřit v rozsahu -40 až +80 °C, kdy přesnost se pohybuje okolo +-0,5 stupně Celsia. Vlhkost pak můžeme měřit v rozsahu 0-99,9 % relativní vlhkosti (RH), kdy přesnost je +-3 %. Pro napájení modulu je možné použít napětí v rozsahu 3,3-5,5 Voltu. A komunikace probíhá pomocí jednoho datového vodiče.
Pro úspěšné propojení senzoru AM2120 a Arduino desky stačí zapojit celkem 3 vodiče. Propojíme VCC s 5V Arduina, DATA s pinem D5 a GND se zemí Arduina. Pro pin DATA můžeme využít také jiné dostupné datové piny, ale je nutné tuto volbu provést také na začátku programu.
Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu DHT, návod, jak na to, je uveden zde.
Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny společně s nastavením čísla propojovacího pinu. S touto informací následně vytvoříme objekt modulu z knihovny, u kterého zadáváme dva parametry. První parametr je propojovací pin a druhý typ senzoru, kde jsem použil typ DHT22, který má stejnou komunikaci, jako náš senzor AM2120.
V podprogramu setup zahájíme komunikaci po sériové lince a poté zahájíme komunikaci se senzorem.
V prvním kroku nekonečné smyčky loop načteme postupně teplotu a vlhkost do vytvořených lokálních proměnných. V dalším kroku provedeme kontrolu obou údajů pomocí funkce isnan(), která kontroluje, jestli jsou obě proměnné čísla (isnan znamená „is not a number“ – „není to číslo“). Pokud se jedna nebo obě proměnné dostanou do stavu NaN (Not a Number – „není číslo“), vytiskneme chybovou hlášku po sériové lince. Pokud ale kontrolou projdeme, vytiskneme následně oba získané údaje na sériovou linku. Na konci programu je pak už jen pauza před novým během smyčky.
// Teploměr a vlhkoměr AM2120 // připojení potřebné knihovny #include "DHT.h" // nastavení čísla propojovacího pinu #define pinDHT 5 // vytvoření instance senzoru z knihovny, // s nastavením typu DHT22, který má stejný // typ komunikace jako AM2120 DHT dht(pinDHT, DHT22); void setup() { // inicializace komunikace po sériové lince Serial.begin(9600); // zahájení komunikace se senzorem DHT dht.begin(); } void loop() { // načtení teploty do proměnné float teplota = dht.readTemperature(); // načtení vlhkosti do proměnné float vlhkost = dht.readHumidity(); // kontrola, jestli jsou načtené hodnoty čísla, pomocí funkce isnan if (isnan(teplota) || isnan(vlhkost)) { // při chybném čtení vypiš hlášku Serial.println("Chyba při čtení z DHT senzoru!"); } else { // pokud jsou hodnoty v pořádku, // vypiš je po sériové lince Serial.print("Teplota: "); Serial.print(teplota); Serial.print(" stupnu Celsia, "); Serial.print("vlhkost: "); Serial.print(vlhkost); Serial.println("% RH."); } // pauza před novým během smyčky delay(1000); }
Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem AM2120 dostaneme například tento výsledek:
Teplota: 25.60 stupnu Celsia, vlhkost: 39.90% RH. Teplota: 25.60 stupnu Celsia, vlhkost: 40.00% RH. Teplota: 25.60 stupnu Celsia, vlhkost: 40.10% RH. Teplota: 25.70 stupnu Celsia, vlhkost: 56.90% RH.
Teploměr a vlhkoměr AM2120 je další senzor ze série oblíbených senzorů DHT/AM. Dokáže měřit teplotu a vlhkost v běžné využívaném rozsahu a s použitelnou přesností pro domácí měření. Velkou výhodou je pak velmi příznivá cena, která se pohybuje právě mezi senzory DHT11 a DHT22, které komunikují po jednom vodiči jako AM2120. Senzor tedy můžeme použít v projektech jako je domácí meteostanice, řízení vytápění či další využití v chytrých domácnostech. A díky zmíněné komunikaci po jednom pinu můžeme k Arduinu připojit poměrně velké množství senzorů a komunikovat s každým přes jeho vlastní pin.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/2023-teplomer-a-vlhkomer-am2120-digitalni.html