İçindekiler:

HTS221 ve Raspberry Pi Kullanarak Nem ve Sıcaklık Ölçümü: 4 Adım
HTS221 ve Raspberry Pi Kullanarak Nem ve Sıcaklık Ölçümü: 4 Adım

Video: HTS221 ve Raspberry Pi Kullanarak Nem ve Sıcaklık Ölçümü: 4 Adım

Video: HTS221 ve Raspberry Pi Kullanarak Nem ve Sıcaklık Ölçümü: 4 Adım
Video: Czujnik temperatury i wilgotnosci AM2301 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.

Bu eğitimde, HTS221 sensör modülünün ahududu pi ile arayüzlenmesi ve python dili kullanılarak programlanması da gösterilmiştir. Nem ve sıcaklık değerlerini okumak için I2C adaptörlü ahududu pi kullandık. Bu I2C adaptörü sensör modülüne bağlantıyı daha kolay ve daha güvenilir hale getiriyor.

Adım 1: Donanım Gerekli:

Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım
Gerekli Donanım

Hedefimizi gerçekleştirmek için ihtiyaç duyduğumuz malzemeler aşağıdaki donanım bileşenlerini içerir:

1. HTS221

2. Ahududu Pi

3. I2C Kablosu

4. Ahududu pi için I2C Kalkanı

5. Ethernet Kablosu

Adım 2: Donanım Bağlantısı:

Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı
Donanım Bağlantısı

Donanım bağlantısı bölümü temel olarak sensör ve ahududu pi arasında gerekli olan kablo bağlantılarını açıklar. İstenilen çıktı için herhangi bir sistem üzerinde çalışırken doğru bağlantıların sağlanması temel zorunluluktur. Yani, gerekli bağlantılar aşağıdaki gibidir:

HTS221, I2C üzerinden çalışacaktır. Sensörün her bir arayüzünün nasıl bağlanacağını gösteren örnek kablo şeması buradadır.

Kutudan çıktığı gibi, kart bir I2C arayüzü için yapılandırılmıştır, bu nedenle, aksi takdirde agnostik iseniz bu bağlantıyı kullanmanızı öneririz.

Tek ihtiyacınız olan dört tel! Vcc, Gnd, SCL ve SDA pinlerinden sadece dört bağlantı gereklidir ve bunlar I2C kablosu yardımıyla bağlanır.

Bu bağlantılar yukarıdaki resimlerde gösterilmiştir.

Adım 3: Nem ve Sıcaklık Ölçümü Kodu:

Nem ve Sıcaklık Ölçümü Kodu
Nem ve Sıcaklık Ölçümü Kodu

Raspberry pi kullanmanın avantajı, kartı programlamak istediğiniz programlama dilinin, sensör ile arayüz oluşturmak için size esneklik sağlamasıdır. Bu kartın bu avantajından yararlanarak, burada programlamasını python'da gösteriyoruz. HTS221 için python kodu, Her Şeyi Kontrol Et Topluluğu olan github topluluğumuzdan indirilebilir.

Kullanıcıların kolaylığının yanı sıra, kodu burada da açıklıyoruz:

Kodlamanın ilk adımı olarak, python olması durumunda smbus kitaplığını indirmeniz gerekir, çünkü bu kitaplık kodda kullanılan işlevleri destekler. Bu nedenle, kütüphaneyi indirmek için aşağıdaki bağlantıyı ziyaret edebilirsiniz:

pypi.python.org/pypi/smbus-cffi/0.5.1

Bu sensör için çalışan python kodunu buradan da kopyalayabilirsiniz:

smbus'u içe aktar

ithalat zamanı

# I2C veri yolunu alın

veri yolu = smbus. SMBus(1)

# HTS221 adresi, 0x5F(95)

# Ortalama konfigürasyon kaydı seçin, 0x10(16)

# 0x1B(27) Sıcaklık ortalama örnekleri = 256, Nem ortalama örnekleri = 512

bus.write_byte_data(0x5F, 0x10, 0x1B)

# HTS221 adresi, 0x5F(95)

# Kontrol kaydı seçin1, 0x20(32)

# 0x85(133) Güç AÇIK, Sürekli güncelleme, Veri çıkış hızı = 1 Hz

bus.write_byte_data(0x5F, 0x20, 0x85)

zaman.uyku(0.5)

# HTS221 adresi, 0x5F(95)

# Cihazın kalıcı hafızasından Kalibrasyon değerlerini oku

# Nem Kalibrasyon değerleri

# 0x30(48), 1 bayttan veriyi geri oku

değer = bus.read_byte_data(0x5F, 0x30)

H0 = değer / 2

# 0x31(49), 1 bayttan veriyi geri oku

değer = bus.read_byte_data(0x5F, 0x31)

H1 = değer/2

# 0x36(54), 2 bayttan veriyi geri oku

val0 = bus.read_byte_data(0x5F, 0x36)

val1 = bus.read_byte_data(0x5F, 0x37)

H2 = ((val1 & 0xFF) * 256) + (val0 & 0xFF)

# 0x3A(58), 2 bayttan veriyi geri oku

val0 = bus.read_byte_data(0x5F, 0x3A)

val1 = bus.read_byte_data(0x5F, 0x3B)

H3 = ((val1 & 0xFF) * 256) + (val0 & 0xFF)

# Sıcaklık Kalibrasyon değerleri

# 0x32(50), 1 bayttan veriyi geri oku

T0 = bus.read_byte_data(0x5F, 0x32)

T0 = (T0 & 0xFF)

# 0x32(51), 1 bayttan veriyi geri oku

T1 = bus.read_byte_data(0x5F, 0x33)

T1 = (T1 & 0xFF)

# 0x35(53), 1 bayttan veriyi geri oku

ham = bus.read_byte_data(0x5F, 0x35)

ham = (ham ve 0x0F)

# Sıcaklık Kalibrasyon değerlerini 10 bit'e dönüştürün

T0 = ((ham ve 0x03) * 256) + T0

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

# 0x3C(60), 2 bayttan veriyi geri oku

val0 = bus.read_byte_data(0x5F, 0x3C)

val1 = bus.read_byte_data(0x5F, 0x3D)

T2 = ((val1 & 0xFF) * 256) + (val0 & 0xFF)

# 0x3E(62), 2 bayttan veriyi geri oku

val0 = bus.read_byte_data(0x5F, 0x3E)

val1 = bus.read_byte_data(0x5F, 0x3F)

T3 = ((val1 & 0xFF) * 256) + (val0 & 0xFF)

# Komut kaydı 0x80 (128), 4 bayt ile 0x28(40)'dan verileri geri oku

# nem msb, nem lsb, temp msb, temp lsb

veri = bus.read_i2c_block_data(0x5F, 0x28 | 0x80, 4)

# Verileri dönüştürün

nem = (veri[1] * 256) + veri[0]

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

sıcaklık = (veri[3] * 256) + veri[2]

sıcaklık > 32767 ise:

sıcaklık -= 65536

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

fTemp = (cTemp * 1.8) + 32

# Ekrana veri çıkışı

print "Bağıl Nem: %.2f %%" %nem

print "Sıcaklık Santigrat cinsinden: %.2f C" %cTemp

print "Sıcaklık Fahrenheit cinsinden: %.2f F" %fTemp

Aşağıda belirtilen kod kısmı, python kodlarının doğru yürütülmesi için gerekli kitaplıkları içerir.

smbus'u içe aktar

ithalat zamanı

Komut istemine aşağıda belirtilen komutu yazarak kod çalıştırılabilir.

$> piton HTS221.py

Sensörün çıkışı da kullanıcının referans olması açısından yukarıdaki resimde gösterilmektedir.

Adım 4: Uygulamalar:

Uygulamalar
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: