КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Цифровой датчик температуры и влажности I2C (Trema-модуль)

В линейке trema-модулей есть три датчика температуры и влажности:

В этой статье, рассматривается модуль подключаемый к шине 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: Подключение к программной шине I2C

При использовании программной шины I2C, модуль можно подключить к любым выводам Arduino, но потребуется дополнительно установить библиотеку iarduino_I2C_Software.h, для создания программной шины I2C, указав номера выбранных вами выводов. О том как это сделать читайте ниже в разделе «Подключение библиотеки», а так же на странице Wiki - Расширенные возможности библиотек iarduino для шины I2C.

Способ - 5: Альтернативный вариант подключения

Модуль можно подключить к любому выводу Arduino, как при подключении датчиков DHT11 и DHT22:

  • Вывод SCL модуля нужно соединить с выводом GND до подачи питания.
  • Вывод SDA модуля нужно подключить к любому выводу Arduino и подтянуть его к Vcc (+5V) через резистор 4,7 кОм ... 10 кОм.
  • При таком варианте подключения, для работы с модулем потребуется библиотека iarduino_DHT, а не iarduino_AM2320.
  • Преимуществом альтернативной схемы подключения является то, что к одной плате Arduino можно подключить множество модулей.
  • Недостатком альтернативной схемы является то, что между опросами модуля должна выдерживаться пауза в 3-4 секунды.

Питание:

Модуль поддерживает питание 3,3 В или 5 В постоянного тока.

Подробнее о модуле:

Для работы с модулем, предлагаем воспользоваться библиотекой iarduino_AM2320, синтаксис которой идентичен библиотеке iarduino_DHT для работы с датчиками DHT11 и DHT22.

Подробнее про установку библиотеки читайте в нашей инструкции..

Примеры:

Получение данных от модуля в монитор последовательного порта, с выводом всех возможных ошибок:

#include <Wire.h>                                                               // Подключаем библиотеку для работы с аппаратной шиной I2C, до подключения библиотеки iarduino_AM2320.
#include <iarduino_AM2320.h>                                                    // Подключаем библиотеку iarduino_AM2320.
iarduino_AM2320 sensor;                                                         // Создаём объект sensor для работы с датчиком AM2320, используя функции и методы библиотеки iarduino_AM2320.
                                                                                //
void setup(){                                                                   //
  sensor.begin(&Wire);                                                          // Инициируем работу с датчиком AM2320, указав ссылку на объект для работы с шиной I2C на которой находится датчик (по умолчанию &Wire).
  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 секунды
}

Результат работы скетча:

Описание основных функций библиотеки:

В данном разделе описаны функции библиотеки iarduino_AM2320 для работы с цифровыми датчиками температуры и влажности на базе чипа AM2320.

Библиотека iarduino_AM2320 может использовать как аппаратную, так и программную реализацию шины I2C. О том как выбрать тип шины I2C рассказано ниже в разделе «Подключение библиотеки», а так же на странице Wiki - расширенные возможности библиотек iarduino для шины I2C.

Подключение библиотеки:

  • Если используется аппаратная шина I2C:
#include <Wire.h>                  // Подключаем библиотеку для работы с аппаратной шиной I2C, до подключения библиотеки iarduino_AM2320.h
                                   //
#include <iarduino_AM2320.h>       // Подключаем библиотеку для работы с модулем.
iarduino_AM2320 sensor;            // Создаём объект sensor, для работы с функциями библиотеки iarduino_AM2320
                                   //
void setup(){                      //
     ...                           //
     sensor.begin(&Wire);          // Инициируем работу с модулем, указав ссылку на объект для работы с шиной I2C на которой находится модуль (по умолчанию &Wire).
     ...                           // Доступны объекты: &Wire, &Wire1, &Wire2...
}                                  //
  • Если используется программная шина I2C:
#include <iarduino_I2C_Software.h> // Подключаем библиотеку для работы с программной шиной I2C, до подключения библиотеки iarduino_AM2320.h
SoftTwoWire sWire(3,4);            // Создаём объект программной шины I2C указав выводы которым будет назначена роль линий: SDA, SCL.
                                   //
#include <iarduino_AM2320.h>       // Подключаем библиотеку для работы с модулем.
iarduino_AM2320 sensor;            // Создаём объект sensor, для работы с функциями библиотеки iarduino_AM2320
                                   //
void setup(){                      //
     ...                           //
     sensor.begin(&sWire);         // Инициируем работу с модулем, указав ссылку на объект для работы с шиной I2C на которой находится модуль (по умолчанию &Wire).
     ...                           //
}                                  //
  • В обоих примерах сначала подключается библиотека для работы с шиной I2C. Для аппаратной шины библиотека Wire.h (предустановлена в Arduino IDE), а для программной шины библиотека iarduino_I2C_Software.h, с созданием объекта которому указываются выбранные вами выводы шины, в примере выводы (3-SDA, 4-SCL).
  • Далее подключается библиотека и создаётся объект для работы с модулем.
  • В коде Setup(), при инициализации работы с модулем указывается ссылка на объект работы с выбранной шиной I2C begin(&ШИНА). Остальные строки кода одинаковы для любой шины I2C.

Функция begin();

  • Назначение: Инициализация работы с датчиком AM2320.
  • Синтаксис: begin();
  • Параметры:
    • &ШИНА - Ссылка на объект для работы с шиной I2C на которой находится модуль.
      • Для аппаратной шины: &Wire, &Wire1, &Wire2..., если подключена библиотека Wire.h
      • Для программной шины: ссылка на объект библиотеки iarduino_I2C_Software.h.
      • Параметр является не обязательным, по умолчанию используется ссылка &Wire.
  • Возвращаемые значения: Нет.
  • Примечание: Вызывается 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

Применение:

  • Метеостанции
  • Проекты климат-контроля

Ссылки:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями