İçindekiler:
Video: Arduino Nano - HTS221 Bağıl Nem ve Sıcaklık Sensörü Eğitimi: 4 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
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..!
1. Arduino Nano
2. HTS221
3. I²C Kablosu
4. Arduino Nano için I²C Kalkanı
Adım 2: 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:
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:
Raspberry Pi SHT25 Nem ve Sıcaklık Sensörü Python Eğitimi: 4 Adım
Raspberry Pi SHT25 Nem ve Sıcaklık Sensörü Python Eğitimi: SHT25 I2C Nem ve Sıcaklık Sensörü ±1.8%RH ±0.2°C I2C Mini Modül. SHT25 yüksek hassasiyetli nem ve sıcaklık sensörü, kalibre edilmiş, doğrusallaştırılmış sensör işaretleri sağlayarak form faktörü ve zeka açısından bir endüstri standardı haline geldi
Arduino Nano - SI7050 Sıcaklık Sensörü Eğitimi: 4 Adım
Arduino Nano - SI7050 Sıcaklık Sensörü Eğitimi: SI7050, I2C iletişim protokolü üzerinde çalışan ve tüm çalışma voltajı ve sıcaklık aralığında yüksek doğruluk sunan dijital bir sıcaklık sensörüdür. Sensörün bu yüksek doğruluğu, yeni sinyal işleme ve anal
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Python Eğitimi: 4 Adım
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Python Eğitimi: HIH6130, dijital çıkışlı bir nem ve sıcaklık sensörüdür. Bu sensörler, ±%4 RH doğruluk seviyesi sağlar. Endüstri lideri uzun vadeli kararlılık, gerçek sıcaklık kompanzasyonlu dijital I2C, Endüstri lideri güvenilirlik, Enerji verimliliği ile
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Java Eğitimi: 4 Adım
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Java Eğitimi: HIH6130, dijital çıkışlı bir nem ve sıcaklık sensörüdür. Bu sensörler, ±%4 RH doğruluk seviyesi sağlar. Endüstri lideri uzun vadeli kararlılık, gerçek sıcaklık kompanzasyonlu dijital I2C, Endüstri lideri güvenilirlik, Enerji verimliliği ile
Raspberry Pi ve TE Bağlantısı Kullanan Sıcaklık, Bağıl Nem, Atmosferik Basınç Kaydedici MS8607-02BA01: 22 Adım (Resimlerle)
Sıcaklık, Bağıl Nem, Raspberry Pi ve TE Bağlantısı Kullanan Atmosferik Basınç Kaydedici MS8607-02BA01: Giriş: Bu projede, sıcaklık, nem ve atmosferik basınç için bir kayıt sisteminin adım adım nasıl oluşturulacağını göstereceğim. Bu proje Raspberry Pi 3 Model B ve TE Connectivity çevresel sensör çipi MS8607-02BA'ya dayanmaktadır