Innholdsfortegnelse:
Video: Arduino Nano - HTS221 Relativ fuktighets- og temperatursensoropplæring: 4 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
HTS221 er en ultrakompakt kapasitiv digital sensor for relativ fuktighet og temperatur. Den inneholder et følerelement og en spesifikk integrert krets (ASIC) for blandet signal for å gi måleinformasjonen gjennom digitale serielle grensesnitt. Integrert med så mange funksjoner, dette er en av de mest passende sensorene for kritiske fuktighets- og temperaturmålinger. Her er demonstrasjonen med arduino nano.
Trinn 1: Hva du trenger..
1. Arduino Nano
2. HTS221
3. I²C -kabel
4. I²C -skjold for Arduino Nano
Trinn 2: Tilkoblinger:
Ta et I2C -skjold for Arduino Nano og skyv det forsiktig over pinnene på Nano.
Koble deretter den ene enden av I2C -kabelen til HTS221 -sensoren og den andre enden til I2C -skjoldet.
Tilkoblinger er vist på bildet ovenfor.
Trinn 3: Kode:
Arduino-koden for HTS221 kan lastes ned fra vårt github-depot- DCUBE Community.
Her er lenken til det samme:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
Vi inkluderer bibliotek Wire.h for å lette I2c -kommunikasjonen av sensoren med Arduino -kortet.
Du kan også kopiere koden herfra, den er gitt som følger:
// Distribuert med en fri viljelisens.
// Bruk den slik du vil, profitt eller gratis, forutsatt at den passer inn i lisensene til de tilhørende verkene.
// HTS221
// Denne koden er designet for å fungere med HTS221_I2CS I2C Mini Module
#inkludere
// HTS221 I2C -adressen er 0x5F
#define Addr 0x5F
ugyldig oppsett ()
{
// Initialiser I2C -kommunikasjon som MASTER
Wire.begin ();
// Initialiser seriell kommunikasjon, sett overføringshastighet = 9600
Serial.begin (9600);
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Velg gjennomsnittlig konfigurasjonsregister
Wire.write (0x10);
// Temperatur gjennomsnittlige prøver = 256, Fuktighets gjennomsnittsprøver = 512
Wire.write (0x1B);
// Stopp I2C -overføring
Wire.endTransmission ();
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Velg kontrollregister1
Wire.write (0x20);
// Strøm PÅ, kontinuerlig oppdatering, datautgangshastighet = 1 Hz
Wire.write (0x85);
// Stopp I2C -overføring
Wire.endTransmission ();
forsinkelse (300);
}
hulrom ()
{
usignerte int -data [2];
usignert int val [4];
usignert int H0, H1, H2, H3, T0, T1, T2, T3, rå;
// Verdier for fuktighetskalliberasjon
for (int i = 0; i <2; i ++)
{
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write ((48 + i));
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Konverter fuktighetsdata
H0 = data [0] / 2;
H1 = data [1] / 2;
for (int i = 0; i <2; i ++)
{
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write ((54 + i));
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Konverter fuktighetsdata
H2 = (data [1] * 256,0) + data [0];
for (int i = 0; i <2; i ++)
{
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write ((58 + i));
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Konverter fuktighetsdata
H3 = (data [1] * 256,0) + data [0];
// Temperaturoppkallingsverdier
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write (0x32);
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
T0 = Wire.read ();
}
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write (0x33);
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
T1 = Wire.read ();
}
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write (0x35);
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
raw = Wire.read ();
}
rå = rå & 0x0F;
// Konverter temperaturoppkallingsverdiene til 10-bits
T0 = ((rå & 0x03) * 256) + T0;
T1 = ((rå & 0x0C) * 64) + T1;
for (int i = 0; i <2; i ++)
{
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write ((60 + i));
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Konverter dataene
T2 = (data [1] * 256,0) + data [0];
for (int i = 0; i <2; i ++)
{
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write ((62 + i));
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 1 byte med data
Wire.requestFrom (Addr, 1);
// Les 1 byte data
hvis (Wire.available () == 1)
{
data = Wire.read ();
}
}
// Konverter dataene
T3 = (data [1] * 256,0) + data [0];
// Start I2C -overføring
Wire.beginTransmission (Addr);
// Send dataregister
Wire.write (0x28 | 0x80);
// Stopp I2C -overføring
Wire.endTransmission ();
// Be om 4 byte med data
Wire.requestFrom (Addr, 4);
// Les 4 byte med data
// fuktighet msb, fuktighet lsb, temp msb, temp lsb
hvis (Wire.available () == 4)
{
val [0] = Wire.read ();
val [1] = Wire.read ();
val [2] = Wire.read ();
val [3] = Wire.read ();
}
// Konverter dataene
flytefuktighet = (val [1] * 256,0) + val [0];
fuktighet = ((1,0 * H1) - (1,0 * H0)) * (1,0 * fuktighet - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);
int temp = (val [3] * 256) + val [2];
flyte cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
float fTemp = (cTemp * 1.8) + 32;
// Utdata til seriell skjerm
Serial.print ("Relativ fuktighet:");
Serial.print (fuktighet);
Serial.println (" % RH");
Serial.print ("Temperatur i Celsius:");
Serial.print (cTemp); Serial.println ("C");
Serial.print ("Temperatur i Fahrenheit:");
Serial.print (fTemp);
Serial.println ("F");
forsinkelse (500);
}
Trinn 4: Søknader:
HTS221 kan brukes i forskjellige forbrukerprodukter som luftfuktere og kjøleskap etc. Denne sensoren finner også sin anvendelse på en bredere arena, inkludert smart hjemmeautomatisering, industriell automatisering, åndedrettsutstyr, eiendeler og varesporing.
Anbefalt:
Hvordan bruke DHT22 fuktighets- og temperatursensor med Arduino: 6 trinn
Hvordan bruke DHT22 fuktighets- og temperatursensor med Arduino: I denne opplæringen lærer vi hvordan du bruker DHT22 fuktighets- og temperatursensor med Arduino og viser verdiene på OLED -skjermen. Se videoen
Hvordan bruke DHT12 I2C fuktighets- og temperatursensor med Arduino: 7 trinn
Hvordan bruke DHT12 I2C fuktighets- og temperatursensor med Arduino: I denne opplæringen lærer vi hvordan du bruker DHT12 I2C fuktighets- og temperatursensor med Arduino og viser verdiene på OLED -skjermen. Se videoen
ESP8266 og Visuino: DHT11 Temperatur- og fuktighets -webserver: 12 trinn
ESP8266 og Visuino: DHT11 Temperatur- og fuktighets-webserver: ESP8266-moduler er flotte frittstående frittstående kontrollere med innebygd Wi-Fi, og jeg har allerede laget en rekke instrukser om dem. DTH11/DTH21/DTH22 og AM2301 er veldig populære kombinerte temperaturer og fuktighet Arduino -sensorer, og jeg lagde en rekke
Arduino AMS5812_0050-D-B Trykk- og temperatursensoropplæring: 4 trinn
Arduino AMS5812_0050-D-B Trykk- og temperatursensoropplæring: AMS5812 forsterket trykksensor med analoge og digitale utganger er en høypresisjonssensor med analog spenningsutgang og digitalt I2C-grensesnitt. Den kombinerer et piezoresistivt følerelement med et signalbehandlingselement for driften
Arduino Nano - TCN75A Temperatursensoropplæring: 4 trinn
Arduino Nano-TCN75A Temperatursensor Opplæring: TCN75A er en to-leders seriell temperatursensor med temperatur-til-digital-omformer. Den er integrert med brukerprogrammerbare registre som gir fleksibilitet for temperaturfølende applikasjoner. Registerinnstillingene tillater brukere