Mündəricat:
- Addım 1: İmperativ Avadanlıq Qanunu
- Addım 2: Dövrə üçün Avadanlıq Bağlantıları
- Addım 3: Pythonda Raspberry Pi Proqramlaşdırması
- Addım 4: Çalışan Kod
- Addım 5: Praktik Dünyada İstifadə
- Addım 6: Nəticə
Video: Pythonda BME280 ilə Raspberry Pi istifadə edən hava stansiyası: 6 addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
çox yaxşı bir məqsəddir (Hava yaxşı bir hekayəçidir)
Qlobal istiləşmə və iqlim dəyişikliyi problemləri ilə birlikdə, qlobal hava şəraiti dünyanın hər yerində qeyri-sabit hala gəlir və hava ilə əlaqəli bir çox təbii fəlakətə (quraqlıq, həddindən artıq temperatur, sel, fırtına və meşə yanğınları) səbəb olur. evdə pislik. Bir çox ucuz hissə və sensor istifadə edərək bir hava stansiyası layihəsindən əsas elektronika haqqında çox şey öyrənirsiniz. Qurmaq olduqca asandır və heç bir zaman əldə edə bilməzsiniz.
Addım 1: İmperativ Avadanlıq Qanunu
1. Moruq Pi
Əllərinizi Raspberry Pi lövhəsinə qoyun. Raspberry Pi, Linux ilə işləyən tək lövhəli kompüterdir. Raspberry Pi, öyrənənlərin proqramlaşdırma və proqram inkişaf etdirmə əsaslarını öyrənmələri üçün əlçatan və işlək bir kompüterdən qurulmuş həqiqətən ucuz, kiçik və çox yönlüdür.
2. Raspberry Pi üçün I2C Shield
INPI2 (I2C adapteri) birdən çox I2C cihazı ilə istifadə üçün Raspberry Pi 2/3 və I²C portunu təmin edir. DCUBE Mağazasında mövcuddur.
3. Rəqəmsal Nəmlik, Təzyiq və Temperatur Sensoru, BME280
BME280, yüksək reaksiya müddətinə və yüksək dəqiqliyə malik olan nəmlik, təzyiq və temperatur sensoru. Bu sensoru DCUBE Mağazasından aldıq.
4. I2C Bağlayıcı Kabel
Burada DCUBE Mağazasında mövcud olan I²C kabelindən istifadə etdik.
5. Mikro USB kabeli
Mikro USB kabel Güc təchizatı, Raspberry Pi -ni gücləndirmək üçün ideal seçimdir.
6. EthernetCable/WiFi Adapter vasitəsilə İnternetə girişi şərh edin
İnternetə çıxış yerli şəbəkəyə və internetə qoşulmuş bir Ethernet kabeli vasitəsilə təmin edilə bilər. Alternativ olaraq, konfiqurasiya tələb edəcək USB simsiz açar istifadə edərək simsiz şəbəkəyə qoşula bilərsiniz.
7. HDMI Kabeli (Ekran və keçid kabeli)
Hər hansı bir HDMI/DVI monitor və hər hansı bir TV Pi üçün bir ekran kimi işləməlidir. Alternativ olaraq, SSH vasitəsi ilə bir monitora olan ehtiyacı rədd edərək Pi -yə uzaqdan daxil ola bilərsiniz (yalnız qabaqcıl istifadəçilər üçün).
Addım 2: Dövrə üçün Avadanlıq Bağlantıları
Göstərilən sxemə görə dövrə qurun. Ümumiyyətlə əlaqələr çox sadədir. Sakit olun və yuxarıdakı təlimatlara və şəkillərə əməl edin və heç bir probleminiz olmayacaq. Öyrənərkən, hardware və proqram bilikləri ilə bağlı elektronikanın əsaslarını dərindən öyrəndik. Bu layihə üçün sadə bir elektronika sxemini tərtib etmək istədik. Elektron sxemlər planlara bənzəyir. Bir plan tərtib edin və dizaynı diqqətlə izləyin. Elektronikanın bir neçə əsas anlayışı burada faydalı ola bilər!
Raspberry Pi və I2C Shield bağlantısı
Əvvəlcə Raspberry Pi götürün və üzərinə I²C Shield qoyun. Qalxanı yumşaq bir şəkildə basın və bu addımı pasta qədər asan edirik (şəkilə baxın).
Sensor və Raspberry Pi -nin əlaqəsi
Sensoru götürün və I²C kabelini onunla bağlayın. I²C Çıxışının DAİMA I²C Girişinə qoşulduğundan əmin olun. Üstündə GPIO pinləri olan I²C qalxanı olan Raspberry Pi üçün də eyni qaydalara riayət etmək lazımdır. Ən kiçik sürüşmənin səbəb olduğu pinouts, lehimləmə və halsızlıq ehtiyacını rədd etdiyi üçün I²C kabellərinin istifadəsini tövsiyə edirik.. Bu sadə qoşma və istifadə kabeli ilə lövhələri asanlıqla quraşdıra, dəyişdirə və ya daha çox lövhə əlavə edə bilərsiniz.
Qeyd: Qəhvəyi tel həmişə bir cihazın çıxışı ilə digər cihazın girişi arasındakı Ground (GND) bağlantısını izləməlidir
İnternet bağlantısı əsasdır
Burada iki seçiminiz var. Ya Ethernet kabelindən istifadə edərək Raspberry Pi -ni şəbəkəyə qoşa bilərsiniz və ya WIFI Bağlantısı üçün USB -dən WiFi -yə Adapterdən istifadə edə bilərsiniz. Hər halda, İnternetə bağlı olduğunuz müddətdə əhatə olunursunuz.
Dövrəni gücləndirmək
Micro USB kabelini Raspberry Pi -nin elektrik prizinə qoşun. Zərbə və voila! Heyətimiz məlumatdır.
Ekrana keçid
HDMI kabelini ya monitora, ya da televizora bağlaya bilərik. Əlavə olaraq, Raspberry Pi -yə uzaqdan giriş istifadə edərək monitöre bağlamadan daxil ola bilərik. SSH təhlükəsiz uzaqdan giriş üçün lazımlı bir vasitədir. Bunun üçün PUTTY proqramından da istifadə edə bilərsiniz. Bu seçim qabaqcıl istifadəçilər üçündür, buna görə burada ətraflı məlumat verməyəcəyik.
Çox xərcləmək istəmirsinizsə, iqtisadi bir üsuldur
Addım 3: Pythonda Raspberry Pi Proqramlaşdırması
Raspberry Pi və BME280 Sensoru üçün Python Kodu. Github depomuzda mövcuddur.
Kodu işə salmadan əvvəl, Readme faylında verilən təlimatları oxuduğunuzdan və Raspberry Pi -ni ona uyğun olaraq qurduğunuzdan əmin olun. Bir az vaxt sizi qurmağa hazırlaşdıracaq. Hava stansiyası, hava proqnozları üçün məlumat vermək və hava və iqlimi öyrənmək üçün atmosfer şəraitini ölçmək üçün alətlər və avadanlıqlarla ya quruda, həm də dənizdə olan bir qurğudur.
Kod aydın şəkildə qarşınızdadır və xəyal edə biləcəyiniz ən sadə formadadır və heç bir problem yaşamamalısınız. Hələ də olub olmadığını soruşun (Min şeyi bilsən də, yenə də biləndən soruş).
Bu sensor üçün işləyən Python kodunu buradan da kopyalaya bilərsiniz.
# Sərbəst iradə lisenziyası ilə paylanmışdır.# İstənilən şəkildə, mənfəət və ya pulsuz olaraq, əlaqəli işlərin lisenziyalarına uyğun olması şərtilə istifadə edin. # BME280 # Bu kod, ControlEverything.com saytında mövcud olan BME280_I2CS I2C Mini Modulu ilə işləmək üçün hazırlanmışdır. #
smbus idxal edin
idxal vaxtı
# I2C avtobusu alın
avtobus = smbus. SMBus (1)
# BME280 ünvanı, 0x76 (118)
# 0x88 (136), 24 bayt b1 = bus.read_i2c_block_data (0x76, 0x88, 24) məlumatları geri oxuyun
# Məlumatları çevirin
# İstilik əmsalları dig_T1 = b1 [1] * 256 + b1 [0] dig_T2 = b1 [3] * 256 + b1 [2] dig_T2> 32767 olduqda: dig_T2 -= 65536 dig_T3 = b1 [5] * 256 + b1 [4] dig_T3> 32767 olarsa: dig_T3 -= 65536
# Təzyiq əmsalları
dig_P1 = b1 [7] * 256 + b1 [6] dig_P2 = b1 [9] * 256 + b1 [8] dig_P2> 32767: dig_P2 -= 65536 dig_P3 = b1 [11] * 256 + b1 [10] dig_P3 > 32767: dig_P3 -= 65536 dig_P4 = b1 [13] * 256 + b1 [12] əgər dig_P4> 32767: dig_P4 -= 65536 dig_P5 = b1 [15] * 256 + b1 [14] dig_P5> 32767 olarsa: dig_P5 -= 65536 dig_P6 = b1 [17] * 256 + b1 [16] dig_P6> 32767 olarsa: dig_P6 -= 65536 dig_P7 = b1 [19] * 256 + b1 [18] dig_P7> 32767 olarsa: dig_P7 -= 65536 dig_P8 = b1 [21] * 256 + b1 [20] dig_P8> 32767 olarsa: dig_P8 -= 65536 dig_P9 = b1 [23] * 256 + b1 [22] dig_P9> 32767 olarsa: dig_P9 -= 65536
# BME280 ünvanı, 0x76 (118)
# 0xA1 (161), 1 byte dig_H1 = bus.read_byte_data (0x76, 0xA1) məlumatlarını geri oxuyun
# BME280 ünvanı, 0x76 (118)
# 0xE1 (225), 7 bayt b1 = bus.read_i2c_block_data (0x76, 0xE1, 7) məlumatlarını geri oxuyun.
# Məlumatları çevirin
# Nəmlik əmsalları dig_H2 = b1 [1] * 256 + b1 [0] dig_H2> 32767 olduqda: dig_H2 -= 65536 dig_H3 = (b1 [2] & 0xFF) dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF) dig_H4> 32767 əgər: dig_H4 -= 65536 dig_H5 = (b1 [4] / 16) + (b1 [5] * 16) dig_H5> 32767 olarsa: dig_H5 -= 65536 dig_H6 = b1 [6] dig_H6> 127: dig_H6 -= 256
# BME280 ünvanı, 0x76 (118)
# Nəzarət rütubət reyestrini seçin, 0xF2 (242) # 0x01 (01) Rütubət Oversampling = 1 bus.write_byte_data (0x76, 0xF2, 0x01) # BME280 ünvanı, 0x76 (118) # Nəzarət Ölçmə qeydini seçin, 0xF4 (244) # 0x27 (39) Təzyiq və İstilik Oversampling dərəcəsi = 1 # Normal rejim bus.write_byte_data (0x76, 0xF4, 0x27) # BME280 ünvanı, 0x76 (118) # Konfiqurasiya qeydini seçin, 0xF5 (245) # 0xA0 (00) Gözləmə müddəti = 1000 ms avtobus.write_byte_data (0x76, 0xF5, 0xA0)
vaxt.yuxu (0.5)
# BME280 ünvanı, 0x76 (118)
# 0xF7 (247), 8 baytdan məlumatları geri oxuyun # Basınçlı MSB, Təzyiq LSB, Təzyiq xLSB, Temperatur MSB, Temperatur LSB # Temperatur xLSB, Nəmlik MSB, Nəmlik LSB məlumatları = bus.read_i2c_block_data (0x76, 0xF7, 8)
# Təzyiq və temperatur məlumatlarını 19 bitə çevirin
adc_p = ((məlumat [0] * 65536) + (məlumat [1] * 256) + (məlumat [2] & 0xF0)) / 16 adc_t = ((məlumat [3] * 65536) + (məlumat [4] * 256) + (data [5] & 0xF0)) / 16
# Rütubət məlumatlarını çevirin
adc_h = məlumat [6] * 256 + məlumat [7]
# İstilik ofset hesablamaları
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
# Təzyiq ofset hesablamaları
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 təzyiq = (p + (var1 + var2 + (dig_P7)) / 16.0) / 100
# Rütubət ofset hesablamaları
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 / 67108864.0 *))) rütubət = var_H * (1.0 - dig_H1 * var_H / 524288.0) əgər rütubət> 100.0: rütubət = 100.0 elif rütubəti <0.0: rütubət = 0.0
# Ekrana məlumat çıxarın
çap "Celsiusda Temperatur: %.2f C" %cTemp print "Fahrenheit -də Temperatur: %.2f F" %fTemp print "Təzyiq: %.2f hPa" %təzyiq çapı "Nisbi Nəmlik: %.2f %%" %rütubət
Addım 4: Çalışan Kod
İndi kodu yükləyin (və ya git pull) və Raspberry Pi -də açın.
Kodu tərtib etmək və terminala yükləmək üçün əmrləri işlədin və ekranda çıxışı görün. Bir neçə saniyə sonra bütün parametrləri göstərəcək. Hər şeyin yaxşı işlədiyinə əmin olduqdan sonra daha maraqlılarını inkişaf etdirə bilərsiniz.
Addım 5: Praktik Dünyada İstifadə
BME280 rütubət və təzyiq ölçümü tələb edən bütün tətbiqlərdə yüksək performans əldə edir. Bu ortaya çıxan tətbiqlər Kontekst məlumatlandırmasıdır, məsələn. Dəri Algılama, Otaq Dəyişikliyi Algılama, Fitness Monitorinqi / Rifah, Quruluq və ya Yüksək İstiliklə əlaqədar Xəbərdarlıq, Həcm və Hava Axınının Ölçülməsi, Ev Otomasyonuna Nəzarət, Nəzarət Isıtması, Havalandırma, Kondisioner (HVAC), Əşyaların İnterneti (IoT), GPS Təkmilləşdirilməsi (məsələn, İlk Yeniləmə Vaxtında Təkmilləşdirmə, Ölü Hesablama, Yamac Algılama), Daxili Naviqasiya (Döşəmə Algılamasının Dəyişməsi, Asansörün Algılanması), Açıq Naviqasiya, İstirahət və İdman Tətbiqləri, Hava Proqnozu və Şaquli Sürət Göstəricisi (Yüksəliş/Sink) Sürət).
Addım 6: Nəticə
Ümid edirik ki, bu layihə daha çox sınaqlara ilham verəcək. Daha mürəkkəb bir hava stansiyası qurmaq, Yağış Ölçer, İşıq sensoru, anemometr (külək sürəti) və s. Kimi daha çox sensoru əhatə edə bilər. Onları əlavə edib kodu dəyişdirə bilərsiniz. YouTube'da, Rasp Pi ilə I²C sensorunun əsas işinə sahib olan bir video dərsimiz var. I²C ünsiyyətinin nəticələrini və işini görmək həqiqətən heyrətamizdir. Baxın və öyrənin! Zəhmət olmasa bu öyrədici haqqında nə düşündüyünüzü bizə bildirin. Lazım gələrsə bəzi təkmilləşdirmələr etmək istərdik.
Tövsiyə:
ESP8266 və ESP32 DIY istifadə edən peşəkar hava stansiyası: 9 addım (şəkillərlə)
ESP8266 və ESP32 DIY istifadə edən Peşəkar Hava İstasyonu: LineaMeteoStazione, Sensirion -dan olan peşəkar sensorlar və bəzi Davis Aləti komponenti (Yağış Göstəricisi, Anemometr) ilə əlaqələndirilə bilən tam bir hava stansiyasıdır
ESP8266 istifadə edən sadə hava stansiyası .: 6 addım (şəkillərlə)
ESP8266 İstifadə edən Sadə Hava İstasyonu: Bu Təlimat kitabında İstilik, Təzyiq, İqlim və s. Və Abunəçilər kimi YouTube məlumatlarını əldə etmək üçün ESP8266 -dan necə istifadə edəcəyimi paylaşacağam. Ümumi baxış sayı. və məlumatları Serial monitorda göstərin və LCD -də göstərin. Məlumatlar f
Java -da BME280 ilə Raspberry Pi istifadə edən Şəxsi Hava İstasyonu: 6 addım
Java -da BME280 ilə Raspberry Pi istifadə edən Şəxsi Hava İstasyonu: Pis hava həmişə bir pəncərədən pis görünür. Həmişə yerli hava şəraitimizi və pəncərədə gördüklərimizi izləməklə maraqlanmışıq. İstilik və kondisioner sistemimizə daha yaxşı nəzarət etmək istəyirdik. Fərdi Hava İstasyonu qurmaq çox vacibdir
Arduino və BME280 istifadə edərək otaq hava stansiyası: 4 addım
Arduino və BME280 istifadə edən otaq hava stansiyası: Əvvəllər yerli ərazinin temperaturu və rütubətini göstərən sadə bir hava stansiyası paylaşmışdım. Problem, yeniləmənin vaxt alması və məlumatların dəqiq olmaması idi. Bu təlimatda qapalı hava monitoru hazırlayacağıq
Tək lövhədən istifadə edən hava stansiyası - SLabs -32: 5 addım
Tək Lövhədən İstifadə Hava İstasyonu-SLabs-32: Bu təlimatda, məlumatları əldə etmək üçün bu məlumatları Cayenne buluduna göndərən SLabs-32 lövhəmizlə temperaturu, havanın rütubətini və torpağın nəmini ölçən bir hava stansiyası hazırlayacağıq. Biz də eyni anda cəriməni alırıq