Teploměr a vlhkoměr AM2320 je vstupní modul pro Arduino. Tento modul obsahuje senzor AM2320, který je pinově kompatibilní s podobně vypadajícím DHT12. Senzor komunikuje po sběrnici I2C a díky jeho vlastnostem je o něco přesnější než zmíněný DHT12.
Rozsah měření teploty je -40 až +80 °C s přesností ± 0,5°C. Vlhkost lze měřit v rozsahu 0-99,9 % RH (relativní vlhkost) s přesností ±2 % RH. A pro napájení je možné použít napětí v rozsahu 3,1-5,5 Voltu.
Pro úspěšné propojení modulu AM2320 a Arduino desky stačí zapojit celkem 4 vodiče. Propojíme „+“ s 5V Arduina, SDA s pinem A4, „-“ se zemí Arduina a SCL s pinem A5. Pro piny SDA a SCL musíme vybrat vždy vyhrazené I2C piny na námi vybrané desce, u Arduino UNO jsou to právě piny A4 a A5.
Pro úspěšné nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu AM2320, návod, jak na to, je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebných knihoven a inicializaci modulu z knihovny.
V podprogramu setup provedeme zahájení komunikace po sériové lince.
Nekonečná smyčka loop začíná načtením stavu připojeného senzoru přímo v příkazu switch. Tento příkaz následně kontrolujeme na tři různé stavy. Ve stavu „2“ víme, že je chybný kontrolní součet dat CRC. To se může stát v případě špatného zapojení či vadného senzoru. Pokud se dostaneme do stavu „1“, tak je senzor špatně připojen nebo kompletně zničen. V případě, že je ale vše v pořádku, tak ve stavu „0“ jednoduše načteme teplotu a vlhkost do proměnných a oba údaje poté vytiskneme po sériové lince. Na konci programu je už jen pauza po dobu jedné sekundy.
// Teploměr a vlhkoměr AM2320 // připojení potřebných knihoven #include <Wire.h> #include <AM2320.h> // inicializace modulu z knihovny AM2320 senzor; void setup() { // zahájení komunikace po sériové lince // rychlostí 9600 baud Serial.begin(9600); } void loop() { // načtení stavu připojeného senzoru switch (senzor.Read()) { // v případě stavu "2" je chyba komunikace case 2: Serial.println("Chybny CRC soucet, chyba v komunikaci!"); break; // v případě stav "1" je senzor offline nebo špatně připojen case 1: Serial.println("Senzor offline!"); break; // v případě stavu "0" je vše v pořádku // a můžeme vytisknout údaje case 0: float teplota = senzor.t; float vlhkost = senzor.h; Serial.print("Teplota: "); Serial.print(teplota); Serial.print(" stC, vlhkost: "); Serial.print(vlhkost); Serial.println("%"); break; } // pauza před novým měřením delay(1000); }
Po nahrání ukázkového kódu do Arduino desky s připojeným modulem AM2320 dostaneme například tento výsledek:
Teplota: 29.10 stC, vlhkost: 46.20% Teplota: 29.60 stC, vlhkost: 31.70% Teplota: 29.60 stC, vlhkost: 31.30% Teplota: 29.50 stC, vlhkost: 31.00% Teplota: 29.50 stC, vlhkost: 30.70%
Teploměr a vlhkoměr AM2320 je zajímavý vstupní modul pro Arduino. Vzhledově i zapojením je velmi blízký modulu DHT12, ale svými parametry ho AM2320 převyšuje. Hodí se do všech projektů, kde potřebujeme měřit teplotu a vlhkost s rozumnou přesností, jako například domácí meteostanice, bezdrátová čidla a podobně. Jeho výhodou je příznivá cena a díky ní dobrý poměr cena/výkon.
Seznam použitých komponent:
https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1976-i2c-teplomer-a-vlhkomer-dht12-am2320-digitalni.html