فهرست مطالب:

رطوبت ، فشار و دما با استفاده از BME280 و رابط فوتون .: 6 مرحله
رطوبت ، فشار و دما با استفاده از BME280 و رابط فوتون .: 6 مرحله

تصویری: رطوبت ، فشار و دما با استفاده از BME280 و رابط فوتون .: 6 مرحله

تصویری: رطوبت ، فشار و دما با استفاده از BME280 و رابط فوتون .: 6 مرحله
تصویری: Lesson 37: Using BME280 Humidity, Barometric Pressure and Temperature Sensor 2024, جولای
Anonim
رطوبت ، فشار و دما با استفاده از BME280 و رابط فوتون
رطوبت ، فشار و دما با استفاده از BME280 و رابط فوتون

ما با پروژه های مختلفی روبرو می شویم که نیاز به نظارت بر دما ، فشار و رطوبت دارد. بنابراین ما متوجه می شویم که این پارامترها در واقع نقش مهمی در برآورد کارایی سیستم در شرایط مختلف جوی ایفا می کنند. هم در سطح صنعتی و هم در سیستم های شخصی ، درجه حرارت ، رطوبت و فشار فشار مطلوب برای عملکرد مناسب سیستم ضروری است.

به همین دلیل است که ما یک آموزش کامل در مورد این سنسور ارائه می دهیم ، در این آموزش ما قصد داریم کارکرد سنسور رطوبت ، فشار و دما BME280 با فوتون ذره را توضیح دهیم.

مرحله 1: اکتشاف BME280

اکتشاف BME280
اکتشاف BME280

بخش الکترونیکی بازی خود را با سنسور BME280 ، یک سنسور محیطی با دما ، فشار فشار و رطوبت افزایش داده است! این سنسور برای انواع آب و هوا/محیط زیست بسیار عالی است و حتی می تواند در I2C استفاده شود.

این سنسور دقیق BME280 بهترین راه حل برای اندازه گیری رطوبت با دقت٪ 3، ، فشار بارومتریک با دقت h 1 hPa مطلق و دما با دقت ± 1.0 C است. از آنجا که فشار با ارتفاع تغییر می کند و اندازه گیری فشار بسیار خوب است ، می توانید از آن به عنوان ارتفاع سنج با 1 متر یا دقت بهتر استفاده کنید! سنسور دما برای کمترین صدا و بالاترین وضوح بهینه شده است و برای جبران دما از سنسور فشار و همچنین می تواند برای تخمین دمای محیط استفاده شود. اندازه گیری با BME280 می تواند توسط کاربر انجام شود یا در فواصل منظم انجام شود.

برگه اطلاعات: برای پیش نمایش یا بارگیری برگه اطلاعات سنسور BME280 کلیک کنید.

مرحله 2: لیست سخت افزار مورد نیاز

لیست سخت افزار مورد نیاز
لیست سخت افزار مورد نیاز

ما به طور کامل از قطعات فروشگاه Dcube استفاده کردیم زیرا استفاده از آنها آسان است ، و چیزی که همه چیز به خوبی روی یک شبکه سانتی متری قرار می گیرد واقعاً ما را به حرکت در می آورد. می توانید از هر چیزی که می خواهید استفاده کنید ، اما نمودار سیم کشی فرض می کند که از این قطعات استفاده می کنید.

  • مینی ماژول BME280 Sensor I²C Mini
  • I²C Shield برای ذرات فوتون
  • ذرات فوتون
  • کابل I²C
  • آداپتور برق

مرحله 3: رابط دهی

رابط
رابط

قسمت رابط اساساً اتصالات سیم کشی مورد نیاز بین سنسور و فوتون ذره را توضیح می دهد. اطمینان از اتصالات صحیح ضروری ترین ضرورت در هنگام کار بر روی هر سیستم برای خروجی مورد نظر است. بنابراین ، اتصالات مورد نیاز به شرح زیر است:

BME280 از طریق I2C کار می کند. در اینجا مثال نمودار سیم کشی است که نحوه اتصال هر رابط سنسور را نشان می دهد. خارج از جعبه ، برد برای یک رابط I2C پیکربندی شده است ، بنابراین توصیه می کنیم در صورت عدم آگاهی ، از این رابط استفاده کنید. تنها چیزی که نیاز دارید چهار سیم است! فقط چهار اتصال نیاز به پین های Vcc ، Gnd ، SCL و SDA دارد و این اتصالات با کمک کابل I2C متصل می شوند. این اتصالات در تصاویر بالا نشان داده شده است.

مرحله 4: کد پایش دما ، فشار و رطوبت

کد پایش دما ، فشار و رطوبت
کد پایش دما ، فشار و رطوبت
کد پایش دما ، فشار و رطوبت
کد پایش دما ، فشار و رطوبت

نسخه تمیز کدی که برای اجرای آن استفاده می کنیم در اینجا موجود است.

هنگام استفاده از ماژول سنسور با آردوینو ، ما کتابخانه application.h و spark_wiring_i2c.h را شامل می شود. کتابخانه "application.h" و spark_wiring_i2c.h شامل توابع است که ارتباط i2c بین سنسور و ذره را تسهیل می کند.

برای باز کردن صفحه وب برای نظارت بر دستگاه ، اینجا را کلیک کنید

کد را روی برد خود بارگذاری کنید و باید شروع به کار کند! همه داده ها را می توان در صفحه وب به دست آورد همانطور که در تصویر نشان داده شده است.

کد زیر ارائه شده است:

// با مجوز اراده آزاد توزیع می شود. // از آن به هر نحوی که می خواهید ، سود یا رایگان استفاده کنید ، مشروط بر اینکه در مجوزهای آثار مرتبط با آن متناسب باشد. // BME280 // این کد برای کار با ماژول کوتاه BME280_I2CS I2C طراحی شده است که از ControlEverything.com در دسترس است. آدرس #BME280 I2C 0x76 (108) #تعریف Addr 0x76 دو cTemp = 0 ، fTemp = 0 ، فشار = 0 ، رطوبت = 0 ؛ void setup () {// تنظیم متغیر Particle.variable ("i2cdevice" ، "BME280") ؛ article.variable ("cTemp" ، cTemp) ؛ Particle.variable ("fTemp" ، fTemp) ؛ Particle.variable ("فشار" ، فشار) ؛ Particle.variable ("رطوبت" ، رطوبت) ؛ // راه اندازی ارتباط I2C به عنوان MASTER Wire.begin ()؛ // راه اندازی ارتباط سریال ، تنظیم نرخ باود = 9600 Serial.begin (9600)؛ تأخیر (300) ؛ } void loop () {unsigned int b1 [24]؛ اطلاعات int بدون علامت [8]؛ int dig_H1 = 0 ؛ برای (int i = 0 ؛ i <24؛ i ++) {// شروع I2C Transmission Wire.beginTransmission (Addr) ؛ // ثبت داده را انتخاب کنید Wire.write ((136+i))؛ // توقف I2C Transmission Wire.endTransmission ()؛ // درخواست 1 بایت داده Wire.requestFrom (Addr، 1)؛ // 24 بایت داده را بخوانید اگر (Wire.available () == 1) {b1 = Wire.read ()؛ }} // تبدیل داده ها // ضرایب temp 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) ؛ // ضرایب فشار 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) ؛ برای (int i = 0 ؛ i <7؛ i ++) {// شروع I2C Transmission Wire.beginTransmission (Addr) ؛ // ثبت داده را انتخاب کنید Wire.write ((225+i))؛ // توقف I2C Transmission Wire.endTransmission ()؛ // درخواست 1 بایت داده Wire.requestFrom (Addr، 1)؛ // 7 بایت داده را بخوانید اگر (Wire.available () == 1) {b1 = Wire.read ()؛ }} // تبدیل داده ها // ضرایب رطوبت 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) ؛ // ثبت داده را انتخاب کنید Wire.write (161)؛ // توقف I2C Transmission Wire.endTransmission ()؛ // درخواست 1 بایت داده Wire.requestFrom (Addr، 1)؛ // 1 بایت داده را بخوانید اگر (Wire.available () == 1) {dig_H1 = Wire.read ()؛ } // راه اندازی I2C Transmission Wire.beginTransmission (Addr) ؛ // انتخاب کنترل رطوبت ثبت Wire.write (0xF2)؛ // رطوبت بیش از میزان نمونه گیری = 1 Wire.write (0x01)؛ // توقف I2C Transmission Wire.endTransmission ()؛ // راه اندازی I2C Transmission Wire.beginTransmission (Addr) ؛ // کنترل اندازه گیری کنترل Wire.write (0xF4) را انتخاب کنید؛ // حالت عادی ، دما و فشار بر سرعت نمونه برداری = 1 Wire.write (0x27) ؛ // توقف I2C Transmission Wire.endTransmission ()؛ // راه اندازی I2C Transmission Wire.beginTransmission (Addr) ؛ // config register Wire.write (0xF5) را انتخاب کنید؛ // زمان آماده به کار = 1000ms Wire.write (0xA0)؛ // توقف I2C Transmission Wire.endTransmission ()؛ برای (int i = 0 ؛ i <8؛ i ++) {// شروع I2C Transmission Wire.beginTransmission (Addr) ؛ // ثبت داده را انتخاب کنید Wire.write ((247+i))؛ // توقف I2C Transmission Wire.endTransmission ()؛ // درخواست 1 بایت داده Wire.requestFrom (Addr، 1)؛ // 8 بایت داده را بخوانید اگر (Wire.available () == 1) {data = Wire.read ()؛ }} // تبدیل داده های فشار و دما به 19 بیت طولانی adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (طولانی) (داده [2] و 0xF0)) / 16 ؛ long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16 ؛ // تبدیل داده های رطوبت طولانی adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)) ؛ // محاسبه جبران درجه حرارت double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2) ؛ double var2 = ((((Double) adc_t) / 131072.0 - ((Double) dig_T1) / 8192.0) * (((Double) adc_t) /131072.0 - ((Double) dig_T1) /8192.0)) * ((Double) dig_T3)؛ دو برابر t_fine = (طولانی) (var1 + var2) ؛ دو cTemp = (var1 + var2) / 5120.0 ؛ دو fTemp = cTemp * 1.8 + 32 ؛ // محاسبات جبران فشار var1 = ((double) t_fine / 2.0) - 64000.0 ؛ var2 = var1 * var1 * ((double) dig_P6) / 32768.0 ؛ var2 = var2 + var1 * ((double) dig_P5) * 2.0 ؛ var2 = (var2 / 4.0) + (((دو برابر) dig_P4) * 65536.0) ؛ var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) 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 * ((double) dig_P8) / 32768.0 ؛ فشار مضاعف = (p + (var1 + var2 + ((double) dig_P7)) / 16.0) / 100 ؛ // محاسبه جبران رطوبت دو برابر 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 * var_H))) ؛ رطوبت مضاعف = var_H * (1.0 - dig_H1 * var_H / 524288.0) ؛ if (رطوبت> 100.0) {رطوبت = 100.0 ؛ } else if (رطوبت <0.0) {رطوبت = 0.0؛ } // خروجی داده ها به داشبورد Particle.publish ("دما در سانتیگراد:" ، String (cTemp)) ؛ Particle.publish ("دما در فارنهایت:" ، رشته (fTemp)) ؛ Particle.publish ("فشار:" ، رشته (فشار)) ؛ Particle.publish ("رطوبت نسبی:" ، رشته (رطوبت)) ؛ تاخیر (1000) ؛ }

مرحله 5: برنامه های کاربردی:

برنامه های کاربردی
برنامه های کاربردی

سنسور دما ، فشار و رطوبت نسبی BME280 دارای کاربردهای صنعتی مختلف مانند نظارت بر دما ، حفاظت حرارتی محیطی کامپیوتر ، نظارت بر فشار در صنعت است. ما همچنین این سنسور را در برنامه های ایستگاه های هواشناسی و همچنین سیستم نظارت بر گلخانه به کار گرفته ایم.

سایر برنامه ها ممکن است شامل موارد زیر باشد:

  1. آگاهی از زمینه ، به عنوان مثال تشخیص پوست ، تشخیص تغییر اتاق.
  2. نظارت بر تناسب اندام / رفاه - هشدار در مورد خشکی یا درجه حرارت بالا.
  3. اندازه گیری حجم و جریان هوا.
  4. کنترل اتوماسیون منزل
  5. کنترل گرمایش ، تهویه ، تهویه مطبوع (HVAC).
  6. اینترنت اشیاء
  7. بهبود GPS (به عنوان مثال بهبود زمان برای اولین بار ، حساب مرده ، تشخیص شیب).
  8. ناوبری داخلی (تغییر تشخیص کف ، تشخیص آسانسور).
  9. ناوبری در فضای باز ، برنامه های تفریحی و ورزشی.
  10. پیش بینی آب و هوا.
  11. نشانگر سرعت عمودی (سرعت افزایش/غرق شدن)..

مرحله ششم: آموزش تصویری

آموزش ویدئویی ما را تماشا کنید تا تمام مراحل رابط و تکمیل پروژه را طی کنید.

منتظر وبلاگ های رابط و کارگر دیگر حسگرها باشید.

توصیه شده: