Orodha ya maudhui:

Upimaji wa Unyevu na Joto Kutumia HTS221 na Arduino Nano: Hatua 4
Upimaji wa Unyevu na Joto Kutumia HTS221 na Arduino Nano: Hatua 4

Video: Upimaji wa Unyevu na Joto Kutumia HTS221 na Arduino Nano: Hatua 4

Video: Upimaji wa Unyevu na Joto Kutumia HTS221 na Arduino Nano: Hatua 4
Video: FAHAMU KUHUSU WATU AMBAO HAWAWEZI KUAMBUKIZWA UKIMWI 2024, Julai
Anonim
Image
Image

HTS221 ni sensorer ya hali ya juu ya hali ya hewa yenye unyevu na joto. Inajumuisha kipengee cha kuhisi na matumizi ya ishara iliyochanganywa mzunguko maalum uliounganishwa (ASIC) kutoa habari ya kipimo kupitia njia kuu za dijiti. Imejumuishwa na huduma nyingi hii ni moja ya sensorer zinazofaa zaidi kwa vipimo muhimu vya unyevu na joto.

Katika mafunzo haya kuingiliana kwa moduli ya sensorer ya HTS221 na nano ya arduino imeonyeshwa. Kusoma viwango vya unyevu na joto, tumetumia arduino na adapta ya I2c. Adapter hii ya I2C inafanya unganisho kwa moduli ya sensa iwe rahisi na ya kuaminika.

Hatua ya 1: Vifaa vinahitajika:

Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika
Vifaa vinahitajika

Vifaa ambavyo tunahitaji kutimiza lengo letu ni pamoja na vifaa vifuatavyo vya vifaa:

1. HTS221

2. Arduino Nano

3. Cable ya I2C

4. I2C Shield kwa Arduino Nano

Hatua ya 2: Kuunganishwa kwa vifaa:

Kuunganishwa kwa Vifaa
Kuunganishwa kwa Vifaa
Kuunganishwa kwa Vifaa
Kuunganishwa kwa Vifaa

Sehemu ya uunganishaji wa vifaa kimsingi inaelezea uunganisho wa wiring unaohitajika kati ya sensa na nano ya arduino. Kuhakikisha unganisho sahihi ni hitaji la msingi wakati unafanya kazi kwenye mfumo wowote wa pato unalotaka. Kwa hivyo, viunganisho vinavyohitajika ni kama ifuatavyo.

HTS221 itafanya kazi juu ya I2C. Hapa kuna mfano wa mchoro wa wiring, unaonyesha jinsi ya kuweka waya kila kiunganishi cha sensa.

Nje ya sanduku, bodi imesanidiwa kwa kiolesura cha I2C, kwa hivyo tunapendekeza utumie uunganisho huu ikiwa wewe ni agnostic.

Unachohitaji ni waya nne! Viunganisho vinne tu vinahitajika Vcc, Gnd, SCL na SDA pini na hizi zimeunganishwa kwa msaada wa kebo ya I2C.

Uunganisho huu umeonyeshwa kwenye picha hapo juu.

Hatua ya 3: Nambari ya Upimaji wa Unyevu na Joto:

Nambari ya Upimaji wa Unyevu na Joto
Nambari ya Upimaji wa Unyevu na Joto

Wacha tuanze na nambari ya Arduino sasa.

Wakati wa kutumia moduli ya sensorer na Arduino, tunajumuisha maktaba ya Wire.h. Maktaba ya "Waya" ina kazi ambazo zinawezesha mawasiliano ya i2c kati ya sensa na bodi ya Arduino.

Nambari nzima ya Arduino imepewa hapa chini kwa urahisi wa mtumiaji:

# pamoja

// Anwani ya HTS221 I2C ni 0x5F

#fafanua Addr 0x5F

kuanzisha batili ()

{

// Anzisha mawasiliano ya I2C kama MASTER

Wire.begin ();

// Anzisha mawasiliano ya serial, weka kiwango cha baud = 9600

Kuanzia Serial (9600);

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya usanidi wastani

Andika waya (0x10);

// Sampuli za wastani wa joto = 256, Sampuli za wastani wa unyevu = 512

Andika waya (0x1B);

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Chagua rejista ya kudhibiti1

Andika waya (0x20);

// Power ON, Kuendelea kusasisha, kiwango cha pato la data = 1 Hz

Andika waya (0x85);

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

kuchelewesha (300);

}

kitanzi batili ()

{

data isiyowekwa saini [2];

unsigned int val [4];

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

// Thamani za upunguzaji wa unyevu

kwa (int i = 0; i <2; i ++)

{

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya ((48 + i));

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

data = soma kwa waya ();

}

}

// Badilisha data ya Unyevu

H0 = data [0] / 2;

H1 = data [1] / 2;

kwa (int i = 0; i <2; i ++)

{

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya ((54 + i));

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

data = soma kwa waya ();

}

}

// Badilisha data ya Unyevu

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

kwa (int i = 0; i <2; i ++)

{

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya ((58 + i));

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

data = soma kwa waya ();

}

}

// Badilisha data ya Unyevu

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

// Thamani za upigaji joto

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya (0x32);

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

T0 = soma kwa waya ();

}

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya (0x33);

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

T1 = soma kwa waya ();

}

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya (0x35);

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

ghafi = waya.soma ();

}

mbichi = mbichi & 0x0F;

// Badilisha viwango vya joto vya joto kuwa 10-bits

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

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

kwa (int i = 0; i <2; i ++)

{

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya ((60 + i));

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

data = soma kwa waya ();

}

}

// Badilisha data

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

kwa (int i = 0; i <2; i ++)

{

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya ((62 + i));

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba 1 byte ya data

Ombi la Wire. Toka (Addr, 1);

// Soma 1 ka data

ikiwa (Waya haipatikani () == 1)

{

data = soma kwa waya ();

}

}

// Badilisha data

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

// Anza Uhamisho wa I2C

Uwasilishaji wa waya (Addr);

// Tuma rejista ya data

Andika waya (0x28 | 0x80);

// Acha Uhamisho wa I2C

Uwasilishaji wa waya ();

// Omba ka 4 za data

Ombi la Wire. Toka (Addr, 4);

// Soma ka 4 za data

// unyevu msb, unyevu lsb, temp msb, temp lsb

ikiwa (Waya haipatikani () == 4)

{

val [0] = Soma kwa waya ();

val [1] = Soma kwa waya ();

val [2] = soma ya waya ();

val [3] = soma ya waya ();

}

// Badilisha data

unyevu wa kuelea = (val [1] * 256.0) + val [0];

unyevu = ((1.0 * H1) - (1.0 * H0)) * (1.0 * unyevu - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);

int temp = (val [3] * 256) + val [2];

kuelea cTemp = ((((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);

kuelea fTemp = (cTemp * 1.8) + 32;

// data ya Pato kwa mfuatiliaji wa serial

Serial.print ("Unyevu wa jamaa:");

Printa ya serial (unyevu);

Serial.println ("% RH");

Serial.print ("Joto katika Celsius:");

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

Serial.print ("Joto katika Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

kuchelewesha (500);

}

Katika maktaba ya waya Wire.write () na Wire.read () hutumiwa kuandika amri na kusoma pato la sensorer.

Serial.print () na Serial.println () hutumiwa kuonyesha pato la sensa kwenye mfuatiliaji wa serial wa IDE ya Arduino.

Pato la sensor linaonyeshwa kwenye picha hapo juu.

Hatua ya 4: Maombi:

Maombi
Maombi

HTS221 inaweza kuajiriwa katika bidhaa anuwai za watumiaji kama viboreshaji hewa na majokofu n.k. Sensor hii pia hupata matumizi yake katika uwanja mpana pamoja na mitambo ya Smart nyumbani, mitambo ya Viwanda, vifaa vya kupumua, ufuatiliaji wa mali na bidhaa.

Ilipendekeza: