İçindekiler:

Arduino Nano - HTS221 Bağıl Nem ve Sıcaklık Sensörü Eğitimi: 4 Adım
Arduino Nano - HTS221 Bağıl Nem ve Sıcaklık Sensörü Eğitimi: 4 Adım

Video: Arduino Nano - HTS221 Bağıl Nem ve Sıcaklık Sensörü Eğitimi: 4 Adım

Video: Arduino Nano - HTS221 Bağıl Nem ve Sıcaklık Sensörü Eğitimi: 4 Adım
Video: TINY ML - ARDUINO NANO 33 BLE SENSE - HTS221 TEMPERATURA ED UMIDITA' - HUMIDITY AND TEMPERATURE 2024, Kasım
Anonim
Image
Image

HTS221, bağıl nem ve sıcaklık için ultra kompakt kapasitif bir dijital sensördür. Dijital seri arabirimler aracılığıyla ölçüm bilgilerini sağlamak için bir algılama elemanı ve karma sinyal uygulamasına özel entegre devre (ASIC) içerir. Pek çok özellikle entegre edilmiş bu sensör, kritik nem ve sıcaklık ölçümleri için en uygun sensörlerden biridir. İşte arduino nano ile yapılan gösteri.

Adım 1: İhtiyacınız Olan Şey..!

Neye ihtiyacın var..!!
Neye ihtiyacın var..!!

1. Arduino Nano

2. HTS221

3. I²C Kablosu

4. Arduino Nano için I²C Kalkanı

Adım 2: Bağlantılar:

Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar
Bağlantılar

Arduino Nano için bir I2C kalkanı alın ve yavaşça Nano'nun pimlerinin üzerine itin.

Ardından I2C kablosunun bir ucunu HTS221 sensörüne ve diğer ucunu I2C blendajına bağlayın.

Bağlantılar yukarıdaki resimde gösterilmiştir.

Adım 3: Kod:

Kod
Kod

HTS221 için arduino kodu, github depomuz DCUBE Topluluğundan indirilebilir.

İşte aynısı için bağlantı:

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

Sensörün Arduino kartı ile I2c iletişimini kolaylaştırmak için Wire.h kitaplığını ekledik.

Kodu buradan da kopyalayabilirsiniz, aşağıdaki şekilde verilmiştir:

// Özgür irade lisansıyla dağıtılır.

// İlişkili çalışmalarının lisanslarına uyması koşuluyla, istediğiniz şekilde, kârlı veya ücretsiz olarak kullanın.

// HTS221

// Bu kod, HTS221_I2CS I2C Mini Modülü ile çalışmak üzere tasarlanmıştır.

#Dahil etmek

// HTS221 I2C adresi 0x5F

#define Addr 0x5F

geçersiz kurulum()

{

// I2C iletişimini MASTER olarak başlat

Wire.begin();

// Seri iletişimi başlat, baud hızını ayarla = 9600

Seri.başla(9600);

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Ortalama konfigürasyon kaydı seç

Wire.write(0x10);

// Sıcaklık ortalama örnekleri = 256, Nem ortalama örnekleri = 512

Wire.write(0x1B);

// I2C İletimini Durdur

Wire.endTransmission();

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Kontrol kaydı1'i seç

Wire.write(0x20);

// Güç AÇIK, Sürekli güncelleme, Veri çıkış hızı = 1 Hz

Wire.write(0x85);

// I2C İletimini Durdur

Wire.endTransmission();

gecikme(300);

}

boşluk döngüsü()

{

imzasız int veri[2];

imzasız int val[4];

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

// Nem kalibrasyon değerleri

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

{

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write((48 + i));

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Nem verilerini dönüştür

H0 = veri[0] / 2;

H1 = veri[1] / 2;

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

{

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write((54 + i));

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Nem verilerini dönüştür

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

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

{

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write((58 + i));

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Nem verilerini dönüştür

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

// Sıcaklık kalibrasyon değerleri

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write(0x32);

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

T0 = Tel.read();

}

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write(0x33);

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

T1 = Tel.read();

}

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write(0x35);

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

ham = Wire.read();

}

ham = ham & 0x0F;

// Sıcaklık kalibrasyon değerlerini 10 bit'e çevir

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

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

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

{

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write((60 + i));

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Verileri dönüştür

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

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

{

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write((62 + i));

// I2C İletimini Durdur

Wire.endTransmission();

// 1 bayt veri iste

Wire.requestFrom(Adr, 1);

// 1 bayt veri oku

if(Wire.available() == 1)

{

data = Wire.read();

}

}

// Verileri dönüştür

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

// I2C İletimini Başlat

Wire.beginTransmission(Adr);

// Veri kaydı gönder

Wire.write(0x28 | 0x80);

// I2C İletimini Durdur

Wire.endTransmission();

// 4 bayt veri iste

Wire.requestFrom(Adr, 4);

// 4 bayt veri oku

// nem msb, nem lsb, temp msb, temp lsb

if(Wire.available() == 4)

{

val[0] = Tel.read();

val[1] = Tel.read();

val[2] = Wire.read();

val[3] = Wire.read();

}

// Verileri dönüştür

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

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

int sıcaklık = (değer[3] * 256) + değer[2];

float cTemp = (((T1 - T0) / 8.0) * (sıcaklık - T2)) / (T3 - T2) + (T0 / 8.0);

float fTemp = (cTemp * 1.8) + 32;

// Verileri seri monitöre çıkar

Serial.print("Bağıl nem: ");

Seri.print(nem);

Serial.println(" %RH");

Serial.print("Sıcaklık Santigrat Olarak: ");

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

Serial.print("Sıcaklık Fahrenhayt Olarak: ");

Seri.print(fTemp);

Serial.println("F");

gecikme(500);

}

Adım 4: Uygulamalar:

HTS221, hava nemlendiriciler ve buzdolapları vb. gibi çeşitli tüketici ürünlerinde kullanılabilir. Bu sensör ayrıca Akıllı ev otomasyonu, Endüstriyel otomasyon, solunum ekipmanları, varlık ve mal takibi dahil olmak üzere daha geniş bir alanda uygulamasını bulur.

Önerilen: