В линейке trema-модулей есть три датчика температуры и влажности:
- Цифровой датчик температуры и влажности DHT11.
- Цифровой датчик температуры и влажности высокой точности DHT22.
- Цифровой датчик температуры и влажности I2C.
В этой статье, рассматривается модуль подключаемый к шине I2C, который позволяет, с большой точностью, определить температуру и влажность окружающей среды.
Общие сведения:
Модуль построен на базе чипа AM2320. По своим техническим характеристикам, модуль превосходит датчики DHT11 и DHT22. Модуль на базе чипа AM2320 позволяет проверять достоверность данных не проверкой контрольной суммой, как в датчиках DHT11 и DHT22, а проверкой циклически избыточного кода, что в разы уменьшает вероятность получения ошибочных данных.
Видео:
Спецификация:
- Интерфейс: I2C.
- Питание: 3,1 ... 5,5 (номинально 5В).
- Потребляемый ток:
- В режиме ожидания: 8 ... 10 мкА.
- В режиме измерений: 350 мкА, пиковый до 950 мкА.
- Измерение температуры:
- Допустимый диапазон: -40°C .. 80°C.
- Максимальная погрешность: ±0,5°C.
- Разрешение шкалы: 0,1°C.
- Измерение относительной влажности:
- Допустимый диапазон: 0...99,9%
- Максимальная погрешность: ±3% при t=25°C
- Разрешение шкалы: 0.1%
- Уход показаний: 0,5%/год
- Минимальное время между считываниями показаний: 2 сек
- Габариты: 30х30х6,5 мм
- Вес: 4 гр.
Все модули линейки "Trema" выполнены в одном формате
Подключение:
Модуль подключается к аппаратной или программной шине I2C Arduino и имеет адрес 0x5C.
Для удобства подключения, предлагаем воспользоваться TremaShield.
Модуль удобно подключать 4 способами, в зависимости от ситуации:
Способ - 1 : Используя проводной шлейф и Piranha UNO
Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.

Способ - 2 : Используя Trema Set Shield
Модуль можно подключить к любому из I2C входов Trema Set Shield.

Способ - 3 : Используя проводной шлейф и Shield
Используя 4-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

Способ - 4 : Альтернативный вариант подключения
Модуль можно подключить к любому выводу Arduino, как при подключении датчиков DHT11 и DHT22:
- Вывод SCL модуля нужно соединить с выводом GND до подачи питания.
- Вывод SDA модуля нужно подключить к любому выводу Arduino и подтянуть его к Vcc (+5V) через резистор 4,7 кОм ... 10 кОм.
- При таком варианте подключения, для работы с модулем потребуется библиотека iarduino_DHT, а не iarduino_AM2320.
- Преимуществом альтернативной схемы подключения является то, что к одной плате Arduino можно подключить множество модулей.
- Недостатком альтернативной схемы является то, что между опросами модуля должна выдерживаться пауза в 3-4 секунды.
При подключении датчика температуры и влажности AM2320 по шине I2C к другим платам, например, WEMOS D1 mini или WEMOS D1 mini Pro на базе микроконтроллера ESP8266, и т.д. То перед подключением библиотеки iarduino_AM2320, нужно подключить библиотеку Wire, как это описано в разделе Wiki - расширенные возможности библиотек iarduino для шины I2C.
Питание:
Модуль поддерживает питание 3,3 В или 5 В постоянного тока.
Подробнее о модуле:
Для работы с модулем, предлагаем воспользоваться библиотекой iarduino_AM2320, синтаксис которой идентичен библиотеке iarduino_DHT для работы с датчиками DHT11 и DHT22.
Подробнее про установку библиотеки читайте в нашей инструкции..
Примеры:
Получение данных от модуля в монитор последовательного порта, с выводом всех возможных ошибок:
#include <iarduino_AM2320.h> // Подключаем библиотеку iarduino_AM2320. iarduino_AM2320 sensor; // Объявляем объект sensor для работы с датчиком AM2320, используя функции и методы библиотеки iarduino_AM2320. // void setup(){ // sensor.begin(); // Инициируем работу с датчиком AM2320. Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта на скорости 9600 бод. } // // void loop(){ // switch(sensor.read()){ // Читаем показания датчика. case AM2320_OK: Serial.println((String) "CEHCOP AM2320: T=" + sensor.tem + "*C, PH=" + sensor.hum + "%"); break; case AM2320_ERROR_LEN: Serial.println("OTIIPABKA HEBO3M."); break; // объем передаваемых данных превышает буфер I2C case AM2320_ERROR_ADDR: Serial.println("HET CEHCOPA"); break; // получен NACK при передаче адреса датчика case AM2320_ERROR_DATA: Serial.println("OTIIPABKA HEBO3M."); break; // получен NACK при передаче данных датчику case AM2320_ERROR_SEND: Serial.println("OTIIPABKA HEBO3M."); break; // ошибка при передаче данных case AM2320_ERROR_READ: Serial.println("HET OTBETA OT CEHCOPA"); break; // получен пустой ответ датчика case AM2320_ERROR_ANS: Serial.println("OTBET HEKOPPEKTEH"); break; // ответ датчика не соответствует запросу case AM2320_ERROR_LINE: Serial.println("HEPABEHCTBO CRC"); break; // помехи в линии связи (не совпадает CRC) } delay(2000); // ждём 2 секунды }
Результат работы скетча:

Описание основных функций библиотеки:
Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C.
О том как выбрать тип шины I2C рассказано в статье Wiki - расширенные возможности библиотек iarduino для шины I2C.
Подключение библиотек:
#include <iarduino_AM2320.h> // Подключаем библиотеку iarduino_AM2320, для работы с модулем iarduino_AM2320 sensor; // Объявляем объект sensor, для работы с функциями библиотеки iarduino_AM2320
В библиотеке реализованы 2 функции:
Функция begin();
- Назначение: Инициализация работы с датчиком AM2320.
- Синтаксис: begin();
- Параметры: Нет.
- Возвращаемые значения: Нет.
- Примечание: Вызывается 1 раз в коде setup.
- Пример:
void setup(){ sensor.begin(); // Инициируем работу с датчиком AM2320 }
Функция read();
- Назначение: Чтение показаний датчика в переменные: tem и hum.
- Синтаксис: read();
- Параметры: Нет.
- Возвращаемые значения:
- AM2320_OK - успешное чтение данных
- AM2320_ERROR_LEN - объем передаваемых данных превышает буфер I2C
- AM2320_ERROR_ADDR - получен NACK при передаче адреса датчика
- AM2320_ERROR_DATA - получен NACK при передаче данных датчику
- AM2320_ERROR_SEND - ошибка при передаче данных
- AM2320_ERROR_READ - получен пустой ответ датчика
- AM2320_ERROR_ANS - ответ датчика не соответствует запросу
- AM2320_ERROR_LINE - помехи в линии связи (не совпадает CRC)
- Примечание: Значения переменных tem и hum обновляются только при успешном чтении данных датчика.
- Пример:
int A = sensor.read(); // Читаем показания датчика (данные с датчика будут записаны в переменные tem и hum, а в переменную A запишется результат чтения)
sensor.read(); // Читаем показания датчика (данные с датчика будут записаны в переменные tem и hum). В данном примере мы игнорируем результат чтения // Если данные от датчика прочитаны с ошибкой, то в переменных tem и hum останутся предыдущие значения
Переменные:
- tem: тип float, содержит значение температуры окружающей среды в °C
- hum: тип float, содержит значение атмосферного давления в %
- Значения переменных tem и hum обновляются только при успешном чтении данных датчика функцией read().
sensor.read(); // Читаем показания датчика float A = sensor.tem; // Сохраняем прочитанное значение температуры в переменную A float B = sensor.hum; // Сохраняем прочитанное значение влажности в переменную B
Применение:
- Метеостанции
- Проекты климат-контроля
Ссылки:
- Trema-модуль - цифровой датчик температуры и влажности I2C.
- Библиотека iarduino_AM2320.
- Расширенные возможности библиотек iarduino для шины I2C.
- Урок 21.2 Метеостанция на базе датчика AM2320 I2C и четырехразрядного LED индикатора.
- Библиотека iarduino_DHT - только для альтернативного метода подключения модуля.
- Wiki - Установка библиотек в Arduino IDE.
Обсуждение