Съдържание:
Видео: Arduino Nano - HTS221 Урок за сензор за относителна влажност и температура: 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
HTS221 е ултра компактен капацитивен цифров сензор за относителна влажност и температура. Той включва сензорен елемент и специфична интегрална схема (ASIC) за прилагане на смесен сигнал за предоставяне на измервателната информация чрез цифрови серийни интерфейси. Интегриран с толкова много функции, това е един от най -подходящите сензори за измерване на критична влажност и температура. Ето демонстрацията с arduino nano.
Стъпка 1: Какво ви трябва..
1. Arduino Nano
2. HTS221
3. Кабел I²C
4. I²C щит за 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 мини модул
#включва
// HTS221 I2C адресът е 0x5F
#define Addr 0x5F
void setup ()
{
// Инициализира I2C комуникацията като MASTER
Wire.begin ();
// Инициализира серийна комуникация, зададена скорост на предаване = 9600
Serial.begin (9600);
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Избор на регистър за средна конфигурация
Wire.write (0x10);
// Средни температурни проби = 256, Проби със средна влажност = 512
Wire.write (0x1B);
// Спиране на I2C предаването
Wire.endTransmission ();
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изберете контролен регистър1
Wire.write (0x20);
// Захранване, непрекъснато актуализиране, Скорост на изход на данни = 1 Hz
Wire.write (0x85);
// Спиране на I2C предаването
Wire.endTransmission ();
забавяне (300);
}
void loop ()
{
беззнакови int данни [2];
беззнаков int val [4];
беззнаков int H0, H1, H2, H3, T0, T1, T2, T3, суров;
// Стойности за калибриране на влажността
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((48 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данни за влажността
H0 = данни [0] / 2;
H1 = данни [1] / 2;
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((54 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данни за влажността
H2 = (данни [1] * 256.0) + данни [0];
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((58 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данни за влажността
H3 = (данни [1] * 256,0) + данни [0];
// Стойности за калибриране на температурата
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x32);
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x33);
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x35);
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
raw = Wire.read ();
}
необработен = необработен & 0x0F;
// Преобразуваме стойностите на калибриране на температурата в 10-бита
T0 = ((необработен & 0x03) * 256) + T0;
T1 = ((необработен & 0x0C) * 64) + T1;
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((60 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данните
T2 = (данни [1] * 256,0) + данни [0];
за (int i = 0; i <2; i ++)
{
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write ((62 + i));
// Спиране на I2C предаването
Wire.endTransmission ();
// Искане на 1 байт данни
Wire.requestFrom (Addr, 1);
// Прочетете 1 байт данни
ако (Wire.available () == 1)
{
данни = Wire.read ();
}
}
// Конвертиране на данните
T3 = (данни [1] * 256,0) + данни [0];
// Стартиране на I2C предаване
Wire.beginTransmission (Addr);
// Изпращане на регистър на данни
Wire.write (0x28 | 0x80);
// Спиране на I2C предаването
Wire.endTransmission ();
// Изискване на 4 байта данни
Wire.requestFrom (Addr, 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.print (влажност);
Serial.println (" % RH");
Serial.print ("Температура в Целзий:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Температура по Фаренхайт:");
Serial.print (fTemp);
Serial.println ("F");
забавяне (500);
}
Стъпка 4: Приложения:
HTS221 може да се използва в различни потребителски продукти като овлажнители на въздух и хладилници и др. Този сензор намира своето приложение и в по -широка област, включително автоматизация на интелигентен дом, промишлена автоматизация, дихателно оборудване, проследяване на активи и стоки.
Препоръчано:
Raspberry Pi SHT25 Сензор за влажност и температура Python Урок: 4 стъпки
Raspberry Pi SHT25 Сензор за влажност и температура Python Урок: SHT25 I2C Сензор за влажност и температура ± 1,8%RH ± 0,2 ° C I2C мини модул. Високоточният сензор за влажност и температура SHT25 се превърна в индустриален стандарт по отношение на форм-фактора и интелигентността, като осигурява калибриран, линеаризиран сигнален сензор
Сензор за температура и влажност на слънчевата енергия Arduino като 433mhz Oregon сензор: 6 стъпки
Сензор за температура и влажност на слънчевата енергия Arduino като 433mhz Oregon сензор: Това е изграждането на сензор за температура и влажност на слънчева енергия. Сензорът емулира 433mhz Oregon сензор и е видим в Telldus Net gateway. Какво ви трябва: 1x " 10-LED Сензор за движение на слънчева енергия " от Ebay. Уверете се, че пише 3.7v batter
Raspberry Pi - HIH6130 I2C сензор за влажност и температура Python урок: 4 стъпки
Raspberry Pi - HIH6130 I2C сензор за влажност и температура Python Урок: HIH6130 е сензор за влажност и температура с цифров изход. Тези сензори осигуряват ниво на точност ± 4% относителна влажност. С водеща в индустрията дългосрочна стабилност, истинска температурно компенсирана цифрова I2C, водеща в индустрията надеждност, енергийна ефективност
Raspberry Pi - HIH6130 I2C Сензор за влажност и температура Java Урок: 4 стъпки
Raspberry Pi - HIH6130 I2C Сензор за влажност и температура Java Урок: HIH6130 е сензор за влажност и температура с цифров изход. Тези сензори осигуряват ниво на точност ± 4% относителна влажност. С водеща в индустрията дългосрочна стабилност, истинска температурно компенсирана цифрова I2C, водеща в индустрията надеждност, енергийна ефективност
Температура, относителна влажност, регистратор на атмосферно налягане с помощта на Raspberry Pi и TE свързаност MS8607-02BA01: 22 стъпки (със снимки)
Температура, относителна влажност, регистратор на атмосферно налягане с помощта на Raspberry Pi и TE свързаност MS8607-02BA01: Въведение: В този проект ще ви покажа как да изградите настройка по стъпка система за регистриране на температурата на влажността и атмосферното налягане. Този проект се основава на чипа за околната среда Raspberry Pi 3 Model B и TE Connectivity MS8607-02BA