Mündəricat:

BME280 və Foton İnterfeysindən istifadə edərək Nəmlik, Təzyiq və Temperaturun Hesablanması .: 6 Addım
BME280 və Foton İnterfeysindən istifadə edərək Nəmlik, Təzyiq və Temperaturun Hesablanması .: 6 Addım

Video: BME280 və Foton İnterfeysindən istifadə edərək Nəmlik, Təzyiq və Temperaturun Hesablanması .: 6 Addım

Video: BME280 və Foton İnterfeysindən istifadə edərək Nəmlik, Təzyiq və Temperaturun Hesablanması .: 6 Addım
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Dekabr
Anonim
BME280 və Foton İnterfeysindən istifadə edərək Nəmlik, Təzyiq və Temperaturun Hesablanması
BME280 və Foton İnterfeysindən istifadə edərək Nəmlik, Təzyiq və Temperaturun Hesablanması

İstilik, təzyiq və rütubət monitorinqini tələb edən müxtəlif layihələrlə qarşılaşırıq. Beləliklə, bu parametrlərin əslində fərqli atmosfer şəraitində bir sistemin iş səmərəliliyinin qiymətləndirilməsində mühüm rol oynadığını başa düşürük. İstər sənaye səviyyəsində, istərsə də fərdi sistemlərdə sistemin adekvat işləməsi üçün optimal temperatur, rütubət və barometrik təzyiq səviyyəsi lazımdır.

Bu səbəbdən bu sensora dair tam bir dərs təqdim edirik, bu dərsdə BME280 rütubət, təzyiq və temperatur sensoru hissəcik fotonu ilə necə işlədiyini izah edəcəyik.

Addım 1: BME280 Kəşfiyyatı

BME280 Kəşfiyyatı
BME280 Kəşfiyyatı

Elektron sektor, temperatur, barometrik təzyiq və rütubətə malik ətraf mühit sensoru olan BME280 sensoru ilə oyunlarını gücləndirdi! Bu sensor hər cür hava/ətraf algılaması üçün əladır və hətta I2C -də də istifadə edilə bilər.

Bu dəqiq sensor BME280, rütubəti ± 3% dəqiqliklə, barometrik təzyiqi ± 1 hPa mütləq dəqiqliklə və temperaturu ± 1.0 ° C dəqiqliklə ölçmək üçün ən yaxşı algılayıcı həlldir. Təzyiq hündürlüklə dəyişdiyindən və təzyiq ölçüləri çox yaxşı olduğundan, ± 1 metr və ya daha yaxşı dəqiqliklə bir altimetr olaraq da istifadə edə bilərsiniz! təzyiq sensoru və ətraf mühitin temperaturunun qiymətləndirilməsi üçün də istifadə edilə bilər. BME280 ilə ölçmələr istifadəçi tərəfindən həyata keçirilə və ya müntəzəm olaraq həyata keçirilə bilər.

Məlumat cədvəli: BME280 sensor məlumat cədvəlinə baxmaq və ya yükləmək üçün vurun.

Addım 2: Avadanlıq Tələbləri Siyahısı

Avadanlıq tələbləri siyahısı
Avadanlıq tələbləri siyahısı

Tamamilə Dcube Mağaza Parçalarından istifadə etdik, çünki istifadəsi asandır və hər şeyi bir santimetrlik bir şəbəkəyə yaxşı uyğunlaşdıran bir şey bizi həqiqətən yola salır. İstədiyiniz hər şeyi istifadə edə bilərsiniz, ancaq bağlama diaqramı bu hissələri istifadə etdiyinizi güman edəcək.

  • BME280 Sensoru I²C Mini Modulu
  • Partikül Foton üçün I²C Qalxanı
  • Foton hissəcikləri
  • I²C Kabel
  • Güc adapteri

Addım 3: İnterfeys

Qarşılıqlı əlaqə
Qarşılıqlı əlaqə

İnterfeys bölməsi əsasən sensor və zərrəcik fotonu arasında lazım olan tel əlaqələrini izah edir. İstənilən çıxış üçün hər hansı bir sistem üzərində işləyərkən düzgün əlaqələrin təmin edilməsi əsas zərurətdir. Beləliklə, zəruri əlaqələr aşağıdakılardır:

BME280 I2C üzərində işləyəcək. Sensorun hər bir interfeysini necə bağlayacağınızı göstərən nümunə naqillər diaqramı. Qutudan kənarda, lövhə I2C interfeysi üçün konfiqurasiya olunmuşdur, buna görə də başqa cür agnostiksinizsə bu interfeysdən istifadə etməyi məsləhət görürük. Lazım olan tək şey dörd teldir! Vcc, Gnd, SCL və SDA pinləri üçün yalnız dörd əlaqə lazımdır və bunlar I2C kabelinin köməyi ilə bağlanır. Bu əlaqələr yuxarıdakı şəkillərdə göstərilmişdir.

Addım 4: Temperatur, Təzyiq və Nəmlik Nəzarət Məcəlləsi

Temperatur, Təzyiq və Nəmlik Nəzarət Məcəlləsi
Temperatur, Təzyiq və Nəmlik Nəzarət Məcəlləsi
Temperatur, Təzyiq və Nəmlik Nəzarət Məcəlləsi
Temperatur, Təzyiq və Nəmlik Nəzarət Məcəlləsi

Bunu işlətmək üçün istifadə edəcəyimiz kodun təmiz versiyası BURADA mövcuddur.

Sensor modulunu Arduino ilə birlikdə istifadə edərkən application.h və spark_wiring_i2c.h kitabxanasını daxil edirik. "application.h" və spark_wiring_i2c.h kitabxanası, sensor və hissəcik arasındakı i2c əlaqəsini asanlaşdıran funksiyaları ehtiva edir.

Cihazı izləmək üçün veb səhifəni açmaq üçün BURAYA vurun

Kodu lövhənizə yükləyin və işə başlamalıdır! Şəkildə göstərildiyi kimi bütün məlumatlar veb səhifədən əldə edilə bilər.

Kod aşağıda verilmişdir:

// Azad iradə lisenziyası ilə paylanmışdır. // 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. #include #include // BME280 I2C ünvanı 0x76 (108) #Addr 0x76 ikiqat cTemp = 0, fTemp = 0, təzyiq = 0, rütubət = 0; void setup () {// Particle.variable dəyişənini təyin edin ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Hissəcik.dəyişən ("təzyiq", təzyiq); Hissəcik.dəyişən ("rütubət", rütubət); // I2C ünsiyyətini MASTER Wire.begin () kimi başladın; // Serial ünsiyyətini başladın, baud sürətini təyin edin = 9600 Serial.begin (9600); gecikmə (300); } void loop () {işarəsiz int b1 [24]; imzasız int məlumatları [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// I2C Transmission Wire.beginTransmission (Addr) başlayın; // Wire.write məlumat qeydini seçin ((136+i)); // I2C Transmission Wire.endTransmission () dayandırın; // Wire.requestFromdan 1 bayt məlumat istəyin (Addr, 1); // 24 bayt məlumat oxuyun, əgər (Wire.available () == 1) {b1 = Wire.read (); }} // Veriləri çevirin // temp əmsalları int dig_T1 = (b1 [0] & 0xff) + ((b1 [1] & 0xff) * 256); int dig_T2 = b1 [2] + (b1 [3] * 256); int dig_T3 = b1 [4] + (b1 [5] * 256); // təzyiq əmsalları int dig_P1 = (b1 [6] & 0xff) + ((b1 [7] & 0xff) * 256); int dig_P2 = b1 [8] + (b1 [9] * 256); int dig_P3 = b1 [10] + (b1 [11] * 256); int dig_P4 = b1 [12] + (b1 [13] * 256); int dig_P5 = b1 [14] + (b1 [15] * 256); int dig_P6 = b1 [16] + (b1 [17] * 256); int dig_P7 = b1 [18] + (b1 [19] * 256); int dig_P8 = b1 [20] + (b1 [21] * 256); int dig_P9 = b1 [22] + (b1 [23] * 256); for (int i = 0; i <7; i ++) {// I2C Transmission Wire.beginTransmission (Addr) başlayın; // Wire.write məlumat qeydini seçin ((225+i)); // I2C Transmission Wire.endTransmission () dayandırın; // Wire.requestFromdan 1 bayt məlumat istəyin (Addr, 1); // 7 bayt məlumat oxuyun, əgər (Wire.available () == 1) {b1 = Wire.read (); }} // Veriləri çevirin // rütubət əmsalları int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1 [2] & 0xFF; int dig_H4 = (b1 [3] * 16) + (b1 [4] & 0xF); int dig_H5 = (b1 [4] / 16) + (b1 [5] * 16); int dig_H6 = b1 [6]; // I2C Transmission Wire.beginTransmission (Addr) başlayın; // Wire.write məlumat qeydini seçin (161); // I2C Transmission Wire.endTransmission () dayandırın; // Wire.requestFromdan 1 bayt məlumat istəyin (Addr, 1); // 1 bayt məlumat oxuyun, əgər (Wire.available () == 1) {dig_H1 = Wire.read (); } // I2C Transmission Wire.beginTransmission başlayın (Addr); // Wire.write (0xF2) nəzarət rütubət reyestrini seçin; // Nəmlik dərəcəsi üzərində rütubət = 1 Wire.write (0x01); // I2C Transmission Wire.endTransmission () dayandırın; // I2C Transmission Wire.beginTransmission (Addr) başlayın; // Wire.write (0xF4) nəzarət ölçmə reyestrini seçin; // Normal rejim, temp və nümunə götürmə sürəti üzərində təzyiq = 1 Wire.write (0x27); // I2C Transmission Wire.endTransmission () dayandırın; // I2C Transmission Wire.beginTransmission (Addr) başlayın; // Wire.write (0xF5) qeydiyyat qeydini seçin; // Gözləmə müddəti = 1000 ms Wire.write (0xA0); // I2C Transmission Wire.endTransmission () dayandırın; for (int i = 0; i <8; i ++) {// I2C Transmission Wire.beginTransmission (Addr) başlayın; // Wire.write məlumat qeydini seçin ((247+i)); // I2C Transmission Wire.endTransmission () dayandırın; // Wire.requestFromdan 1 bayt məlumat istəyin (Addr, 1); // 8 bayt məlumat oxuyun, əgər (Wire.available () == 1) {data = Wire.read (); }} // Təzyiq və temperatur məlumatlarını 19 bit uzunluğuna çevirin adc_p = (((uzun) (data [0] & 0xFF) * 65536) + ((uzun) (data [1] & 0xFF) * 256) + (uzun) (data [2] & 0xF0)) / 16; uzun adc_t = (((uzun) (data [3] & 0xFF) * 65536) + ((uzun) (data [4] & 0xFF) * 256) + (uzun) (data [5] & 0xF0)) / 16; // Nəmlik məlumatlarını uzun müddətə çevirin adc_h = ((uzun) (data [6] & 0xFF) * 256 + (uzun) (data [7] & 0xFF)); // Temperatur ofset hesablamaları ikiqat var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); cüt var2 = ((((cüt) adc_t) / 131072.0 - ((ikiqat) dig_T1) / 8192.0) * (((ikiqat) adc_t) /131072.0 - ((ikiqat) dig_T1) /8192.0)) * ((ikiqat) dig_T3); ikiqat t_fine = (uzun) (var1 + var2); ikiqat cTemp = (var1 + var2) / 5120.0; ikiqat fTemp = cTemp * 1.8 + 32; // Təzyiq ofset hesablamaları var1 = ((ikiqat) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((ikiqat) dig_P6) / 32768.0; var2 = var2 + var1 * ((ikiqat) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((ikiqat) dig_P4) * 65536.0); var1 = (((ikiqat) dig_P3) * var1 * var1 / 524288.0 + ((ikiqat) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((ikiqat) dig_P1); ikiqat p = 1048576.0 - (ikiqat) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((ikiqat) dig_P9) * p * p / 2147483648.0; var2 = p * ((ikiqat) dig_P8) / 32768.0; ikiqat təzyiq = (p + (var1 + var2 + ((ikiqat) dig_P7)) / 16.0) / 100; // Rütubət ofset hesablamaları ikiqat var_H = (((ikiqat) 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 * var_H))); ikiqat 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; } başqa halda (rütubət <0.0) {rütubət = 0.0; } // Tablet Particle.publish tablosuna məlumat çıxarın ("Selsi İstiliyi:", String (cTemp)); Particle.publish ("Fahrenheitdəki temperatur:", String (fTemp)); Particle.publish ("Təzyiq:", String (təzyiq)); Particle.publish ("Nisbi Nəmlik:", String (rütubət)); gecikmə (1000); }

Addım 5: Tətbiqlər:

Tətbiqlər
Tətbiqlər

BME280 temperatur, təzyiq və nisbi rütubət sensoru, temperaturun monitorinqi, kompüterin periferik istilik qorunması, sənayedə təzyiqin monitorinqi kimi müxtəlif sənaye tətbiqlərinə malikdir. Bu sensoru hava stansiyası tətbiqlərində və istixana izləmə sistemində də istifadə etdik.

Digər tətbiqlərə daxil ola bilər:

  1. Kontekstdən xəbərdarlıq, məsələn. dəri aşkarlanması, otaq dəyişikliyi aşkarlanması.
  2. Fitness monitorinqi / rifah - Quruluq və ya yüksək temperaturla əlaqədar xəbərdarlıq.
  3. Həcm və hava axınının ölçülməsi.
  4. Evin avtomatlaşdırılmasına nəzarət.
  5. Isıtma, havalandırma, kondisionerə nəzarət (HVAC).
  6. Əşyaların interneti.
  7. GPS-in təkmilləşdirilməsi (məsələn, ilk növbədə düzəltmə, ölü hesablama, yamacın aşkarlanması).
  8. Daxili naviqasiya (döşəmə algılamasının dəyişməsi, lift aşkarlanması).
  9. Açıq havada naviqasiya, istirahət və idman tətbiqləri.
  10. Hava proqnozu.
  11. Şaquli sürət göstəricisi (artım/batma sürəti)..

Addım 6: Video Dərsliyi

Layihəni əlaqələndirmək və tamamlamaq üçün bütün addımları keçmək üçün video təlimatımızı izləyin.

Digər sensorun işləyən və işləyən bloqlarını izləməyə davam edin.

Tövsiyə: