Радиолюбитель - это просто

А что еще нужно радиолюбителю, кроме хорошего паяльника и интересной схемы...

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

Просмотров: 112Комментарии: 0
Arduino
Датчик AM2320 – измеряем температуру и влажностьСтатья по материалам сайта автор Чубатый Виталий

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

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

Датчик AM2320

Цены для сравнения взяты из одного и того же магазина (какого – рекламы делать не буду). Так что выбор в пользу 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).

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

Датчик AM2320

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



#include <Wire.hh>
#include <AM2320.hh>

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);
}


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

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


Оставьте комментарий!

Комментарий будет опубликован после проверки