Оглавление:

Arduino Nano - Учебное пособие по датчику относительной влажности и температуры HTS221: 4 шага
Arduino Nano - Учебное пособие по датчику относительной влажности и температуры HTS221: 4 шага

Видео: Arduino Nano - Учебное пособие по датчику относительной влажности и температуры HTS221: 4 шага

Видео: Arduino Nano - Учебное пособие по датчику относительной влажности и температуры HTS221: 4 шага
Видео: Arduino Nano - Учебное пособие по датчику относительной влажности и температуры HTS221 2024, Июль
Anonim
Image
Image

HTS221 - это сверхкомпактный емкостной цифровой датчик относительной влажности и температуры. Он включает в себя чувствительный элемент и специализированную интегральную схему (ASIC) со смешанными сигналами для предоставления информации об измерениях через цифровые последовательные интерфейсы. Благодаря наличию такого количества функций, этот датчик является одним из наиболее подходящих для критических измерений влажности и температуры. Вот демонстрация с Arduino nano.

Шаг 1: Что вам нужно..

Что вам нужно..!!
Что вам нужно..!!

1. Arduino Nano

2. HTS221

3. Кабель I²C

4. I²C Shield для Arduino Nano.

Шаг 2: Подключения:

Подключения
Подключения
Подключения
Подключения
Подключения
Подключения
Подключения
Подключения

Возьмите щит I2C для Arduino Nano и аккуратно наденьте его на контакты Nano.

Затем подключите один конец кабеля I2C к датчику HTS221, а другой конец - к экрану I2C.

Подключения показаны на картинке выше.

Шаг 3: Код:

Код
Код

Код Arduino для HTS221 можно загрузить из нашего репозитория github - сообщества DCUBE.

Вот ссылка на то же самое:

github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino

Мы включаем библиотеку Wire.h для облегчения связи датчика I2c с платой Arduino.

Вы также можете скопировать код отсюда, он выглядит следующим образом:

// Распространяется по свободной лицензии.

// Используйте его как хотите, для получения прибыли или бесплатно, при условии, что он соответствует лицензиям на связанные с ним работы.

// HTS221

// Этот код предназначен для работы с мини-модулем HTS221_I2CS I2C

#включают

// Адрес 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);

}

Шаг 4: Приложения:

HTS221 может использоваться в различных потребительских товарах, таких как увлажнители воздуха, холодильники и т. Д. Этот датчик также находит свое применение в более широкой сфере, включая автоматизацию умного дома, промышленную автоматизацию, респираторное оборудование, отслеживание активов и товаров.

Рекомендуемые: