Teploměr a vlhkoměr AM2320

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

Další podobné články