AM2320 – измеряем температуру и влажность

AM2320

Есть такой хороший датчик температуры и влажности, как AM2320. По характеристикам он почти идентичен с более известными датчиками серии DHT, но в то же время имеет возможность работы по I2C.

Сравнение аналогов

Если сравнивать датчики серии DHT и AM2320, получаем следующую картину:

Характеристика Датчик
DHT11 DHT22 AM2320
Диапазон температур 0 … +50°C -40 … +80°C -40 … +80°C
Шаг измерения температуры 1°C 0,1°C 0,1°C
Погрешность температуры ±2°C ±0,5°C ±0,5°C
Диапазон влажности 20 … 90% 0 … 100% 0 … 99,9%
Шаг измерения влажности 1% 0,1% 0,1%
Погрешность влажности ±5% ±5% ±3%
Цена 70 руб. 260 руб. 190 руб.

Цены для сравнения взяты из одного и того же магазина (какого – рекламы делать не буду). Так что выбор в пользу AM2320 был очевиден.

Достаточно непонятный момент – зачем делать такой шаг измерения, если погрешность превышает его в десятки раз? Но это вопрос скорее риторический.

Особенности работы

Важное преимущество этого датчика перед DHT – умение работать по шине I2C, но это же является причиной одного из главных недостатков. Дело в том, что работа по I2C предполагает обмен данными по запросу, при этом передаётся адрес устройства (от 0 до 127). И проблема в том, что датчики имеют один и тот же адрес, соответственно, подключить на эту шину более одного датчика будет очень сложно. Тем не менее, мне встречались упоминания о возможности.

Если у вас несколько таких датчиков, работать с ними следует как с DHT – по одному проводу. Для этого достаточно заземлить четвёртый вывод, который в режиме I2C используется для синхронизации AM2320.

Чтение данных с датчика

Мы в примере будем использовать работу по I2C. Для работы с датчиком скачаем соответствующую библиотеку, а также для поддержки I2C подключим библиотеку Wire. Поскольку нашей целью является работы с датчиком, а не с дисплеем, вместо отображения будем отправлять данные в последовательный порт, а смотреть их при помощи монитора порта в среде разработки.

Выводы датчика подключаем следующим образом:

  • 1 – к выводу +5В.
  • 2 – к выводу SDA (A4 для Arudino Uno);
  • 3 – к выводу 0В.
  • 4 – к выводу SCL (A5 для Arudino Uno).

И получаем следующую конструкцию:

Arudino UNO + AM2320
Arudino UNO + AM2320

Стоит отметить, что функция чтения информации с датчика передаёт код завершения операции, по которому можно судить об отсутствии ошибок. Скетч для работы с датчиком будет достаточно простой, поэтому весь код будет приведён здесь, а файла для скачивания не будет.

#include <Wire.h>
#include <AM2320.h>

AM2320 th;

void setup() {
  Serial.begin(9600);
}

void loop() {
  switch(th.Read()) {
    case 0:
      Serial.print("T: ");
      Serial.print(th.t);
      Serial.print(", H: ");
      Serial.println(th.h);
      break;
    case 1:
      Serial.println("Sensor is offline!");
      break;
    case 2:
      Serial.println("Data CRC error!");
      break;
    default:
      Serial.println("Something impossible...");
  }
  delay(1000);
}

После запуска приложения открываем монитор порта и наблюдаем передачу данных с датчика.

Arudino UNO + AM2320 - результаты измерения
Arudino UNO + AM2320 - результаты измерения

Комментарии:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *