فهرست مطالب:

A Micro: bit Dive-O-Meter: 8 Step (with Pictures)
A Micro: bit Dive-O-Meter: 8 Step (with Pictures)

تصویری: A Micro: bit Dive-O-Meter: 8 Step (with Pictures)

تصویری: A Micro: bit Dive-O-Meter: 8 Step (with Pictures)
تصویری: MakeCode for micro:bit - Melody Block and Multi Editor! 2024, جولای
Anonim
A Micro: bit Dive-O-Meter
A Micro: bit Dive-O-Meter
A Micro: bit Dive-O-Meter
A Micro: bit Dive-O-Meter
A Micro: bit Dive-O-Meter
A Micro: bit Dive-O-Meter

تابستان اینجاست ، زمان استخر آن است!

یک فرصت خوب برای بیرون بردن خود و میکرو خود از استخر و در این مورد حتی از استخر.

micro-bit dive-o-meter که در اینجا توضیح داده شده است ، یک عمق سنج DIY ساده است که به شما امکان می دهد میزان عمق غواصی خود را اندازه گیری کنید. این دستگاه فقط از یک میکرو: بیت ، یک باتری یا LiPo ، یک کانکتور لبه برای میکرو: بیت ، یک سنسور فشار فشارسنج BMP280 یا BME280 و برخی از کابل های بلوز تشکیل شده است. استفاده از Pimoroni enviro: بیت کارها را ساده تر می کند. همه اینها در دو لایه کیسه های پلاستیکی یا سیلیکونی شفاف و ضد آب بسته بندی شده اند و وزنه هایی برای جبران نیروی شناور اضافه شده است.

این برنامه از دستگاه حسگر فشار میکرو: بیتی است که در دستورالعمل قبلی توضیح داده بودم.

می توانید از دستگاه e استفاده کنید. گرم برای مسابقات غواصی با دوستان و خانواده ، یا برای پیدا کردن عمق آن حوضچه. من آن را با استفاده از عمیق ترین استخر محله ام آزمایش کردم و متوجه شدم که حداقل تا عمق 3.2 متر کار می کند. حداکثر پنج متر حداکثر نظری است. تا کنون من دقت آن را با هیچ جزئیاتی آزمایش نکرده ام ، اما اعداد گزارش شده حداقل در محدوده مورد انتظار بوده است.

برخی نکات: این وسیله ابزاری برای غواصان واقعی نیست. میکرو: بیت شما در صورت خیس شدن آسیب می بیند. شما از این دستورالعمل با خطر خود استفاده می کنید.

به روز رسانی 27 مه: اکنون می توانید یک اسکریپت MakeCode HEX پیدا کنید که می توانید مستقیماً در micro: bit بارگذاری کنید. مرحله 6 را ببینید. به روز رسانی 13 ژوئن: Enviro: bit و نسخه کابلی اضافه شده است. مراحل 7 و 8 را ببینید

مرحله 1: نظریه پشت دستگاه

ما در کف اقیانوس هوا زندگی می کنیم. فشار در اینجا حدود 1020 hPa (هکتو پاسکال) است زیرا وزن ستون هوا در اینجا به فضا حدود 1 کیلوگرم در سانتی متر مربع است.

چگالی آب بسیار بیشتر است ، زیرا یک لیتر هوا حدود 1.2 گرم و یک لیتر آب 1 کیلوگرم وزن دارد ، یعنی حدود 800 برابر. بنابراین از آنجا که افت فشار فشار حدود 1 hPa برای هر 8 متر ارتفاع است ، افزایش فشار 1 hPa برای هر سانتی متر زیر سطح آب است. در عمق حدود 10 متر ، فشار 2000 hPa یا دو اتمسفر است.

سنسور فشار مورد استفاده در اینجا دارای محدوده اندازه گیری بین 750 تا 1500 hPa با وضوح حدود یک hPa است. این بدان معناست که ما می توانیم عمق تا 5 متر را با وضوح حدود 1 سانتی متر اندازه گیری کنیم.

این دستگاه از نوع عمق سنج Boyle Marriotte خواهد بود. مونتاژ آن بسیار ساده است و در مرحله بعد توضیح داده می شود. سنسور از پروتکل I2C استفاده می کند ، بنابراین یک کانکتور لبه برای micro: bit مفید است. مهمترین قسمت کیسه های ضد آب هستند ، زیرا هرگونه رطوبت به میکرو آسیب می رساند: بیت ، سنسور یا باتری. از آنجا که مقداری هوا در داخل کیسه ها به دام می افتد ، اضافه کردن وزنه به جبران نیروی شناور کمک می کند.

مرحله 2: استفاده از دستگاه

با استفاده از دستگاه
با استفاده از دستگاه
با استفاده از دستگاه
با استفاده از دستگاه
با استفاده از دستگاه
با استفاده از دستگاه
با استفاده از دستگاه
با استفاده از دستگاه

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

برای غواصی ، عمق را بر حسب متر ، که از اندازه گیری فشار محاسبه می شود ، به صورت نمودار میله ای در مراحل 20 سانتی متری و یا در صورت درخواست ، به صورت اعداد نشان می دهد.

با استفاده از دکمه A روی micro: bit ، فشار فعلی را به عنوان مقدار فشار مرجع تنظیم می کنید. برای تأیید ورود ، ماتریس یک بار چشمک می زند.

شما می توانید از این حالت یا برای مشاهده عمق غواصی خود یا برای ثبت میزان غواصی خود استفاده کنید.

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

مرحله 3: مواد مورد نیاز

مواد مورد نیاز
مواد مورد نیاز
مواد مورد نیاز
مواد مورد نیاز
مواد مورد نیاز
مواد مورد نیاز

میکرو: کمی به عنوان مثال. در 13 GBP/16 یورو در Pimoroni UK/DE.

اتصال لبه (Kitronic یا Pimoroni) ، 5 GBP. من از نسخه Kitronic استفاده کردم.

سنسور BMP/BME280 من از یک سنسور BMP280 از Banggood ، 4.33 یورو برای سه واحد استفاده کردم.

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

یک جایگزین عالی برای ترکیب لبه/سنسور بالا می تواند Pimoroni enviro: bit باشد (در حال حاضر آزمایش نشده است ، آخرین مرحله را ببینید).

یک بسته باتری یا LiPo برای میکرو: بیت.

یک کابل برق با سوئیچ (اختیاری اما مفید). کیسه های ضد آب را پاک کنید. من از یک کیف سیلیکونی برای یک تلفن همراه و یک یا دو کیسه ziploc کوچک استفاده کردم. مطمئن شوید که مواد به اندازه کافی ضخیم هستند ، بنابراین سنجاق های اتصال دهنده لبه به کیف ها آسیب نمی رساند.

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

Arduino IDE و چندین کتابخانه.

مرحله 4: مونتاژ

مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ
مونتاژ

Arduino IDE و کتابخانه های مورد نیاز را نصب کنید. جزئیات در اینجا شرح داده شده است.

(برای اسکریپت MakeCode الزامی نیست.) با توجه به اینکه از اتصال دهنده لبه Kitronik استفاده می کنید ، پین ها را به پورت های I2C 19 و 20 لحیم کنید. این مورد برای اتصال لبه Pimoroni لازم نیست. سرصفحه را به سنسور بچسبانید و سنسور و کانکتور لبه را با استفاده از کابل های بلوز وصل کنید. VCC را به 3 ولت ، GND را به 0 ولت ، SCL را به پورت 19 و SDA را به پورت 20 متصل کنید ، همچنین کابل ها را مستقیماً به برک آوت لحیم کنید. micro: bit را با کابل USB به رایانه ما وصل کنید. اسکریپت ارائه شده را باز کرده و روی micro: bit فلش کنید. از مانیتور سریال یا پلاتر استفاده کنید ، بررسی کنید که آیا سنسور داده های منطقی می دهد یا خیر. اتصال micro: bit را از رایانه خود قطع کنید. باتری یا LiPo را به micro: bit وصل کنید. دکمه B را فشار دهید ، مقدار را بخوانید دکمه A. را فشار دهید دکمه B را فشار دهید ، مقدار را بخوانید. دستگاه را در دو لایه کیسه های محکم قرار دهید و فقط مقدار کمی هوا در کیسه ها باقی بماند. در این صورت ، وزنه ای برای جبران نیروی شناوری قرار دهید. بررسی کنید آیا همه چیز ضد آب است یا خیر. به استخر بروید و بازی کنید.

مرحله 5: اسکریپت MicroPython

اسکریپت فقط مقدار فشار را از سنسور می گیرد ، آن را با مقدار مرجع مقایسه می کند و سپس عمق را از اختلاف محاسبه می کند. برای نمایش مقادیر به عنوان نمودار میله ای ، عدد صحیح و باقیمانده از مقدار عمق گرفته می شود. مورد اول ارتفاع خط را مشخص می کند. باقیمانده به پنج سطل تقسیم می شود که طول میله ها را مشخص می کند. سطح بالا 0 - 1 متر ، پایین ترین آن 4 - 5 متر است. همانطور که قبلاً ذکر شد ، با فشار دادن دکمه A فشار مرجع را تنظیم می کند ، دکمه B "عمق نسبی" را بر حسب متر نشان می دهد که به صورت عددی نمایش داده می شود. در حال حاضر ، مقادیر منفی و مثبت به صورت یکسان بر روی ماتریس LED به صورت بارگراف ارائه می شود. خیالتان راحت باشد که اسکریپت را برای نیازهای خود بهینه کنید. ممکن است برای نمایش مقادیر روی مانیتور سریال یا پلاتر IDE آردوینو ، خطوط خاصی را بی صدا کنید. برای شبیه سازی عملکرد ، می توانید دستگاهی را که در دستورالعمل قبلی توضیح دادم بسازید.

من قسمتی از متن را که سنسور را می خواند ننوشته ام. من از منبع مطمئن نیستم ، اما دوست دارم از نویسندگان تشکر کنم. از هرگونه اصلاح یا نکاتی برای بهینه سازی استقبال می شود.

#عبارتند از

#شامل میکروبیت Adafruit_Microbit_Matrix ؛ #تعریف BME280_ADDRESS 0x76 unsigned long int hum_raw، temp_raw، pres_raw؛ امضا طولانی int t_fine؛ uint16_t dig_T1؛ int16_t dig_T2؛ int16_t dig_T3؛ uint16_t dig_P1؛ int16_t dig_P2؛ int16_t dig_P3؛ int16_t dig_P4؛ int16_t dig_P5؛ int16_t dig_P6؛ int16_t dig_P7؛ int16_t dig_P8؛ int16_t dig_P9؛ int8_t dig_H1؛ int16_t dig_H2؛ int8_t dig_H3؛ int16_t dig_H4؛ int16_t dig_H5؛ int8_t dig_H6؛ double press_norm = 1015؛ // مقدار شروع عمق دو برابر ؛ // عمق محاسبه شده // ------------------------------------------------ ------------------------------------------------------ ---------------------- void setup () {uint8_t osrs_t = 1؛ // نمونه برداری بیش از حد دما x 1 uint8_t osrs_p = 1؛ // نمونه گیری بیش از حد فشار x 1 uint8_t osrs_h = 1؛ // نمونه برداری بیش از حد رطوبت x 1 حالت uint8_t = 3؛ // حالت عادی uint8_t t_sb = 5؛ // Tstandby 1000ms uint8_t filter = 0؛ // فیلتر کردن uint8_t spi3w_fa = 0؛ // SPI 3 سیمه uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | حالت uint8_t config_reg = (t_sb << 5) | (فیلتر << 2) | spi3w_fa ؛ uint8_t ctrl_hum_reg = osrs_h؛ pinMode (PIN_BUTTON_A ، INPUT) ؛ pinMode (PIN_BUTTON_B ، INPUT) ؛ Serial.begin (9600)؛ // تنظیم سرعت پورت سریال Serial.print ("فشار [hPa]") ؛ // سرصفحه برای خروجی سریال Wire.begin ()؛ writeReg (0xF2 ، ctrl_hum_reg) ؛ writeReg (0xF4 ، ctrl_meas_reg) ؛ writeReg (0xF5 ، config_reg) ؛ readTrim ()؛ // microbit.begin ()؛ // microbit.print ("x") ؛ تاخیر (1000) ؛ } // --------------------------------------------------- -------------------------------------------------- حلقه خالی () {double temp_act = 0.0 ، press_act = 0.0 ، hum_act = 0.0 ؛ امضا طولانی int temp_cal؛ unsigned long int press_cal، hum_cal؛ int N ؛ int M ؛ دوبار فشار_دلتا؛ // فشار نسبی int deep_m؛ // عمق در متر ، قسمت صحیح double deep_cm؛ // باقی مانده در cm readData ()؛ // temp_cal = calibration_T (temp_raw) ؛ press_cal = calibration_P (pres_raw) ؛ // hum_cal = calibration_H (hum_raw) ؛ // temp_act = (دو برابر) temp_cal / 100.0 ؛ press_act = (دو برابر) press_cal / 100.0؛ // hum_act = (دو برابر) hum_cal / 1024.0؛ microbit.clear ()؛ // تنظیم مجدد ماتریس LED // دکمه A مقدار واقعی را به عنوان مرجع (P صفر) // دکمه B مقدار فعلی را به عنوان عمق در متر نمایش می دهد (از اختلاف فشار محاسبه می شود) اگر (! digitalRead (PIN_BUTTON_A)) {// فشار طبیعی هوا را تنظیم کنید به عنوان صفر press_norm = press_act؛ // microbit.print ("P0:")؛ // microbit.print (press_norm، 0)؛ // microbit.print ("hPa") ؛ microbit.fillScreen (LED_ON) ؛ // یکبار پلک بزنید تا تأخیر تأیید شود (100) ؛ } else if (! digitalRead (PIN_BUTTON_B)) {// نمایش عمق بر حسب متر microbit.print (عمق ، 2) ؛ microbit.print ("m") ؛ // Serial.println ("") ؛ } else {// محاسبه عمق از اختلاف فشار press_delta = (press_act - press_norm)؛ // محاسبه عمق نسبی فشار = (press_delta/100) ؛ // عمق در متر deep_m = int (abs (عمق)) ؛ // عمق im متر deep_cm = (abs (عمق) - deep_m)؛ // بقیه /* // برای توسعه استفاده می شود Serial.println (عمق) ؛ Serial.println (deep_m)؛ Serial.println (deep_cm)؛ */ // مراحل بارگراف if (deep_cm> 0.8) {// تنظیم طول میله ها (N = 4) ؛ } else if (deep_cm> 0.6) {(N = 3)؛ } else if (deep_cm> 0.4) {(N = 2) ؛ } else if (deep_cm> 0.2) {(N = 1)؛ } else {(N = 0)؛ }

if (deep_m == 4) {// set level == متر

(M = 4) ؛ } else if (deep_m == 3) {(M = 3)؛ } else if (deep_m == 2) {(M = 2)؛ } else if (deep_m == 1) {(M = 1)؛ } else {(M = 0)؛ // سطر بالا} /* // برای اهداف توسعه استفاده می شود Serial.print ("m:")؛ Serial.println (deep_m)؛ Serial.print ("cm:")؛ Serial.println (deep_cm)؛ Serial.print ("M:")؛ Serial.println (M)؛ // برای اهداف توسعه Serial.print ("N:")؛ Serial.println (N)؛ // برای تأخیر در توسعه (500) ؛ */ // رسم بارگراف microbit.drawLine (0 ، M ، N ، M ، LED_ON) ؛ }

// ارسال مقدار به پورت سریال برای پلاتر

Serial.print (press_delta) ؛ // رسم خطوط نشانگر و رفع محدوده نمایش داده شده Serial.print ("\ t")؛ Serial.print (0)؛ Serial.print ("\ t")؛ Serial.print (-500) ؛ Serial.print ("\ t")؛ Serial.println (500) ؛ تأخیر (500) ؛ // اندازه گیری دو بار در ثانیه} // ----------------------------------------- ------------------------------------------------------ ------------------------------------------------------ -------- // موارد زیر برای سنسور bmp/bme280 مورد نیاز است ، زیرا خوانده نشده است readTrim () {uint8_t data [32]، i = 0؛ // رفع 2014/Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0x88) ؛ Wire.endTransmission ()؛ سیم. درخواست از (BME280_ADDRESS ، 24) ؛ // رفع 2014/در حالی که (Wire.available ()) {data = Wire.read ()؛ من ++ ؛ } Wire.beginTransmission (BME280_ADDRESS) ؛ // افزودن 2014/Wire.write (0xA1) ؛ // افزودن 2014/Wire.endTransmission () ؛ // اضافه کردن 2014/Wire.requestFrom (BME280_ADDRESS، 1) ؛ // اضافه کردن 2014/data = Wire.read ()؛ // افزودن 2014/i ++ ؛ // افزودن 2014/Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xE1) ؛ Wire.endTransmission ()؛ سیم. درخواست از (BME280_ADDRESS، 7) ؛ // رفع 2014/در حالی که (Wire.available ()) {data = Wire.read ()؛ من ++ ؛ } dig_T1 = (داده [1] << 8) | داده [0] ؛ dig_P1 = (داده [7] << 8] | داده [6] ؛ dig_P2 = (داده [9] << 8] | داده [8] ؛ dig_P3 = (داده [11] << 8] | داده [10]؛ dig_P4 = (داده [13] << 8] | داده [12]؛ dig_P5 = (داده [15] << 8] | داده [14]؛ dig_P6 = (داده [17] << 8] | داده [16]؛ dig_P7 = (داده [19] << 8] | داده [18] ؛ dig_T2 = (داده [3] << 8] | داده [2] ؛ dig_T3 = (داده [5] << 8) | داده [4] ؛ dig_P8 = (داده [21] << 8] | داده [20]؛ dig_P9 = (داده [23] << 8] | داده [22]؛ dig_H1 = داده [24]؛ dig_H2 = (داده [26] << 8) | داده ها [25]؛ dig_H3 = داده [27]؛ dig_H4 = (داده [28] << 4) | (0x0F و داده [29]) ؛ dig_H5 = (داده [30] 4) و 0x0F) ؛ // رفع 2014/dig_H6 = داده [31] ؛ // رفع 2014/} void writeReg (uint8_t reg_address، uint8_t data) {Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (reg_address) ؛ Wire.write (داده) ؛ Wire.endTransmission ()؛ } void readData () {int i = 0؛ uint32_t data [8]؛ Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xF7) ؛ Wire.endTransmission ()؛ سیم. درخواست از (BME280_ADDRESS ، 8) ؛ while (Wire.available ()) {data = Wire.read ()؛ من ++ ؛ } pres_raw = (داده [0] << 12) | (داده [1] 4) ؛ temp_raw = (داده [3] << 12] | (داده [4] 4) ؛ hum_raw = (داده [6] 3) - ((int long sign) dig_T1 11 ؛ var2 = ((((((adc_T >> 4) - (((int طولانی امضا شده) dig_T1)) * ((adc_T >> 4) - - ((sign long int) dig_T1))) >> 12) * ((int long sign) dig_T3)) >> 14؛ t_fine = var1 + var2؛ T = (t_fine * 5 + 128) >> 8؛ بازگشت T؛ } unsigned long int calibration_P (sign long int adc_P) {sign long int var1، var2 ؛ int بدون علامت طولانی int؛ P1؛ var1 = (((int long sign) t_fine) >> 1) - (int long sign) 64000 ؛ var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((int long sign) dig_P6)؛ var2 = var2 + ((var1 * ((sign long int) dig_P5)) 2) + (((با امضای long int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((long int) dig_P2) * var1) >> 1)) >> 18؛ var1 = ((((32768+var1))*((با int طولانی امضا شده) dig_P1)) >> 15)؛ if (var1 == 0) {return 0؛ } P = (((int طولانی بدون امضا) (((int طولانی امضا شده) 1048576) -adc_P)-(var2 >> 12)))*3125؛ if (P <0x80000000) {P = (P << 1) / ((int طولانی بدون امضا) var1) ؛ } else {P = (P / (int طولانی بدون علامت) var1) * 2؛ } var1 = (((sign long int) dig_P9) * ((int long sign) (((P >> 3) * (P >> 3)) >> 13))] 12؛ var2 = (((int long sign) (P >> 2)) * ((int long sign) dig_P8)) >> 13؛ P = (int طولانی بدون امضا) ((int طولانی امضا شده) P + ((var1 + var2 + dig_P7) >> 4)) ؛ بازگشت P ؛ } unsigned long int calibration_H (sign long int adc_H) {sign long int v_x1؛ v_x1 = (t_fine - ((sign long int) 76800)) ؛ v_x1 = ((((((adc_H << 14) -(((با امضای طولانی int) dig_H4) 15) *) (((((((v_x1 * ((امضاء طولانی int) dig_H6)) >> 10) * (((v_x1 * ((با امضای طولانی int) dig_H3)) >> 11) + ((با امضای طولانی int) 32768))) >> 10) + ((با امضای long int) 2097152)) * ((با int طولانی امضا) dig_H2) + 8192] >> 14))؛ v_x1 = (v_x1 - (((((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((با int طولانی امضاء شده) dig_H1)) >> 4)) ؛ v_x1 = (v_x1 419430400؟ 419430400: v_x1) ؛ بازگشت (int طولانی بدون علامت) (v_x1 >> 12) ؛

مرحله 6: ساده سازی عمده: کد MakeCode/JavaScript

ساده سازی عمده: کد MakeCode/JavaScript
ساده سازی عمده: کد MakeCode/JavaScript
ساده سازی عمده: کد MakeCode/JavaScript
ساده سازی عمده: کد MakeCode/JavaScript

در مه 2018 ، Pimoroni محیط اطراف را منتشر کرد: دارای سنسور فشار/رطوبت/دما BME280 ، سنسور رنگ و نور TCS3472 و میکروفون MEMS. علاوه بر این ، آنها یک کتابخانه جاوا اسکریپت برای ویرایشگر MakeCode و یک کتابخانه MicroPython برای این سنسورها ارائه می دهند.

من از کتابخانه MakeCode آنها برای توسعه اسکریپت های دستگاه خود استفاده می کنم. پیوست فایلهای شش ضلعی را پیدا می کنید ، که می توانید مستقیماً در micro: bit خود کپی کنید.

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

بگذار ستون = 0

let Meter = 0 let باقی بماند = 0 let Row = 0 let Delta = 0 let Ref = 0 let Is = 0 Is = 1012 basic.showLeds (` # # # # # # # #. # # # # # # #… # # # # # # #) Ref = 1180 basic.clearScreen () basic.forever (() => {basic.clearScreen () if (input.buttonIsPressed (Button. A)) {Ref = envirobit.getPressure () Basic.showLeds (` # # #. #. #. #. # # # # #. #. #. #. #. #`) Basic.pause (1000)} else if (input.buttonIsPressed (Button. B)) {basic.showString ("" + ردیف + "." + باقی می ماند "" متر ") Basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = ریاضی.abs (Delta) if (Meter> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100) {ردیف = 1} دیگر {ردیف = 0} باقی مانده = متر - ردیف * 100 اگر (باقی بماند> = 80) {ستون = 4} دیگری اگر (باقی بماند> = 60) {ستون = 3} دیگری اگر (بماند> = 40) {Column = 2} else if (stay> = 20) {Column = 1} else {Column = 0} for (let ColA = 0؛ ColA <= Column؛ ColA ++) {led.plot (C olA، Row)} Basic.pause (500)}})

مرحله 7: نسخه Enviro: bit

نسخه Enviro: bit
نسخه Enviro: bit
نسخه Enviro: bit
نسخه Enviro: bit
نسخه Enviro: bit
نسخه Enviro: bit

در این بین من enviro: bit (20 GBP) و قدرت: bit (6 GBP) ، هر دو را از Pimoroni دریافت کردم.

همانطور که قبلاً ذکر شد ، محیط: سنسور فشار ، رطوبت و دما BME280 ، اما یک سنسور نور و رنگ (برنامه را در اینجا ببینید) و میکروفون MEMS ارائه می شود.

power: bit یک راه حل خوب برای تغذیه micro: bit است و به همراه کلید روشن/خاموش عرضه می شود.

نکته جالب این است که هر دو فقط کلیک و استفاده می شوند ، بدون لحیم کاری ، کابل ، تخته نان. enviro: bit را به micro: bit اضافه کنید ، کد خود را روی micro: bit بارگذاری کنید ، از آن استفاده کنید.

در این مورد من از micro ، power و enviro: bit استفاده کردم ، آنها را در یک کیسه Ziploc قرار دادم ، آن را در یک کیسه پلاستیکی ضد آب تمیز برای تلفن های همراه ، آماده قرار دادم. یک راه حل بسیار سریع و مرتب. تصاویر را ببینید. سوئیچ آنقدر بزرگ است که می توان از آن در لایه های محافظ استفاده کرد.

در آب آزمایش شده است ، خوب کار می کند. در عمق حدود 1.8 متر مقدار اندازه گیری شده در حدود 1.7 متر بود. برای راه حل سریع و ارزان چندان بد نیست ، اما از ایده آل بودن بسیار دور است.کمی طول می کشد تا تنظیم شود ، بنابراین ممکن است لازم باشد حدود 10-15 ثانیه در عمق خاصی بمانید.

مرحله 8: نسخه پروب کابل و سنسور

نسخه پروب کابل و سنسور
نسخه پروب کابل و سنسور
نسخه پروب کابل و سنسور
نسخه پروب کابل و سنسور

این در واقع اولین ایده ای بود که برای میکرو: عمق سنج بیت ، آخرین ایده ای بود که ساخته شد.

در اینجا من سنسور BMP280 را به 5 متر کابل 4 سیم چسباندم و بلوز زن را در انتهای دیگر قرار دادم. برای محافظت از سنسور در برابر آب ، کابل از طریق چوب پنبه شرابی استفاده می شد. انتهای چوب پنبه با چسب حرارتی مهر و موم شده است. قبل از اینکه من دو برش به چوب پنبه بریده بودم ، هر دو دور آن را می چرخاندم. سپس سنسور را درون یک توپ اسفنجی قرار دادم ، یک بادکنک در اطراف آن قرار دادم و انتهای بالن را روی چوب پنبه (سطح پایین) ثابت کردم. سپس 3 قطعه 40 گرم وزن سرب را در یک بادکنک دوم قرار دادم ، آن را در دور اول قرار دادم ، وزنه ها را در قسمت بیرونی قرار دادم و انتهای بالن را در شکاف دوم ثابت کردم. هوا از بالن دوم خارج شد ، سپس همه چیز با نوار چسب ثابت شد. تصاویر را مشاهده کنید ، تصاویر دقیق تر ممکن است در ادامه آمده باشد.

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

نتایج:

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

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

با برخی از اصلاحات خطا ، ممکن است از دستگاه برای اندازه گیری عمق تا حدود 4 متر استفاده شود.

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

چالش تناسب اندام در فضای باز
چالش تناسب اندام در فضای باز
چالش تناسب اندام در فضای باز
چالش تناسب اندام در فضای باز

نفر دوم در مسابقات تناسب اندام در فضای باز

توصیه شده: