İçindekiler:
- Adım 1: Zorunlu Ekipman Faturası
- Adım 2: Devre için Donanım Bağlantıları
- Adım 3: Python'da Raspberry Pi Programlama
- Adım 4: Çalışan Kod
- Adım 5: Pratik Dünyada Kullanım
- 6. Adım: Sonuç
Video: Raspberry Pi'yi Python'da BME280 ile Kullanan Hava Durumu İstasyonu: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
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ı
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ı
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
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
Ş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:
ESP8266'yı Kullanan Basit Hava Durumu İstasyonu: 6 Adım (Resimlerle)
ESP8266 Kullanan Basit Hava Durumu İstasyonu: Bu Eğitilebilir Tabloda Sıcaklık, Basınç, İklim vb. Verileri ve Aboneler ve YouTube verileri gibi verileri almak için ESP8266'nın nasıl kullanılacağını paylaşacağım. Toplam görüntüleme sayısı. ve verileri Seri monitörde görüntüleyin ve LCD'de görüntüleyin. Veriler f olacak
Java'da BME280 ile Raspberry Pi Kullanan Kişisel Hava Durumu İstasyonu: 6 Adım
Java'da BME280 ile Raspberry Pi Kullanan Kişisel Hava Durumu İstasyonu: Kötü hava her zaman bir pencereden daha kötü görünür. Her zaman yerel hava durumunu ve pencereden ne gördüğümüzü izlemekle ilgilendik. Ayrıca ısıtma ve klima sistemimiz üzerinde daha iyi kontrol sağlamak istedik. Kişisel Hava Durumu İstasyonu inşa etmek harika bir
Hava Durumu İstasyonu: ESP8266, Derin Uyku, SQL, Flask&Plotly ile Grafik Oluşturma: 3 Adım
Hava Durumu İstasyonu: ESP8266 Derin Uyku, SQL, Flask&Plotly ile Grafik Oluşturma: Balkonunuzdaki sıcaklık, nem veya ışık yoğunluğunu bilmek eğlenceli olur mu? Yapacağımı biliyorum. Bu tür verileri toplamak için basit bir hava durumu istasyonu yaptım. Aşağıdaki bölümler, bir tane oluşturmak için attığım adımlardır. Haydi başlayalım
Wemos D1 Mini, BME280 ve Sensate Kullanan Hava Durumu İstasyonu: 6 Adım
Wemos D1 Mini, BME280 ve Sensate. Kullanan Hava Durumu İstasyonu: Önceki gönderilerde bir hava durumu istasyonu oluşturmak için farklı yöntemler paylaşmıştım. Kontrol etmediyseniz, burada bir bağlantı var. Bu talimatta, Wemos ve Sensate adlı bir IoT platformunu kullanarak basit bir Hava Durumu istasyonunun nasıl oluşturulacağını göstereceğim.
Büyük ST7920 Ekran Kullanan Hava Durumu İstasyonu: 4 Adım
Büyük ST7920 Ekranı Kullanan Hava Durumu İstasyonu: Sevgili arkadaşlar, başka bir Eğitilebilir Tabloya hoş geldiniz! Bu derste, bu büyük LCD ekrana ilk kez bakacağız ve onunla bir sıcaklık ve nem monitörü oluşturacağız. Her zaman ekrana benzer bir ekran bulmak istemişimdir