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

Также на нашем сайте мы рассматривали подключение к плате Arduino и других датчиков температуры и влажности:
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Датчик температуры и влажности AM2320.
- Резисторы - 2 шт.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Датчик AM2320
Общие сведения
AM2320 — недорогой, простой в использовании и достаточно точный цифровой датчик температуры и влажности от компании AOSONG. Он похож на популярные датчики температуры и влажности DHT11/DHT22 , но, в отличие от классических датчиков DHT, имеет интерфейс I2C!

Датчик AM2320 способен измерять влажность во всем диапазоне от 0 до 100% относительной влажности с типичной точностью ±3% в диапазоне от 20% до 80% относительной влажности (разрешение 0,024% относительной влажности).
Максимальный диапазон температур составляет от -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 (HEX). Для связи с несколькими датчиками AM2320 по одной шине требуется мультиплексор.
Технические характеристики
| Напряжение питания | 3,3 В – 5,5 В |
| Потребление тока |
|
| Диапазон измерения влажности | от 0 до 100 % относительной влажности |
| Точность измерения влажности | ±3% в диапазоне от 20% до 80% относительной влажности |
| Диапазон измеряемых температур | от -40°С до +80°С |
| Точность температуры | ±0,5°С при 25°С |
| Частота дискретизации | 0,5 Гц (одно показание каждые две секунды) |
Более подробную информацию можете посмотреть в техническом описании датчика AM2320.
Распиновка датчика

VDD — это контакт питания. Поскольку датчик потребляет от 3,3 до 5,5 В постоянного тока, подайте на него напряжение, равное логическому уровню вашего микроконтроллера. Например, для микроконтроллера с напряжением 5 В, такого как Arduino, используйте 5 В.
SDA — это контакт данных I2C, требующий подтяжки 2,2 кОм – 10 кОм к VDD.
SCL — это контакт синхронизации I2C, требующий подтяжки 2,2 кОм – 10 кОм к VDD.
Схема проекта
Поскольку AM2320 использует шину I2C, подключить его к Arduino достаточно просто. Схема подключения датчика температуры и влажности 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.
Установка библиотеки для работы с датчиком
Для работы датчика вам потребуется установить библиотеку Adafruit AM2320. Она доступна в менеджере библиотек Arduino.
Чтобы установить библиотеку, перейдите в раздел Sketch > Include Library > Manage Libraries…. Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте свой поиск, введя «am2320», и установите библиотеку.

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

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

Код Arduino для работы с датчиком AM2320
Ниже представлен базовый скетч для Arduino. Загрузите его на Arduino. Вы увидите текущую температуру и влажность в комнате!
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#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 бит/с. Вы должны увидеть что-то похожее на показанное ниже. Попробуйте подышать на датчик, чтобы увидеть изменения значений влажности и температуры!

Объяснение работы кода
Это, пожалуй, самый простой скетч, который только может быть. В начале подключаются Adafruit_Sensor.hбиблиотеки Adafruit_AM2320.hи создаётся объект Adafruit_AM2320 в глобальном пространстве.
|
1 2 3 4 |
#include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h" Adafruit_AM2320 am2320 = Adafruit_AM2320(); |
В настройке мы инициализируем последовательную связь с ПК и вызываем begin()функцию инициализации объекта.
|
1 2 3 4 5 6 7 8 |
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 (это означает % влажности).
|
1 2 3 4 5 6 7 8 9 10 11 |
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); } |



