Датчик AM2320 – измеряем температуру и влажность
Просмотры:
1769
2018-10-23
Статья по материалам сайта автор Чубатый Виталий
Есть такой хороший датчик температуры и влажности, как AM2320. По характеристикам он почти идентичен с более известными датчиками серии DHT, но в то же время имеет возможность работы по I2C.
Сравнение аналогов
Если сравнивать датчики серии DHT и AM2320, получаем следующую картину:
Цены для сравнения взяты из одного и того же магазина (какого – рекламы делать не буду). Так что выбор в пользу AM2320 был очевиден.
Особенности работы
Важное преимущество этого датчика перед DHT – умение работать по шине I2C, но это же является причиной одного из главных недостатков. Дело в том, что работа по I2C предполагает обмен данными по запросу, при этом передаётся адрес устройства (от 0 до 127). И проблема в том, что датчики имеют один и тот же адрес, соответственно, подключить на эту шину более одного датчика будет очень сложно. Тем не менее, мне встречались упоминания о возможности.
Чтение данных с датчика
Мы в примере будем использовать работу по I2C. Для работы с датчиком скачаем соответствующую библиотеку, а также для поддержки I2C подключим библиотеку Wire. Поскольку нашей целью является работы с датчиком, а не с дисплеем, вместо отображения будем отправлять данные в последовательный порт, а смотреть их при помощи монитора порта в среде разработки.
Выводы датчика подключаем следующим образом:
1 – к выводу +5В.
2 – к выводу SDA (A4 для Arudino Uno);
3 – к выводу 0В.
4 – к выводу SCL (A5 для Arudino Uno).
И получаем следующую конструкцию:
Стоит отметить, что функция чтения информации с датчика передаёт код завершения операции, по которому можно судить об отсутствии ошибок. Скетч для работы с датчиком будет достаточно простой, поэтому весь код будет приведён здесь, а файла для скачивания не будет.
После запуска приложения открываем монитор порта и наблюдаем передачу данных с датчика.
Есть такой хороший датчик температуры и влажности, как AM2320. По характеристикам он почти идентичен с более известными датчиками серии DHT, но в то же время имеет возможность работы по I2C.
Сравнение аналогов
Если сравнивать датчики серии DHT и 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).
И получаем следующую конструкцию:
Стоит отметить, что функция чтения информации с датчика передаёт код завершения операции, по которому можно судить об отсутствии ошибок. Скетч для работы с датчиком будет достаточно простой, поэтому весь код будет приведён здесь, а файла для скачивания не будет.
Code:
#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);
}
После запуска приложения открываем монитор порта и наблюдаем передачу данных с датчика.
Рекомендуем
Категории
- Микроконтроллеры (2)
- В мастерскую (85)
- Для дома, для семьи (76)
- В авто (41)
- АКБ (25)
- Ремонт (29)
- Игрушки, эффекты (28)
- Обзоры (18)
- Радиолюбительская связь (4)
- Приемники Музей (14)
- Новости сайта (2)
- Литература (1)
- Справочник (4)
Написать комментарий