Оглавление:
- Шаг 1: Требуемое оборудование:
- Шаг 2: Подключение оборудования:
- Шаг 3: Код для измерения влажности и температуры:
- Шаг 4: Приложения:
Видео: Измерение влажности и температуры с помощью HTS221 и Arduino Nano: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
HTS221 - это сверхкомпактный емкостной цифровой датчик относительной влажности и температуры. Он включает в себя чувствительный элемент и специализированную интегральную схему (ASIC) со смешанными сигналами для предоставления информации об измерениях через цифровые последовательные интерфейсы. Благодаря наличию такого количества функций, этот датчик является одним из наиболее подходящих для критических измерений влажности и температуры.
В этом руководстве было проиллюстрировано взаимодействие сенсорного модуля HTS221 с Arduino nano. Для считывания значений влажности и температуры мы использовали Arduino с адаптером I2C. Этот адаптер I2C делает подключение к модулю датчика простым и надежным.
Шаг 1: Требуемое оборудование:
Материалы, которые нам нужны для достижения нашей цели, включают следующие компоненты оборудования:
1. HTS221
2. Arduino Nano
3. Кабель I2C
4. I2C Shield для Arduino Nano.
Шаг 2: Подключение оборудования:
В разделе «Подключение оборудования» в основном объясняются проводные соединения, необходимые между датчиком и Arduino nano. Обеспечение правильных соединений является основной необходимостью при работе с любой системой для достижения желаемого результата. Итак, необходимые подключения следующие:
HTS221 будет работать по I2C. Вот пример схемы подключения, демонстрирующий, как подключить каждый интерфейс датчика.
Изначально плата настроена для интерфейса I2C, поэтому мы рекомендуем использовать это подключение, если вы не сторонник этого.
Все, что вам нужно, это четыре провода! Требуются только четыре соединения, выводы Vcc, Gnd, SCL и SDA, которые подключаются с помощью кабеля I2C.
Эти соединения показаны на рисунках выше.
Шаг 3: Код для измерения влажности и температуры:
Начнем с кода Arduino.
При использовании сенсорного модуля с Arduino мы включаем библиотеку Wire.h. Библиотека Wire содержит функции, которые облегчают обмен данными i2c между датчиком и платой Arduino.
Полный код Arduino приведен ниже для удобства пользователя:
#включают
// Адрес I2C HTS221 - 0x5F
#define Addr 0x5F
установка void ()
{
// Инициализируем связь I2C как МАСТЕР
Wire.begin ();
// Инициализируем последовательную связь, устанавливаем скорость передачи = 9600
Serial.begin (9600);
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем средний регистр конфигурации
Wire.write (0x10);
// Образцы средней температуры = 256, образцы средней влажности = 512
Wire.write (0x1B);
// Остановка передачи I2C
Wire.endTransmission ();
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр1
Wire.write (0x20);
// Питание включено, непрерывное обновление, скорость вывода данных = 1 Гц
Wire.write (0x85);
// Остановка передачи I2C
Wire.endTransmission ();
задержка (300);
}
пустой цикл ()
{
данные типа int без знака [2];
беззнаковый int val [4];
целое число без знака H0, H1, H2, H3, T0, T1, T2, T3, raw;
// Значения калибровки влажности
для (int я = 0; я <2; я ++)
{
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write ((48 + i));
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Преобразование данных о влажности
H0 = данные [0] / 2;
H1 = данные [1] / 2;
для (int я = 0; я <2; я ++)
{
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write ((54 + i));
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Преобразование данных о влажности
H2 = (данные [1] * 256,0) + данные [0];
для (int я = 0; я <2; я ++)
{
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write ((58 + i));
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Преобразование данных о влажности
H3 = (данные [1] * 256,0) + данные [0];
// Значения калибровки температуры
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write (0x32);
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write (0x33);
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write (0x35);
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
raw = Wire.read ();
}
raw = raw & 0x0F;
// Преобразуем значения калибровки температуры в 10-битные
T0 = ((raw & 0x03) * 256) + T0;
T1 = ((исходный & 0x0C) * 64) + T1;
для (int я = 0; я <2; я ++)
{
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write ((60 + i));
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Конвертируем данные
T2 = (данные [1] * 256,0) + данные [0];
для (int я = 0; я <2; я ++)
{
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write ((62 + i));
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 1 байт данных
Wire.requestFrom (Адрес, 1);
// Читаем 1 байт данных
если (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Конвертируем данные
T3 = (данные [1] * 256,0) + данные [0];
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Отправляем регистр данных
Wire.write (0x28 | 0x80);
// Остановка передачи I2C
Wire.endTransmission ();
// Запрос 4 байта данных
Wire.requestFrom (Адрес, 4);
// Читаем 4 байта данных
// влажность msb, влажность lsb, temp msb, temp lsb
если (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Конвертируем данные
влажность с плавающей запятой = (val [1] * 256.0) + val [0];
влажность = ((1.0 * H1) - (1.0 * H0)) * (1.0 * влажность - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);
int temp = (val [3] * 256) + val [2];
float cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
float fTemp = (cTemp * 1.8) + 32;
// Выводим данные на последовательный монитор
Serial.print («Относительная влажность:»);
Серийный отпечаток (влажность);
Serial.println («% относительной влажности»);
Serial.print («Температура в градусах Цельсия:»);
Serial.print (cTemp); Serial.println ("C");
Serial.print («Температура по Фаренгейту:»);
Serial.print (fTemp);
Serial.println ("F");
задержка (500);
}
В библиотеке проводов Wire.write () и Wire.read () используются для записи команд и чтения выходного сигнала датчика.
Serial.print () и Serial.println () используются для отображения выходных данных датчика на последовательном мониторе Arduino IDE.
Выход датчика показан на картинке выше.
Шаг 4: Приложения:
HTS221 может использоваться в различных потребительских товарах, таких как увлажнители воздуха, холодильники и т. Д. Этот датчик также находит свое применение в более широкой сфере, включая автоматизацию умного дома, промышленную автоматизацию, респираторное оборудование, отслеживание активов и товаров.
Рекомендуемые:
Измерение температуры и влажности с помощью DHT11 / DHT22 и Arduino: 4 шага
Измерение температуры и влажности с помощью DHT11 / DHT22 и Arduino: в этом руководстве по Arduino мы узнаем, как использовать датчик DHT11 или DHT22 для измерения температуры и влажности с помощью платы Arduino
Измерение влажности и температуры с помощью HIH6130 и Arduino Nano: 4 шага
Измерение влажности и температуры с использованием HIH6130 и Arduino Nano: HIH6130 - датчик влажности и температуры с цифровым выходом. Эти датчики обеспечивают уровень точности ± 4% относительной влажности. С лучшей в отрасли долговременной стабильностью, истинной температурной компенсацией цифрового I2C, лучшей в отрасли надежностью, энергоэффективностью
Измерение температуры и влажности с помощью HDC1000 и Arduino Nano: 4 шага
Измерение температуры и влажности с использованием HDC1000 и Arduino Nano: HDC1000 - это цифровой датчик влажности со встроенным датчиком температуры, который обеспечивает превосходную точность измерения при очень низком энергопотреблении. Устройство измеряет влажность на основе нового емкостного датчика. Датчики влажности и температуры видны
Измерение влажности и температуры с помощью HTS221 и Raspberry Pi: 4 шага
Измерение влажности и температуры с использованием HTS221 и Raspberry Pi: HTS221 - это сверхкомпактный емкостной цифровой датчик относительной влажности и температуры. Он включает в себя чувствительный элемент и специализированную интегральную схему (ASIC) со смешанными сигналами для передачи информации об измерениях через цифровой последовательный
Измерение влажности и температуры с использованием HTS221 и частиц Photon: 4 шага
Измерение влажности и температуры с использованием HTS221 и Particle Photon: HTS221 - это сверхкомпактный емкостной цифровой датчик относительной влажности и температуры. Он включает в себя чувствительный элемент и специализированную интегральную схему (ASIC) со смешанными сигналами для передачи информации об измерениях через цифровой последовательный