İçindekiler:

Raspberry Pi'yi Python'da BME280 ile Kullanan Hava Durumu İstasyonu: 6 Adım
Raspberry Pi'yi Python'da BME280 ile Kullanan Hava Durumu İstasyonu: 6 Adım

Video: Raspberry Pi'yi Python'da BME280 ile Kullanan Hava Durumu İstasyonu: 6 Adım

Video: Raspberry Pi'yi Python'da BME280 ile Kullanan Hava Durumu İstasyonu: 6 Adım
Video: Gaz Dedektörü 2024, Temmuz
Anonim
Image
Image
Zorunlu Ekipman Faturası
Zorunlu Ekipman Faturası

maith an scéalaí an aimir(The Weather is a Good Storyteller)

Küresel ısınma ve iklim değişikliği sorunları ile birlikte, küresel hava düzeni dünyamızda hava durumuyla ilgili bir dizi doğal afete (kuraklık, aşırı sıcaklıklar, sel, fırtına ve orman yangınları) yol açan düzensiz hale geliyor, bir hava durumu istasyonu gerekli gibi görünüyor. evde kötülük. Bir grup ucuz parça ve sensör kullanan bir meteoroloji istasyonu projesinden temel elektronikler hakkında çok şey öğreniyorsunuz. Kurulumu oldukça kolaydır ve hiçbir zaman buna sahip olamazsınız.

Adım 1: Zorunlu Ekipman Faturası

Zorunlu Ekipman Faturası
Zorunlu Ekipman Faturası
Zorunlu Ekipman Faturası
Zorunlu Ekipman Faturası
Zorunlu Ekipman Faturası
Zorunlu Ekipman Faturası

1. Ahududu Pi

Ellerinizi bir Raspberry Pi tahtasına alın. Raspberry Pi, Linux ile çalışan tek kartlı bir bilgisayardır. Raspberry Pi, öğrencilerin programlama ve yazılım geliştirmenin temellerini öğrenmeleri için erişilebilir ve işlevsel bir bilgisayardan yapılmış gerçekten ucuz, küçük ve çok yönlüdür.

2. Raspberry Pi için I2C Kalkanı

INPI2(I2C adaptörü), birden fazla I2C cihazıyla kullanım için Raspberry Pi 2/3 bir I²C bağlantı noktası sağlar. DCUBE Store'da mevcuttur.

3. Dijital Nem, Basınç ve Sıcaklık Sensörü, BME280

BME280, hızlı tepki süresine ve yüksek genel doğruluğa sahip bir nem, basınç ve sıcaklık sensörüdür. Bu sensörü DCUBE Store'dan satın aldık.

4. I2C Bağlantı Kablosu

Burada bulunan I²C kablosunu kullandık DCUBE Store.

5. Mikro USB kablosu

Mikro USB kablosu Güç kaynağı, Raspberry Pi'ye güç sağlamak için ideal bir seçimdir.

6. Ethernet Kablosu/WiFi Adaptörü ile İnternet Erişimini Yorumlayın

İnternet erişimi, yerel bir ağa ve internete bağlı bir Ethernet kablosu aracılığıyla etkinleştirilebilir. Alternatif olarak, yapılandırma gerektiren bir USB kablosuz donanım kilidi kullanarak kablosuz bir ağa bağlanabilirsiniz.

7. HDMI Kablosu (Ekran ve bağlantı kablosu)

Herhangi bir HDMI/DVI monitörü ve herhangi bir TV, Pi için bir ekran olarak çalışmalıdır. Alternatif olarak, bir monitör ihtiyacını ortadan kaldırarak Pi'ye SSH üzerinden uzaktan erişebilirsiniz (yalnızca ileri düzey kullanıcılar).

Adım 2: Devre için Donanım Bağlantıları

Devre için Donanım Bağlantıları
Devre için Donanım Bağlantıları
Devre için Donanım Bağlantıları
Devre için Donanım Bağlantıları

Devreyi gösterilen şemaya göre yapınız. Genel olarak bağlantılar çok basittir. Sakin olun ve yukarıdaki talimatları ve resimleri izleyin, sorun yaşamamalısınız. Öğrenirken, donanım ve yazılım bilgisi ile ilgili elektroniğin temellerini iyice öğrendik. Bu proje için basit bir elektronik devre şeması çizmek istedik. Elektronik şemalar planlar gibidir. Bir plan çizin ve tasarımı dikkatlice takip edin. Elektronikle ilgili birkaç temel kavram burada faydalı olabilir!

Raspberry Pi ve I2C Shield Bağlantısı

Öncelikle Raspberry Pi'yi alın ve üzerine I²C Shield'i yerleştirin. Kalkana hafifçe basın ve bu adımı pasta kadar kolay bitirdik (resme bakın).

Sensör ve Raspberry Pi Bağlantısı

Sensörü alın ve I²C kablosunu ona bağlayın. I²C Çıkışının DAİMA I²C Girişine bağlandığından emin olun. Aynısı Raspberry Pi için de GPIO pinleri üzerine I²C shield monte edilmiş olarak takip edilmelidir.. Bu basit tak ve çalıştır kablosuyla kolaylıkla bir uygulamaya takabilir, panoları değiştirebilir veya daha fazla pano ekleyebilirsiniz.

Not: Kahverengi kablo her zaman bir cihazın çıkışı ile başka bir cihazın girişi arasındaki Toprak (GND) bağlantısını takip etmelidir

İnternet Bağlantısı anahtardır

Burada iki seçeneğiniz var. Raspberry Pi'yi bir ethernet kablosu kullanarak ağa bağlayabilir veya WIFI Bağlantısı için bir USB - WiFi Adaptörü kullanabilirsiniz. Her iki durumda da, internete bağlı olduğu sürece sigortalısınız.

Devreye Güç Verme

Mikro USB kablosunu Raspberry Pi'nin güç jakına takın. Yumruk at ve işte! Kadromuz bilgidir.

Ekrana Bağlantı

HDMI kablosunu bir monitöre veya TV'ye bağlayabiliriz. Ayrıca Raspberry Pi'ye uzaktan erişim kullanarak monitöre bağlamadan da erişebiliyoruz. SSH, güvenli uzaktan erişim için kullanışlı bir araçtır. Bunun için PUTTY yazılımını da kullanabilirsiniz. Bu seçenek ileri düzey kullanıcılar içindir, bu nedenle burada ayrıntılı olarak ele almayacağız.

Çok fazla harcamak istemiyorsanız ekonomik bir yöntemdir

Adım 3: Python'da Raspberry Pi Programlama

Python'da Raspberry Pi Programlama
Python'da Raspberry Pi Programlama

Raspberry Pi ve BME280 Sensörü için Python Kodu. Github depomuzda mevcuttur.

Kodlara geçmeden önce Readme dosyasında verilen talimatları okuduğunuzdan ve Raspberry Pi'nizi buna göre kurduğunuzdan emin olun. Biraz zamanınız sizi kurulum için hazır hale getirecektir. Bir meteoroloji istasyonu, hava durumu tahminleri için bilgi sağlamak ve hava ve iklimi incelemek için atmosferik koşulları ölçmek için araç ve gereçlere sahip, karada veya denizde bulunan bir tesistir.

Kod açıkça önünüzde ve hayal edebileceğiniz en basit formda ve hiçbir sorun yaşamamanız gerekiyor. Yine de varsa sor (Bin şey bilsen bile yine de bilen birine sor).

Bu sensör için çalışan Python kodunu buradan da kopyalayabilirsiniz.

# Bir özgür irade lisansı ile 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. # BME280 # Bu kod, ControlEverything.com'da bulunan BME280_I2CS I2C Mini Modülü ile çalışmak üzere tasarlanmıştır. #

smbus'u içe aktar

ithalat zamanı

# I2C veri yolunu alın

veri yolu = smbus. SMBus(1)

# BME280 adresi, 0x76(118)

# 0x88(136), 24 bayttan gelen verileri oku b1 = bus.read_i2c_block_data(0x76, 0x88, 24)

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

# Sıcaklık katsayıları dig_T1 = b1[1] * 256 + b1[0] dig_T2 = b1[3] * 256 + b1[2] ise dig_T2 > 32767: dig_T2 -= 65536 dig_T3 = b1[5] * 256 + b1[4] dig_T3 > 32767 ise: dig_T3 -= 65536

# Basınç katsayıları

dig_P1 = b1[7] * 256 + b1[6] dig_P2 = b1[9] * 256 + b1[8] ise dig_P2 > 32767: dig_P2 -= 65536 dig_P3 = b1[11] * 256 + b1[10] dig_P3 ise > 32767: dig_P3 -= 65536 dig_P4 = b1[13] * 256 + b1[12] dig_P4 ise > 32767: dig_P4 -= 65536 dig_P5 = b1[15] * 256 + b1[14] eğer dig_P5 > 32767: dig_P5 -= 65536 dig_P6 = b1[17] * 256 + b1[16] dig_P6 > 32767 ise: dig_P6 -= 65536 dig_P7 = b1[19] * 256 + b1[18] dig_P7 > 32767 ise: dig_P7 -= 65536 dig_P8 = b1[21] * 256 + b1[20] dig_P8 > 32767 ise: dig_P8 -= 65536 dig_P9 = b1[23] * 256 + b1[22] ise dig_P9 > 32767: dig_P9 -= 65536

# BME280 adresi, 0x76(118)

# 0xA1(161)'den gelen verileri oku, 1 bayt dig_H1 = bus.read_byte_data(0x76, 0xA1)

# BME280 adresi, 0x76(118)

# 0xE1(225), 7 bayttan gelen verileri oku b1 = bus.read_i2c_block_data(0x76, 0xE1, 7)

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

# Nem katsayıları dig_H2 = b1[1] * 256 + b1[0] ise dig_H2 > 32767: dig_H2 -= 65536 dig_H3 = (b1[2] & 0xFF) dig_H4 = (b1[3] * 16) + (b1[4] & 0xF) dig_H4 > 32767 ise: dig_H4 -= 65536 dig_H5 = (b1[4] / 16) + (b1[5] * 16) dig_H5 > 32767 ise: dig_H5 -= 65536 dig_H6 = b1[6] ise dig_H6 > 127: dig_H6 -= 256

# BME280 adresi, 0x76(118)

# Kontrol nem kaydını seçin, 0xF2(242) # 0x01(01) Aşırı Nem Örnekleme = 1 bus.write_byte_data(0x76, 0xF2, 0x01) # BME280 adresi, 0x76(118) # Kontrol ölçüm kaydını seçin, 0xF4(244) # 0x27(39) Basınç ve Sıcaklık Aşırı Örnekleme oranı = 1 # Normal mod bus.write_byte_data(0x76, 0xF4, 0x27) # BME280 adresi, 0x76(118) # Konfigürasyon kaydı seç, 0xF5(245) # 0xA0(00) Bekleme süresi = 1000 ms bus.write_byte_data(0x76, 0xF5, 0xA0)

zaman.uyku(0.5)

# BME280 adresi, 0x76(118)

# 0xF7(247)'den veri okuma, 8 bayt # Basınç MSB, Basınç LSB, Basınç xLSB, Sıcaklık MSB, Sıcaklık LSB # Sıcaklık xLSB, Nem MSB, Nem LSB verisi = bus.read_i2c_block_data(0x76, 0xF7, 8)

# Basınç ve sıcaklık verilerini 19 bit'e dönüştürün

adc_p = ((veri[0] * 65536) + (veri[1] * 256) + (veri[2] & 0xF0)) / 16 adc_t = ((veri[3] * 65536) + (veri[4] * 256) + (veri[5] & 0xF0)) / 16

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

adc_h = veri[6] * 256 + veri[7]

# Sıcaklık ofset hesaplamaları

var1 = ((adc_t) / 16384.0 - (dig_T1) / 1024.0) * (dig_T2) var2 = (((adc_t) / 131072.0 - (dig_T1) / 8192.0) * ((adc_t)/131072.0 - (dig_T1)/8192.0)) * (dig_T3) t_fine = (var1 + var2) cTemp = (var1 + var2) / 5120.0 fTemp = cTemp * 1.8 + 32

# Basınç ofset hesaplamaları

var1 = (t_fine / 2.0) - 64000.0 var2 = var1 * var1 * (dig_P6) / 32768.0 var2 = var2 + var1 * (dig_P5) * 2.0 var2 = (var2 / 4.0) + ((dig_P4) * 65536.0) var1 = ((dig_P3) * var1 * var1 / 524288.0 + (dig_P2) * var1) / 524288.0 var1 = (1.0 + var1 / 32768.0) * (dig_P1) p = 1048576,0 - adc_p p = (p - (var2 / 4096.0)) * 6250.0 / var1 var1 = (dig_P9) * p * p / 2147483648.0 var2 = p * (dig_P8) / 32768.0 basınç = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100

# Nem ofset hesaplamaları

var_H = ((t_fine) - 76800.0) var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1.0 + dig_H6 / 67108864.0 * var_H * (1.0 + dig_H3 / 671088) var_H))) nem = var_H * (1.0 - dig_H1 * var_H / 524288.0) nem > 100.0 ise: nem = 100.0 elif nem < 0.0: nem = 0.0

# Ekrana veri çıkışı

print "Sıcaklık Celsius: %.2f C" %cTemp print "Sıcaklık Fahrenheit: %.2f F" %fTemp print "Basınç: %.2f hPa " %basınç print "Bağıl Nem: %.2f %%" %nem

Adım 4: Çalışan Kod

Koşu Kodu
Koşu Kodu

Şimdi kodu indirin (veya git pull) ve Raspberry Pi'de açın.

Terminalde kodu Derlemek ve Yüklemek için komutları çalıştırın ve Ekrandaki çıktıyı görün. Birkaç saniye sonra tüm parametreleri görüntüleyecektir. Her şeyin harika çalıştığından emin olduktan sonra, daha ilginç olanları geliştirebilirsiniz.

Adım 5: Pratik Dünyada Kullanım

BME280, nem ve basınç ölçümü gerektiren tüm uygulamalarda yüksek performans sağlar. Ortaya çıkan bu uygulamalar Bağlam farkındalığıdır, ör. Cilt Algılama, Oda Değişikliği Algılama, Fitness İzleme / Sağlık, Kuruluk veya Yüksek Sıcaklık Uyarısı, Hacim ve Hava Akışı Ölçümü, Ev Otomasyonu Kontrolü, Kontrol Isıtma, Havalandırma, Klima (HVAC), Nesnelerin İnterneti (IoT), GPS Geliştirme (örn. İlk Düzeltme Süresi İyileştirmesi, Ölü Hesaplama, Eğim Algılama), İç Mekan Navigasyonu (Zemin Değişimi Algılama, Asansör Algılama), Dış Mekan Navigasyonu, Boş Zaman ve Spor Uygulamaları, Hava Tahmini ve Dikey Hız Göstergesi (Yükselme/Düşme) Hız).

6. Adım: Sonuç

Umarım bu proje daha fazla deneye ilham verir. Daha sofistike bir hava istasyonu yapmak, Yağmur Göstergesi, Işık sensörü, anemometre (rüzgar hızı) vb. gibi bazı sensörleri içerebilir. Bunları ekleyebilir ve kodu değiştirebilirsiniz. Rasp Pi ile I²C sensörünün temel işleyişine sahip YouTube'da bir video eğitimimiz var. I²C iletişimlerinin sonuçlarını ve çalışmasını görmek gerçekten şaşırtıcı. Bunu da kontrol edin. İnşa ederken ve öğrenirken iyi eğlenceler! Lütfen bu talimat hakkında ne düşündüğünüzü bize bildirin. Gerekirse bazı iyileştirmeler yapmak isteriz.

Önerilen: