Talaan ng mga Nilalaman:

Arduino Nano - HTS221 Kamag-anak na Humidity at Temperatura Sensor Tutorial: 4 na Hakbang
Arduino Nano - HTS221 Kamag-anak na Humidity at Temperatura Sensor Tutorial: 4 na Hakbang

Video: Arduino Nano - HTS221 Kamag-anak na Humidity at Temperatura Sensor Tutorial: 4 na Hakbang

Video: Arduino Nano - HTS221 Kamag-anak na Humidity at Temperatura Sensor Tutorial: 4 na Hakbang
Video: Arduino Nano 33 BLE Sense — плата с голосовым управлением, IMU, датчиком цвета и метеосенсором. 2024, Hulyo
Anonim
Image
Image

Ang HTS221 ay isang ultra compact capacitive digital sensor para sa kamag-anak na halumigmig at temperatura. May kasamang elemento ng sensing at isang halo-halong signal application na tiyak na integrated circuit (ASIC) upang maibigay ang impormasyon sa pagsukat sa pamamagitan ng mga digital serial interface. Isinama sa napakaraming mga tampok na ito ay isa sa mga pinakaangkop na sensor para sa kritikal na kahalumigmigan at pagsukat ng temperatura. Narito ang demonstrasyon kasama ang arduino nano.

Hakbang 1: Ano ang Kailangan Mo.. !

Ang iyong kailangan..!!
Ang iyong kailangan..!!

1. Arduino Nano

2. HTS221

3. I²C Cable

4. I²C Shield para sa Arduino Nano

Hakbang 2: Mga Koneksyon:

Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon
Mga koneksyon

Kumuha ng isang kalasag I2C para sa Arduino Nano at dahan-dahang itulak ito sa mga pin ng Nano.

Pagkatapos ikonekta ang isang dulo ng I2C cable sa HTS221 sensor at ang iba pang mga dulo sa I2C kalasag.

Ang mga koneksyon ay ipinapakita sa larawan sa itaas.

Hakbang 3: Code:

Code
Code

Ang arduino code para sa HTS221 ay maaaring ma-download mula sa aming github repository- DCUBE Community.

Narito ang link para sa pareho:

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

Isinasama namin ang library Wire.h upang mapabilis ang komunikasyon ng I2c ng sensor gamit ang Arduino board.

Maaari mo ring kopyahin ang code mula dito, ibinibigay ito tulad ng sumusunod:

// Ipinamamahagi ng isang lisensyang malaya ang kalooban.

// Gumamit nito sa anumang paraan na nais mo, kumita o libre, naibigay na umaangkop ito sa mga lisensya ng mga nauugnay na gawa nito.

// HTS221

// Ang code na ito ay dinisenyo upang gumana sa HTS221_I2CS I2C Mini Module

# isama

// HTS221 I2C address ay 0x5F

# tukuyin ang Addr 0x5F

walang bisa ang pag-setup ()

{

// Initialise I2C na komunikasyon bilang MASTER

Wire.begin ();

// Initialise serial communication, itakda ang baud rate = 9600

Serial.begin (9600);

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Piliin ang average register ng pagsasaayos

Wire.write (0x10);

// Temperatura ng average na sample = 256, average sample ng Humidity = 512

Wire.write (0x1B);

// Stop I2C Transmission

Wire.endTransmission ();

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Piliin ang control register1

Wire.write (0x20);

// Power ON, Patuloy na pag-update, rate ng output ng data = 1 Hz

Wire.write (0x85);

// Stop I2C Transmission

Wire.endTransmission ();

pagkaantala (300);

}

walang bisa loop ()

{

unsigned int data [2];

unsigned int val [4];

unsigned int H0, H1, H2, H3, T0, T1, T2, T3, hilaw;

// Mga halaga ng calliberation ng kahalumigmigan

para sa (int i = 0; i <2; i ++)

{

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write ((48 + i));

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

data = Wire.read ();

}

}

// I-convert ang data ng Humidity

H0 = data [0] / 2;

H1 = data [1] / 2;

para sa (int i = 0; i <2; i ++)

{

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write ((54 + i));

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

data = Wire.read ();

}

}

// I-convert ang data ng Humidity

H2 = (data [1] * 256.0) + data [0];

para sa (int i = 0; i <2; i ++)

{

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write ((58 + i));

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

data = Wire.read ();

}

}

// I-convert ang data ng Humidity

H3 = (data [1] * 256.0) + data [0];

// Mga halaga ng calliberation ng temperatura

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write (0x32);

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write (0x33);

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write (0x35);

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

hilaw = Wire.read ();

}

hilaw = hilaw at 0x0F;

// I-convert ang mga halaga ng calliberation ng temperatura sa 10-bit

T0 = (((raw & 0x03) * 256) + T0;

T1 = (((raw & 0x0C) * 64) + T1;

para sa (int i = 0; i <2; i ++)

{

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write ((60 + i));

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

data = Wire.read ();

}

}

// I-convert ang data

T2 = (data [1] * 256.0) + data [0];

para sa (int i = 0; i <2; i ++)

{

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write ((62 + i));

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 1 byte ng data

Wire.requestFrom (Addr, 1);

// Basahin ang 1 byte ng data

kung (Wire.available () == 1)

{

data = Wire.read ();

}

}

// I-convert ang data

T3 = (data [1] * 256.0) + data [0];

// Start I2C Transmission

Wire.beginTransmission (Addr);

// Magpadala ng rehistro ng data

Wire.write (0x28 | 0x80);

// Stop I2C Transmission

Wire.endTransmission ();

// Humiling ng 4 bytes ng data

Wire.requestFrom (Addr, 4);

// Basahin ang 4 bytes ng data

// halumigmig msb, halumigmig lsb, temp msb, temp lsb

kung (Wire.available () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// I-convert ang data

float halumigmig = (val [1] * 256.0) + val [0];

halumigmig = ((1.0 * H1) - (1.0 * H0)) * (1.0 * halumigmig - 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;

// Output data sa serial monitor

Serial.print ("Kamag-anak na kahalumigmigan:");

Serial.print (halumigmig);

Serial.println ("% RH");

Serial.print ("Temperatura sa Celsius:");

Serial.print (cTemp); Serial.println ("C");

Serial.print ("Temperatura sa Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

pagkaantala (500);

}

Hakbang 4: Mga Aplikasyon:

Maaaring gamitin ang HTS221 sa iba't ibang mga produktong consumer tulad ng mga air humidifiers at refrigerator atbp. Natagpuan din ng sensor na ito ang aplikasyon nito sa isang mas malawak na arena kasama ang Smart home automation, Industrial automation, respiratory equipments, asset at mga kalakal sa pagsubaybay.

Inirerekumendang: