Подключение датчика температуры и влажности AM2320 к Arduino

Подключение датчика температуры и влажности AM2320 к Arduino

Хотите вести журнал климата в вашей теплице, создать систему контроля увлажнителя или отслеживать данные температуры и влажности для проекта метеостанции? Датчик температуры и влажности AM2320 может стать правильным выбором для вас!

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

Обзор оборудования

AM2320 — это недорогой, простой в использовании и достаточно точный цифровой датчик температуры и влажности от AOSONG. Он выглядит как популярные датчики температуры и влажности DHT11/DHT22, но в отличие от классических датчиков DHT имеет интерфейс I2C!

Подключение датчика температуры и влажности AM2320 к Arduino

Датчик AM2320 способен измерять влажность во всём диапазоне от 0 до 100% RH с типичной точностью ±3% в диапазоне от 20% до 80% RH (разрешение 0,024% RH).

Он имеет максимальный диапазон температур от -40 до 80°C и типичную точность ±0,5°C при 25°C (разрешение 0,01°C).

AM2320 может выдавать данные с максимальной частотой дискретизации 0,5 Гц, то есть одно измерение каждые две секунды.

Требования к питанию

Сам датчик работает от 3,3 В до 5,5 В, что делает его совместимым с 3 В и 5 В. Поэтому вы можете использовать его с вашим любимым 3,3-вольтовым или 5-вольтовым микроконтроллером без проблем.

AM2320 потребляет менее 0,95 мА во время измерений и менее 10 мкА в спящем режиме. Такое низкое энергопотребление позволяет использовать его в устройствах с батарейным питанием, таких как мобильные телефоны, носимые устройства или умные часы.

Интерфейс I2C

AM2320 — это датчик с I2C-интерфейсом, что означает использование двух линий данных/тактирования I2C, доступных на большинстве микроконтроллеров, и может разделять эти выводы с другими I2C-датчиками при условии отсутствия конфликта адресов.

Датчик имеет фиксированный I2C-адрес 0x5C в шестнадцатеричной системе. Для связи с несколькими датчиками AM2320 на одной шине требуется мультиплексор.

Технические характеристики

Вот полные технические характеристики:

Для получения дополнительной информации обратитесь к техническому описанию ниже.

Распиновка датчика AM2320

Теперь давайте рассмотрим распиновку.

Подключение датчика температуры и влажности AM2320 к Arduino

VDD — это вывод питания. Поскольку датчик работает от 3,3 до 5,5 В постоянного тока, подайте на него такое же напряжение, как логический уровень вашего микроконтроллера — например, для 5-вольтового микроконтроллера, такого как Arduino, используйте 5 В.

SDA — это вывод данных I2C, требуется подтягивающий резистор от 2,2 кОм до 10 кОм к VDD.

GND — общая земля для питания и логики.

SCL — это вывод тактирования I2C, требуется подтягивающий резистор от 2,2 кОм до 10 кОм к VDD.

Схема подключения AM2320 к Arduino

Поскольку используется шина I2C, подключение AM2320 к Arduino довольно просто!

Нужно подключить только четыре вывода для начала работы с датчиком. Один для VCC, один для GND и две линии данных для I2C-связи.

Подключите вывод SCL к выводу тактирования I2C, а вывод SDA — к выводу данных I2C на Arduino. Обратите внимание, что каждая плата Arduino имеет разные выводы I2C, которые следует подключать соответственно. На платах Arduino с компоновкой R3 линии SDA (данные) и SCL (тактирование) находятся на штыревых разъёмах рядом с выводом AREF. Они также известны как A5 (SCL) и A4 (SDA).

AM2320 не имеет внутренних подтягивающих резисторов для шины I2C. Поэтому их нужно добавить внешне. Подойдёт любое значение от 2,2 кОм до 10 кОм. Резисторы подключаются от VDD к SCL и SDA соответственно.

На следующей иллюстрации показана схема подключения.

Подключение датчика температуры и влажности AM2320 к Arduino

Установка библиотеки

Чтобы запустить датчик, вам потребуется установить библиотеку Adafruit AM2320. Она доступна в менеджере библиотек Arduino.

Для установки библиотеки перейдите в Sketch > Include Library > Manage Libraries… Дождитесь, пока менеджер библиотек загрузит индекс и обновит список установленных библиотек.

Подключение датчика температуры и влажности AM2320 к Arduino

Отфильтруйте поиск, набрав „am2320“, и установите библиотеку.

Подключение датчика температуры и влажности AM2320 к Arduino

Библиотека Adafruit_AM2320 использует бэкенд поддержки Adafruit Sensor. Поэтому найдите в менеджере библиотек Adafruit Unified Sensor и установите его тоже (возможно, придётся прокрутить вниз).

Подключение датчика температуры и влажности AM2320 к Arduino

Вам также нужно установить вспомогательную библиотеку Adafruit Bus IO. Она абстрагирует транзакции и регистры I2C и SPI.

Подключение датчика температуры и влажности AM2320 к Arduino

Код Arduino — чтение температуры и влажности

Ниже приведён базовый скетч для Arduino. Загрузите его на Arduino. Вы увидите текущую температуру и влажность в вашей комнате!

#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"

Adafruit_AM2320 am2320 = Adafruit_AM2320();

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    delay(10); // hang out until serial port opens
  }

  am2320.begin();
}

void loop() {
  Serial.print("Temp: ");
  Serial.print(am2320.readTemperature());
  Serial.print(" C");
  Serial.print("\t\t");
  Serial.print("Humidity: ");
  Serial.print(am2320.readHumidity());
  Serial.println(" \%");

  delay(2000);
}

После загрузки кода откройте монитор последовательного порта на скорости 9600 бод. Вы должны увидеть что-то похожее на вывод ниже. Попробуйте подышать на датчик, чтобы увидеть изменение обоих значений — влажности и температуры!

Подключение датчика температуры и влажности AM2320 к Arduino

Объяснение кода

Это, пожалуй, один из самых простых скетчей. В начале подключаются библиотеки Adafruit_Sensor.h и Adafruit_AM2320.h, и создаётся объект Adafruit_AM2320 в глобальной области видимости.

#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"

Adafruit_AM2320 am2320 = Adafruit_AM2320();

В функции setup мы инициализируем последовательную связь с ПК и вызываем функцию begin() для инициализации объекта.

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    delay(10); // hang out until serial port opens
  }

  am2320.begin();
}

После инициализации объекта вы можете обращаться к методам объекта (am2320) через оператор точки.

am2320.readTemperature() возвращает значение температуры с плавающей точкой (целая + дробная часть) в °C. Вы можете преобразовать в градусы Фаренгейта, умножив на 1,8 и добавив 32.

am2320.readHumidity() возвращает показание влажности, также в виде числа с плавающей точкой от 0 до 100 (это показывает % влажности).

void loop() {
  Serial.print("Temp: ");
  Serial.print(am2320.readTemperature());
  Serial.print(" C");
  Serial.print("\t\t");
  Serial.print("Humidity: ");
  Serial.print(am2320.readHumidity());
  Serial.println(" \%");

  delay(2000);
}