Përmbajtje:

Arduino Nano - HTS221 Udhëzues për sensorin e lagështisë dhe temperaturës relative: 4 hapa
Arduino Nano - HTS221 Udhëzues për sensorin e lagështisë dhe temperaturës relative: 4 hapa

Video: Arduino Nano - HTS221 Udhëzues për sensorin e lagështisë dhe temperaturës relative: 4 hapa

Video: Arduino Nano - HTS221 Udhëzues për sensorin e lagështisë dhe temperaturës relative: 4 hapa
Video: Arduino Nano - HTS221 Relative Humidity and Temperature Sensor Tutorial 2024, Korrik
Anonim
Image
Image

HTS221 është një sensor dixhital ultra kompakt kapacitiv për lagështinë dhe temperaturën relative. Ai përfshin një element ndijimi dhe një qark të integruar specifik të aplikimit të sinjalit të përzier (ASIC) për të siguruar informacionin e matjes përmes ndërfaqeve serike dixhitale. I integruar me kaq shumë karakteristika ky është një nga sensorët më të përshtatshëm për matjet kritike të lagështisë dhe temperaturës. Këtu është demonstrimi me arduino nano.

Hapi 1: Ajo që ju nevojitet.. !

Ajo qe ju nevojitet.. !!
Ajo qe ju nevojitet.. !!

1. Arduino Nano

2. HTS221

3. Kabllo I²C

4. Mburoja I²C për Arduino Nano

Hapi 2: Lidhjet:

Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet
Lidhjet

Merrni një mburojë I2C për Arduino Nano dhe shtyjeni butësisht mbi kunjat e Nanos.

Pastaj lidhni njërin skaj të kabllit I2C me sensorin HTS221 dhe skajin tjetër me mburojën I2C.

Lidhjet janë treguar në figurën e mësipërme.

Hapi 3: Kodi:

Kodi
Kodi

Kodi arduino për HTS221 mund të shkarkohet nga depoja jonë e github- Komuniteti DCUBE.

Këtu është lidhja për të njëjtën gjë:

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

Ne përfshijmë bibliotekën Wire.h për të lehtësuar komunikimin I2c të sensorit me bordin Arduino.

Ju gjithashtu mund të kopjoni kodin nga këtu, ai jepet si më poshtë:

// Shpërndarë me një licencë me vullnet të lirë.

// Përdoreni atë në çdo mënyrë që dëshironi, fitimprurëse ose falas, me kusht që të përshtatet në licencat e veprave të tij shoqëruese.

// HTS221

// Ky kod është krijuar për të punuar me Mini Modulin HTS221_I2CS I2C

#përfshi

// Adresa HTS221 I2C është 0x5F

#përcaktoni Addr 0x5F

void setup ()

{

// Filloni komunikimin I2C si MASTER

Wire.begin ();

// Filloni komunikimin serik, vendosur normën e baudit = 9600

Serial.filloj (9600);

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidh regjistrin mesatar të konfigurimit

Wire.write (0x10);

// Mostrat mesatare të temperaturës = 256, Mostrat mesatare të lagështisë = 512

Wire.write (0x1B);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Zgjidhni regjistrin e kontrollit1

Wire.write (0x20);

// Ndezje, Përditësim i vazhdueshëm, Shkalla e daljes së të dhënave = 1 Hz

Wire.write (0x85);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

vonesë (300);

}

lak void ()

{

të dhëna int të panënshkruara [2];

int val i panënshkruar [4];

pa shenja int H0, H1, H2, H3, T0, T1, T2, T3, i papërpunuar;

// Vlerat e kalibrimit të lagështirës

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((48 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat e lagështisë

H0 = të dhëna [0] / 2;

H1 = të dhëna [1] / 2;

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((54 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat e lagështisë

H2 = (të dhëna [1] * 256.0) + të dhëna [0];

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((58 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat e lagështisë

H3 = (të dhëna [1] * 256.0) + të dhëna [0];

// Vlerat e kalibrimit të temperaturës

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x32);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

T0 = Wire.read ();

}

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x33);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

T1 = Wire.read ();

}

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x35);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

i papërpunuar = Wire.read ();

}

i papërpunuar = i papërpunuar & 0x0F;

// Shndërroni vlerat e kalibrimit të temperaturës në 10-bit

T0 = ((e papërpunuar & 0x03) * 256) + T0;

T1 = ((e papërpunuar & 0x0C) * 64) + T1;

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((60 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat

T2 = (të dhëna [1] * 256.0) + të dhëna [0];

për (int i = 0; i <2; i ++)

{

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write ((62 + i));

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 1 bajt të dhëna

Tela. Kërkohet Nga (Addr, 1);

// Lexoni 1 bajt të dhëna

nëse (Wire.available () == 1)

{

të dhënat = Wire.read ();

}

}

// Shndërroni të dhënat

T3 = (të dhëna [1] * 256.0) + të dhëna [0];

// Filloni Transmetimin I2C

Wire.beginTransmetimi (Addr);

// Dërgoni regjistrin e të dhënave

Wire.write (0x28 | 0x80);

// Ndaloni Transmetimin I2C

Wire.endTransmission ();

// Kërkoni 4 bajt të dhëna

Tela. Kërkohet Nga (Addr, 4);

// Lexoni 4 bajt të dhëna

// lagështia msb, lagështia lsb, temp msb, temp lsb

nëse (Wire. në dispozicion () == 4)

{

val [0] = Wire.read ();

val [1] = Wire.read ();

val [2] = Wire.read ();

val [3] = Wire.read ();

}

// Shndërroni të dhënat

lagështia notuese = (val [1] * 256.0) + val [0];

lagështia = ((1.0 * H1) - (1.0 * H0)) * (1.0 * lagështia - 1.0 * H2) / (1.0 * H3 - 1.0 * H2) + (1.0 * H0);

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

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

noton fTemp = (cTemp * 1.8) + 32;

// Dalja e të dhënave në monitorin serik

Serial.print ("Lagështia relative:");

Serial.print (lagështia);

Serial.println (" % RH");

Serial.print ("Temperatura në Celsius:");

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

Serial.print ("Temperatura në Fahrenheit:");

Serial.print (fTemp);

Serial.println ("F");

vonesë (500);

}

Hapi 4: Aplikimet:

HTS221 mund të përdoret në produkte të ndryshme të konsumit si lagështues të ajrit dhe frigoriferë, etj. Ky sensor gjithashtu gjen aplikimin e tij në një arenë më të gjerë duke përfshirë automatizimin e shtëpisë inteligjente, automatizimin industrial, pajisjet e frymëmarrjes, përcjelljen e aseteve dhe mallrave.

Recommended: