Mundarija:

BME280 va foton interfeysi yordamida namlik, bosim va haroratni hisoblash: 6 qadam
BME280 va foton interfeysi yordamida namlik, bosim va haroratni hisoblash: 6 qadam

Video: BME280 va foton interfeysi yordamida namlik, bosim va haroratni hisoblash: 6 qadam

Video: BME280 va foton interfeysi yordamida namlik, bosim va haroratni hisoblash: 6 qadam
Video: BME280 документация 2024, Iyul
Anonim
BME280 va foton interfeysi yordamida namlik, bosim va haroratni hisoblash
BME280 va foton interfeysi yordamida namlik, bosim va haroratni hisoblash

Biz harorat, bosim va namlikni nazorat qilishni talab qiladigan turli xil loyihalarni uchratamiz. Biz shuni tushunamizki, bu parametrlar har xil atmosfera sharoitida tizimning ish samaradorligini baholashda muhim rol o'ynaydi. Ishlab chiqarish darajasida ham, shaxsiy tizimda ham haroratning, namlikning va barometrik bosimning optimal darajasi tizimning to'g'ri ishlashi uchun zarurdir.

Shuning uchun biz ushbu sensor haqida to'liq ko'rsatma beramiz, bu darsda biz BME280 namlik, bosim va harorat sensori zarrachali foton bilan ishlashini tushuntiramiz.

1 -qadam: BME280 razvedkasi

BME280 qidiruvi
BME280 qidiruvi

Elektron sektor BME280 sensori, harorat, barometrik bosim va namlik bilan atrof -muhit sensori bilan o'z o'yinlarini kuchaytirdi! Ushbu sensor har xil ob -havo/atrof -muhitni aniqlash uchun juda mos keladi va hatto I2C da ishlatilishi mumkin.

Bu aniqlik sensori BME280 namlikni ± 3% aniqlik bilan, barometrik bosim ± 1 gPa mutlaq aniqlikda va haroratni ± 1,0 ° C aniqlikda o'lchash uchun eng yaxshi sezuvchi echimdir. Bosim balandlik bilan o'zgargani uchun va bosim o'lchovlari juda yaxshi bo'lgani uchun siz uni ± 1 metr yoki undan yuqori aniqlikdagi balandlik o'lchagich sifatida ishlatishingiz mumkin! bosim sensori va atrof -muhit haroratini baholash uchun ham ishlatilishi mumkin. BME280 yordamida o'lchovlar foydalanuvchi tomonidan bajarilishi yoki ma'lum vaqt oralig'ida bajarilishi mumkin.

Ma'lumotlar jadvali: BME280 sensori ma'lumotlarini ko'rish yoki yuklab olish uchun bosing.

2 -qadam: Uskuna talablari ro'yxati

Uskuna talablari ro'yxati
Uskuna talablari ro'yxati

Biz Dcube do'koni qismlarini to'liq ishlatdik, chunki ulardan foydalanish oson, va har bir narsa santimetrli panjara bilan yaxshi birlashtirilgan bo'lsa, bizni haqiqatan ham harakatga keltiradi. Siz xohlagan narsani ishlatishingiz mumkin, lekin ulanish sxemasi siz ushbu qismlardan foydalanayotganingizni taxmin qiladi.

  • BME280 sensori I²C mini moduli
  • Zarrachali foton uchun I²C qalqoni
  • Foton zarrachalari
  • I²C kabeli
  • Quvvat adapteri

3 -qadam: Interfeys

Interfeys
Interfeys

Interfeys bo'limi asosan sensor va zarracha fotoni o'rtasida zarur bo'lgan simi ulanishlarini tushuntiradi. To'g'ri ulanishni ta'minlash har qanday tizimda kerakli chiqish uchun ishlashning asosiy zarurati hisoblanadi. Shunday qilib, kerakli ulanishlar quyidagilar:

BME280 I2C ustida ishlaydi. Sensorning har bir interfeysini qanday ulash kerakligini ko'rsatadigan simlar sxemasi. Qutidan tashqari, taxta I2C interfeysi uchun tuzilgan, shuning uchun agar siz agnostik bo'lsangiz, ushbu interfeysdan foydalanishni tavsiya etamiz. Sizga faqat to'rtta sim kerak! Vcc, Gnd, SCL va SDA pinlari uchun faqat to'rtta ulanish kerak va ular I2C kabeli yordamida ulangan. Bu ulanishlar yuqoridagi rasmlarda ko'rsatilgan.

4 -qadam: harorat, bosim va namlik monitoringi kodi

Harorat, bosim va namlikni nazorat qilish kodeksi
Harorat, bosim va namlikni nazorat qilish kodeksi
Harorat, bosim va namlikni nazorat qilish kodeksi
Harorat, bosim va namlikni nazorat qilish kodeksi

Biz ishga tushirish uchun ishlatadigan kodning toza versiyasi BU YERDA.

Sensor modulini Arduino bilan ishlatganda, biz application.h va spark_wiring_i2c.h kutubxonasini o'z ichiga olamiz. "application.h" va spark_wiring_i2c.h kutubxonasi sensor va zarracha o'rtasidagi i2c aloqasini osonlashtiradigan funktsiyalarni o'z ichiga oladi.

Qurilmani kuzatish uchun veb -sahifani ochish uchun BU YERGA bosing

Kodni taxtaga yuklang va u ishlay boshlaydi! Barcha ma'lumotlarni rasmda ko'rsatilgandek veb -sahifada olish mumkin.

Kod quyida keltirilgan:

// Ixtiyoriy litsenziya bilan tarqatilgan. // BME280 // Bu kod ControlEverything.com saytida mavjud bo'lgan BME280_I2CS I2C Mini moduli bilan ishlash uchun mo'ljallangan. #include #include // BME280 I2C manzili - 0x76 (108) #aniqlang Addr 0x76 ikkita cTemp = 0, fTemp = 0, bosim = 0, namlik = 0; void setup () {// Particle.variable o'zgaruvchisini o'rnating ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Zarracha.variable ("bosim", bosim); Zarracha.variable ("namlik", namlik); // I2C aloqasini MASTER Wire.begin () sifatida boshlang; // Serial aloqani boshlang, baud tezligini = 9600 Serial.begin (9600) o'rnating; kechikish (300); } void loop () {unsigned int b1 [24]; imzosiz int ma'lumotlari [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// I2C Transmission Wire.beginTransmission (Addr) ni ishga tushirish; // Wire.write ma'lumotlar registrini tanlang ((136+i)); // I2C Transmission Wire.endTransmission () ni to'xtating; // Wire.requestFromdan 1 bayt ma'lumot so'rash (Addr, 1); // 24 bayt ma'lumotni o'qing, agar (Wire.available () == 1) {b1 = Wire.read (); }} // Ma'lumotlarni aylantirish // temp koeffitsientlari 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); // bosim koeffitsientlari 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) ni ishga tushirish; // Wire.write ma'lumotlar registrini tanlang ((225+i)); // I2C Transmission Wire.endTransmission () ni to'xtating; // Wire.requestFromdan 1 bayt ma'lumot so'rash (Addr, 1); // 7 bayt ma'lumotni o'qing, agar (Wire.available () == 1) {b1 = Wire.read (); }} // Ma'lumotlarni aylantirish // namlik koeffitsientlari 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 -ni ishga tushiring (Addr); // Wire.write ma'lumotlar registrini tanlang (161); // I2C Transmission Wire.endTransmission () ni to'xtating; // Wire.requestFromdan 1 bayt ma'lumot so'rash (Addr, 1); // 1 bayt ma'lumotni o'qing, agar (Wire.available () == 1) {dig_H1 = Wire.read (); } // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // nazorat namlik registrini tanlang Wire.write (0xF2); // Namuna olish tezligidan yuqori namlik = 1 Wire.write (0x01); // I2C Transmission Wire.endTransmission () ni to'xtating; // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // Wire.write nazorat o'lchash registrini tanlang (0xF4); // Oddiy rejim, namuna olish tezligidagi harorat va bosim = 1 Wire.write (0x27); // I2C Transmission Wire.endTransmission () ni to'xtating; // I2C Transmission Wire.beginTransmission -ni ishga tushiring (Addr); // Wire.write (0xF5) konfiguratsiya registrini tanlang; // Kutish vaqti = 1000ms Wire.write (0xA0); // I2C Transmission Wire.endTransmission () ni to'xtating; for (int i = 0; i <8; i ++) {// I2C Transmission Wire.beginTransmission (Addr) ni ishga tushirish; // Wire.write ma'lumotlar registrini tanlang ((247+i)); // I2C Transmission Wire.endTransmission () ni to'xtating; // Wire.requestFromdan 1 bayt ma'lumot so'rash (Addr, 1); // 8 bayt ma'lumotni o'qing, agar (Wire.available () == 1) {data = Wire.read (); }} // Bosim va harorat ma'lumotlarini 19 bitli uzunlikka aylantirish uzoq) (ma'lumotlar [2] & 0xF0)) / 16; uzoq adc_t = (((uzun) (ma'lumotlar [3] va 0xFF) * 65536) + ((uzun) (ma'lumotlar [4] va 0xFF) * 256) + (uzun) (ma'lumotlar [5] va 0xF0)) / 16; // Namlik ma'lumotlarini uzoqqa aylantiring adc_h = ((uzun) (ma'lumotlar [6] & 0xFF) * 256 + (uzun) (ma'lumotlar [7] & 0xFF)); // Haroratning ofset hisoblari er -xotin var1 = (((ikki barobar) adc_t) / 16384.0 - ((ikki baravar) dig_T1) / 1024.0) * ((ikki baravar) dig_T2); er -xotin var2 = ((((ikki barobar) adc_t) / 131072.0 - ((er -xotin) dig_T1) / 8192.0) * (); er -xotin t_fine = (uzun) (var1 + var2); er -xotin cTemp = (var1 + var2) / 5120.0; er -xotin fTemp = cTemp * 1.8 + 32; // Bosimning ofset hisoblari var1 = ((dubl) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((ikkita) dig_P6) / 32768.0; var2 = var2 + var1 * ((ikkita) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((er -xotin) dig_P4) * 65536.0); var1 = (((er -xotin) dig_P3) * var1 * var1 / 524288.0 + ((ikki baravar) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((er -xotin) dig_P1); er -xotin p = 1048576.0 - (er -xotin) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((er -xotin) dig_P9) * p * p / 2147483648.0; var2 = p * ((er -xotin) dig_P8) / 32768.0; er -xotin bosim = (p + (var1 + var2 + ((er -xotin) dig_P7))) / 16.0) / 100; // Namlik ofset hisoblari er -xotin var_H = (((er -xotin) 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))); ikki marta namlik = var_H * (1.0 - dig_H1 * var_H / 524288.0); if (namlik> 100,0) {namlik = 100,0; } if if (namlik <0.0) {namlik = 0.0; } // Ma'lumotlar paneliga chiqish Particle.publish ("Tselsiy bo'yicha harorat:", String (cTemp)); Particle.publish ("Farengeytdagi harorat:", String (fTemp)); Particle.publish ("Bosim:", String (bosim)); Particle.publish ("Nisbiy namlik:", Ip (namlik)); kechikish (1000); }

5 -qadam: Ilovalar:

Ilovalar
Ilovalar

BME280 harorat, bosim va nisbiy namlik sensori haroratni kuzatish, kompyuterning periferik termal muhofazasi, sanoatdagi bosimni kuzatish kabi turli xil sanoat dasturlariga ega. Shuningdek, biz ushbu sensorni ob -havo stantsiyalarida, shuningdek issiqxonalarda monitoring tizimida ishlatdik.

Boshqa ilovalarga quyidagilar kirishi mumkin:

  1. Kontekstni bilish, masalan. terini aniqlash, xona o'zgarishini aniqlash.
  2. Fitnes monitoringi / farovonlik - quruqlik yoki yuqori harorat haqida ogohlantirish.
  3. Havo hajmini va oqimini o'lchash.
  4. Uyni avtomatlashtirishni boshqarish.
  5. Isitish, shamollatish, konditsionerni (HVAC) boshqaring.
  6. Internet narsalar.
  7. GPS-ni takomillashtirish (masalan, tuzatish vaqtini yaxshilash, o'liklarni hisoblash, qiyaliklarni aniqlash).
  8. Ichki navigatsiya (polni aniqlashni o'zgartirish, liftni aniqlash).
  9. Tashqi navigatsiya, dam olish va sport dasturlari.
  10. Ob-havo ma'lumoti.
  11. Vertikal tezlik ko'rsatkichi (ko'tarilish/cho'kish tezligi)..

6 -qadam: video darslik

Loyihani o'zaro bog'lash va yakunlashning barcha bosqichlaridan o'tish uchun bizning video darsligimizni tomosha qiling.

Boshqa sensorlarning interfeysi va ishlaydigan bloglarini kuzatib boring.

Tavsiya: