فهرست مطالب:

ایستگاه هواشناسی شخصی با استفاده از تمشک پای با BME280 در جاوا: 6 مرحله
ایستگاه هواشناسی شخصی با استفاده از تمشک پای با BME280 در جاوا: 6 مرحله

تصویری: ایستگاه هواشناسی شخصی با استفاده از تمشک پای با BME280 در جاوا: 6 مرحله

تصویری: ایستگاه هواشناسی شخصی با استفاده از تمشک پای با BME280 در جاوا: 6 مرحله
تصویری: Guardians in the Wilderness: Joey & Shannon Hodgson's Journey as Remote Forest Fire Tower Lookouts 2024, جولای
Anonim
Image
Image
صورتحساب تجهیزات ضروری
صورتحساب تجهیزات ضروری

هوای بد همیشه از پنجره بدتر به نظر می رسد

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

مرحله 1: صورتحساب تجهیزات ضروری

صورتحساب تجهیزات ضروری
صورتحساب تجهیزات ضروری
صورتحساب تجهیزات ضروری
صورتحساب تجهیزات ضروری
صورتحساب تجهیزات ضروری
صورتحساب تجهیزات ضروری

1. رزبری پای

اولین قدم این است که روی برد Raspberry Pi قرار بگیرید. Raspberry Pi یک کامپیوتر تک صفحه ای است که از لینوکس استفاده می کند. هدف آن بهبود مهارت های برنامه نویسی و درک سخت افزاری است. به سرعت توسط علاقمندان و علاقمندان به وسایل الکترونیکی برای پروژه های نوآورانه پذیرفته شد.

2. I²C Shield برای رزبری پای

INPI2 (آداپتور I2C) Raspberry Pi 2/3 یک پورت I²C را برای استفاده در چندین دستگاه I²C فراهم می کند. در فروشگاه Dcube موجود است

3. سنسور رطوبت دیجیتال ، فشار و دما ، BME280

BME280 یک سنسور رطوبت ، فشار و دما است که دارای زمان پاسخ سریع و دقت کلی بالا است. ما این سنسور را از فروشگاه Dcube خریداری کردیم

4. I²C اتصال کابل

ما کابل اتصال I²C را در فروشگاه Dcube در دسترس داشتیم

5. کابل میکرو USB

منبع تغذیه کابل میکرو USB یک انتخاب ایده آل برای تغذیه رزبری پای است.

6. دسترسی به اینترنت را از طریق آداپتور EthernetCable/WiFi تفسیر کنید

یکی از اولین کارهایی که می خواهید انجام دهید این است که رزبری پای خود را به اینترنت متصل کنید. ما می توانیم با استفاده از کابل اترنت متصل شویم. احتمال دیگر این است که می توانید با استفاده از آداپتور بی سیم USB به یک شبکه بی سیم متصل شوید.

7. کابل HDMI (کابل نمایش و اتصال)

هر مانیتور HDMI/DVI و هر تلویزیون باید به عنوان نمایشگر Pi کار کند. اما اختیاری است. امکان دسترسی از راه دور (مانند-SSH) نیز قابل رد نیست. همچنین می توانید با نرم افزار PUTTY دسترسی پیدا کنید.

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

اتصالات سخت افزاری برای راه اندازی
اتصالات سخت افزاری برای راه اندازی
اتصالات سخت افزاری برای راه اندازی
اتصالات سخت افزاری برای راه اندازی

مطابق شماتیک نشان داده شده مدار را بسازید.

در حین یادگیری ، ما با اصول اولیه الکترونیک در مورد دانش سخت افزار و نرم افزار آشنا شدیم. ما می خواستیم یک شماتیک الکترونیکی ساده برای این پروژه تهیه کنیم. شماتیک الکترونیکی مانند نقشه ای برای الکترونیک است. نقشه ای تهیه کنید و طرح را با دقت دنبال کنید. ما برخی از اصول اولیه الکترونیک را در اینجا به کار برده ایم. منطق شما را از A به B می رساند ، تخیل شما را به همه جا می برد!

اتصال Raspberry Pi و I²C Shield

اول از همه رزبری پای را بردارید و سپر I²C (با درگاه I²C رو به داخل) را روی آن قرار دهید. Shield را به آرامی روی پایه های GPIO Pi فشار دهید و ما این مرحله را به آسانی پای انجام می دهیم (به عکس مراجعه کنید).

اتصال سنسور و رزبری پای

سنسور را بردارید و کابل I²C را با آن وصل کنید. مطمئن شوید خروجی I²C همیشه به ورودی I²C متصل شود. همین امر باید برای Raspberry Pi با سپر I²C روی پین GPIO نصب شده باشد. ما I²C Shield و کابل های اتصال را در کنار خود به عنوان یک تسکین بسیار بزرگ و یک مزیت بسیار بزرگ داریم ، زیرا ما فقط با گزینه plug and play. دیگر نیازی به پین و سیم کشی نیست و بنابراین ، سردرگمی از بین رفته است. فقط خودتان را در شبکه سیم ها تصور کنید و وارد آن شوید. تسکین از آن. این باعث می شود همه چیز پیچیده نباشد.

توجه: سیم قهوه ای همیشه باید اتصال GND (GND) بین خروجی یک دستگاه و ورودی دستگاه دیگر را دنبال کند

اتصال به اینترنت یک نیاز است

شما در اینجا حق انتخاب دارید. می توانید رزبری پای را با کابل LAN یا آداپتور USB بی سیم Nano برای اتصال WIFI متصل کنید. در هر صورت ، مانیفست اتصال به اینترنت است که انجام شده است.

تغذیه مدار

کابل Micro USB را به پریز برق رزبری پای وصل کنید. پانچ و voila! همه چیز خوب است و ما بلافاصله شروع می کنیم.

اتصال به صفحه نمایش

ما می توانیم کابل HDMI را به مانیتور یا تلویزیون متصل کنیم. ما می توانیم Raspberry Pi را بدون اتصال آن به مانیتور با استفاده از -SSH (به خط فرمان Pi از یک رایانه دیگر دسترسی پیدا کنیم) دسترسی پیدا کنیم. همچنین می توانید از نرم افزار PUTTY برای آن استفاده کنید. این گزینه برای کاربران پیشرفته است ، بنابراین ما در اینجا به طور مفصل به آن نمی پردازیم.

من شنیده ام که رکود اقتصادی وجود دارد ، تصمیم گرفتم که شرکت نکنم

مرحله 3: برنامه نویسی Raspberry Pi در جاوا

برنامه نویسی رزبری پای در جاوا
برنامه نویسی رزبری پای در جاوا

کد جاوا برای رزبری پای و سنسور BME280. در مخزن OurGithub موجود است.

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

کد به ساده ترین شکل است که می توانید تصور کنید و نباید مشکلی با آن داشته باشید ، اما بپرسید که آیا آن را دارید. حتی اگر هزار چیز می دانید ، باز هم از کسی که می داند بپرسید.

همچنین می توانید کد جاوا کار کننده برای این سنسور را از اینجا کپی کنید.

// با مجوز اراده آزاد توزیع می شود. // از آن به هر نحوی که می خواهید ، سود یا رایگان استفاده کنید ، مشروط بر اینکه در مجوزهای آثار مرتبط با آن متناسب باشد. // BME280 // این کد برای کار با ماژول کوتاه BME280_I2CS I2C طراحی شده است که از ControlEverything.com در دسترس است. //

واردات com.pi4j.io.i2c. I2CBus ؛

واردات com.pi4j.io.i2c. I2CDevice؛ واردات com.pi4j.io.i2c. I2CFactory؛ واردات java.io. IOException؛

کلاس عمومی BME280

{public static void main (String args ) Exception را پرتاب می کند {// ایجاد گذرگاه I2C I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1) ؛ // دریافت دستگاه I2C ، آدرس BME280 I2C 0x76 (108) I2CDevice device = bus.getDevice (0x76) است ؛ // خواندن 24 بایت داده از آدرس 0x88 (136) بایت b1 = بایت جدید [24]؛ device.read (0x88 ، b1 ، 0 ، 24) ؛ // تبدیل داده ها // ضرایب دما int dig_T1 = (b1 [0] & 0xFF) + ((b1 [1] & 0xFF) * 256) ؛ int dig_T2 = (b1 [2] & 0xFF) + ((b1 [3] & 0xFF) * 256) ؛ if (dig_T2> 32767) {dig_T2 -= 65536 ؛ } int dig_T3 = (b1 [4] & 0xFF) + ((b1 [5] & 0xFF) * 256) ؛ if (dig_T3> 32767) {dig_T3 -= 65536 ؛ } // ضرایب فشار int dig_P1 = (b1 [6] & 0xFF) + ((b1 [7] & 0xFF) * 256) ؛ int dig_P2 = (b1 [8] & 0xFF) + ((b1 [9] & 0xFF) * 256) ؛ if (dig_P2> 32767) {dig_P2 -= 65536 ؛ } int dig_P3 = (b1 [10] & 0xFF) + ((b1 [11] & 0xFF) * 256) ؛ if (dig_P3> 32767) {dig_P3 -= 65536 ؛ } int dig_P4 = (b1 [12] & 0xFF) + ((b1 [13] & 0xFF) * 256) ؛ if (dig_P4> 32767) {dig_P4 -= 65536 ؛ } int dig_P5 = (b1 [14] & 0xFF) + ((b1 [15] & 0xFF) * 256) ؛ if (dig_P5> 32767) {dig_P5 -= 65536 ؛ } int dig_P6 = (b1 [16] & 0xFF) + ((b1 [17] & 0xFF) * 256) ؛ if (dig_P6> 32767) {dig_P6 -= 65536 ؛ } int dig_P7 = (b1 [18] & 0xFF) + ((b1 [19] & 0xFF) * 256) ؛ if (dig_P7> 32767) {dig_P7 -= 65536 ؛ } int dig_P8 = (b1 [20] & 0xFF) + ((b1 [21] & 0xFF) * 256) ؛ if (dig_P8> 32767) {dig_P8 -= 65536 ؛ } int dig_P9 = (b1 [22] & 0xFF) + ((b1 [23] & 0xFF) * 256) ؛ if (dig_P9> 32767) {dig_P9 -= 65536 ؛ } // خواندن 1 بایت داده از آدرس 0xA1 (161) int dig_H1 = ((بایت) device.read (0xA1) & 0xFF)؛ // خواندن 7 بایت داده از آدرس 0xE1 (225) device.read (0xE1 ، b1 ، 0 ، 7) ؛ // تبدیل داده ها // ضرایب رطوبت int dig_H2 = (b1 [0] & 0xFF) + (b1 [1] * 256) ؛ if (dig_H2> 32767) {dig_H2 -= 65536 ؛ } int dig_H3 = b1 [2] & 0xFF؛ int dig_H4 = ((b1 [3] & 0xFF) * 16) + (b1 [4] & 0xF) ؛ if (dig_H4> 32767) {dig_H4 -= 65536 ؛ } int dig_H5 = ((b1 [4] & 0xFF) / 16) + ((b1 [5] & 0xFF) * 16) ؛ if (dig_H5> 32767) {dig_H5 -= 65536 ؛ } int dig_H6 = b1 [6] & 0xFF؛ if (dig_H6> 127) {dig_H6 -= 256 ؛ } // رجیستری کنترل رطوبت را انتخاب کنید // رطوبت بیش از میزان نمونه گیری = 1 device.write (0xF2 ، (byte) 0x01)؛ // ثبت اندازه گیری کنترل را انتخاب کنید // حالت عادی ، دما و فشار بر میزان نمونه گیری = 1 device.write (0xF4 ، (byte) 0x27)؛ // config register را انتخاب کنید // زمان Stand_by = 1000 ms device.write (0xF5، (byte) 0xA0)؛ // خواندن 8 بایت داده از آدرس 0xF7 (247) // فشار msb1 ، فشار msb ، فشار lsb ، temp msb1 ، temp msb ، temp lsb ، رطوبت lsb ، رطوبت msb بایت داده = بایت جدید [8] ؛ device.read (0xF7 ، داده ، 0 ، 8) ؛ // تبدیل داده های فشار و دما به 19 بیت طولانی adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (long) (داده [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؛ } // خروجی داده ها به صفحه System.out.printf ("دما در سانتیگراد:٪.2f C٪ n" ، cTemp) ؛ System.out.printf ("دما در فارنهایت:٪.2f F٪ n" ، fTemp) ؛ System.out.printf ("فشار:٪.2f hPa٪ n" ، فشار) ؛ System.out.printf ("رطوبت نسبی:٪.2f ٪٪ RH٪ n" ، رطوبت) ؛ }}

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

کد عملی بودن
کد عملی بودن

اکنون ، کد را بارگیری (یا git pull) کرده و در Raspberry Pi باز کنید.

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

مرحله 5: استفاده در دنیای سازنده

BME280 در همه کاربردهایی که نیاز به اندازه گیری رطوبت و فشار دارند ، عملکرد بالایی دارد. این برنامه های در حال ظهور آگاهی از زمینه هستند ، به عنوان مثال. تشخیص پوست ، تشخیص تغییر اتاق ، نظارت بر وضعیت تناسب اندام ، هشدار در مورد خشکی یا دمای بالا ، اندازه گیری حجم و جریان هوا ، کنترل اتوماسیون منزل ، کنترل گرمایش ، تهویه ، تهویه مطبوع (HVAC) ، اینترنت اشیاء (IoT) ، ارتقاء GPS (به عنوان مثال بهبود زمان اولیه تا بهبود ، حساب مرده ، تشخیص شیب) ، ناوبری در محیط داخلی (تغییر تشخیص کف ، تشخیص آسانسور) ، ناوبری در فضای باز ، برنامه های تفریحی و ورزشی ، پیش بینی آب و هوا و شاخص سرعت عمودی (افزایش/غرق شدن سرعت).

مرحله 6: نتیجه گیری

همانطور که می بینید ، این پروژه نشان دهنده توانایی سخت افزار و نرم افزار است. در مدت زمان کمی می توان چنین پروژه چشمگیری را ساخت! البته این تازه شروع کار است. ساخت یک ایستگاه هوای شخصی پیچیده تر مانند ایستگاه های هوای فرودگاهی شخصی می تواند شامل سنسورهای بیشتری مانند بادسنج (سرعت باد) ، گیربکس (دید) ، پیرانومتر (تابش خورشید) و غیره باشد. ما یک آموزش ویدیویی در YouTube داریم که عملکرد اصلی آن سنسور I²C با Rasp Pi. دیدن نتایج و عملکرد ارتباطات I²C واقعاً شگفت انگیز است. آن را نیز بررسی کنید. از ساخت و یادگیری لذت ببرید! لطفا نظر خود را در مورد این دستورالعمل به ما اطلاع دهید. ما دوست داریم در صورت لزوم برخی پیشرفت ها را انجام دهیم.

توصیه شده: