Mündəricat:

Pythonda BME280 ilə Raspberry Pi istifadə edən hava stansiyası: 6 addım
Pythonda BME280 ilə Raspberry Pi istifadə edən hava stansiyası: 6 addım

Video: Pythonda BME280 ilə Raspberry Pi istifadə edən hava stansiyası: 6 addım

Video: Pythonda BME280 ilə Raspberry Pi istifadə edən hava stansiyası: 6 addım
Video: ESP32 Bluetooth ilə MAX6675 Termokupldan istifadə 2024, Noyabr
Anonim
Image
Image
İmperativ Avadanlıq Qanunu
İmperativ Avadanlıq Qanunu

ç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

İmperativ Avadanlıq Qanunu
İmperativ Avadanlıq Qanunu
İmperativ Avadanlıq Qanunu
İmperativ Avadanlıq Qanunu
İmperativ Avadanlıq Qanunu
İ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ı

Dövrə üçün Avadanlıq Bağlantıları
Dövrə üçün Avadanlıq Bağlantıları
Dövrə üçün Avadanlıq Bağlantıları
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ı

Pythonda Raspberry Pi Proqramlaşdırma
Pythonda Raspberry Pi Proqramlaşdırma

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

Çalışan Kod
Ç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ə: