جدول المحتويات:

A Micro: bit Dive-O-Meter: 8 خطوات (بالصور)
A Micro: bit Dive-O-Meter: 8 خطوات (بالصور)

فيديو: A Micro: bit Dive-O-Meter: 8 خطوات (بالصور)

فيديو: A Micro: bit Dive-O-Meter: 8 خطوات (بالصور)
فيديو: How to Tread Water in 3 Simple Steps 2024, يوليو
Anonim
مايكرو: بت الغوص- O- متر
مايكرو: بت الغوص- O- متر
مايكرو: بت الغوص- O- متر
مايكرو: بت الغوص- O- متر
مايكرو: بت الغوص- O- متر
مايكرو: بت الغوص- O- متر

حل الصيف ، حان وقت السباحة!

فرصة جيدة لأخذ نفسك و micro: bit بالخارج ، وفي هذه الحالة حتى داخل حوض السباحة.

مقياس micro: bit dive-o-meter الموصوف هنا هو مقياس عمق DIY بسيط يسمح لك بقياس مدى عمق الغوص أو ما كنت عليه. إنه يتألف فقط من micro: bit ، وحزمة بطارية أو LiPo ، وموصل حافة للـ micro: bit ، ومستشعر الضغط الجوي BMP280 أو BME280 وبعض كبلات التوصيل. استخدام Pimoroni enviro: bit يجعل الأمور أكثر بساطة. يتم تعبئة كل هذا في طبقتين من أكياس بلاستيكية أو سيليكون شفافة مانعة لتسرب الماء ، مع إضافة بعض الأوزان لتعويض قوة الطفو.

إنه تطبيق لجهاز استشعار الضغط micro: bit الذي وصفته في تعليمات سابقة.

يجوز لك استخدام الجهاز e. ز. لمسابقات الغوص مع الأصدقاء والعائلة ، أو لمعرفة مدى عمق هذه البركة حقًا. لقد اختبرت ذلك باستخدام أعمق حوض سباحة في جواري ، ووجدت أنه يعمل على الأقل حتى عمق 3.2 متر. حوالي خمسة أمتار هو الحد الأقصى النظري. حتى الآن لم أختبر دقتها بأي تفاصيل ، لكن الأرقام المبلغ عنها كانت على الأقل في النطاق المتوقع.

بعض الملاحظات: لا يُقصد بهذه الأداة أن تكون أداة للغواصين الحقيقيين. سوف يتلف جهاز micro: bit إذا تعرض للبلل. أنت تستخدم هذا الدليل على مسؤوليتك الخاصة.

تحديث 27 مايو: يمكنك الآن العثور على برنامج MakeCode HEX-script الذي يمكنك تحميله مباشرة إلى micro: bit الخاص بك. راجع الخطوة 6: تحديث 13 يونيو: تمت إضافة Enviro: بت وإصدار كابل. راجع الخطوتين 7 و 8

الخطوة 1: النظرية وراء الجهاز

نحن نعيش في قاع محيط من الهواء. يبلغ الضغط هنا حوالي 1020 هيكتوباسكال (هيكتوباسكال) حيث يبلغ وزن عمود الهواء المتشكل هنا إلى الفضاء حوالي 1 كجم لكل سنتيمتر مربع.

كثافة الماء أعلى بكثير ، حيث يزن لتر واحد من الهواء حوالي 1.2 جرام ولتر واحد من الماء 1 كجم ، أي حوالي 800 ضعف. وبما أن الانخفاض في الضغط الجوي يبلغ حوالي 1 هيكتوباسكال لكل 8 أمتار في الارتفاع ، فإن كسب الضغط هو 1 هيكتوباسكال لكل سنتيمتر تحت سطح الماء. على عمق حوالي 10 أمتار ، يكون الضغط 2000 hPa ، أو غلافان جويان.

يمتلك مستشعر الضغط المستخدم هنا نطاق قياس يتراوح بين 750 و 1500 هيكتوباسكال بدقة تبلغ حوالي هيكتوباسكال واحد. هذا يعني أنه يمكننا قياس أعماق تصل إلى 5 أمتار بدقة تبلغ حوالي 1 سم.

سيكون الجهاز عبارة عن مقياس عمق من نوع Boyle Marriotte. تجميعها بسيط للغاية ويتم وصفه في خطوة لاحقة. يستخدم المستشعر بروتوكول I2C ، لذلك يكون موصل الحافة لـ micro: bit سهل الاستخدام. الجزء الأكثر أهمية هو الأكياس المانعة لتسرب الماء ، حيث إن أي رطوبة ستؤدي إلى إتلاف micro: bit أو المستشعر أو البطارية. نظرًا لأن بعض الهواء سيحتجز داخل الأكياس ، فإن إضافة الأوزان تساعد في تعويض قوة الطفو.

الخطوة الثانية: استخدام الجهاز

استخدام الجهاز
استخدام الجهاز
استخدام الجهاز
استخدام الجهاز
استخدام الجهاز
استخدام الجهاز
استخدام الجهاز
استخدام الجهاز

البرنامج النصي ، كما هو موضح بالتفصيل في خطوة لاحقة ، هو تباين في البرنامج النصي الذي قمت بتطويره مسبقًا لمقياس الضغط. لاختبار الجهاز ، يمكنك استخدام غرفة الضغط البسيطة الموضحة هناك.

لأغراض الغوص ، يوضح العمق بالأمتار ، كما هو محسوب من قياسات الضغط ، إما كرسم بياني شريطي بخطوات 20 سم أو ، عند الطلب ، بالأرقام.

باستخدام الزر A على micro: bit ، ستقوم بتعيين الضغط الحالي كقيمة مرجعية للضغط. لتأكيد الإدخال ، تومض المصفوفة مرة واحدة.

يمكنك استخدام هذا إما لمعرفة مدى عمق الغوص ، أو لتسجيل مدى عمق الغوص.

في الحالة الأولى ، اضبط ضغط الهواء الخارجي الحالي كمرجع. في الحالة الثانية ، اضبط الضغط عند أعمق نقطة تكون فيها كمرجع للضغط ، مما يسمح لك بعد ذلك بإظهار مدى العمق الذي كنت عليه عندما كنت على السطح مرة أخرى. يعرض الزر B العمق ، المحسوب من فرق الضغط ، كقيمة عددية بالأمتار.

الخطوة 3: المواد المطلوبة

المواد المطلوبة
المواد المطلوبة
المواد المطلوبة
المواد المطلوبة
المواد المطلوبة
المواد المطلوبة

مايكرو: بت. على سبيل المثال بسعر 13 جنيهًا إسترلينيًا / 16 يورو في Pimoroni UK / DE.

موصل حافة (Kitronic أو Pimoroni) ، 5 جنيه إسترليني. لقد استخدمت إصدار Kitronic.

مستشعر BMP / BME280. لقد استخدمت مستشعر BMP280 من Banggood ، 4.33 يورو لثلاث وحدات.

كبلات توصيل لتوصيل المستشعر وموصل الحافة.

يمكن أن يكون Pimoroni enviro: bit بديلاً ممتازًا لمجموعة الموصل / المستشعر الحافة أعلاه (لم يتم اختباره الآن ، انظر الخطوة الأخيرة).

حزمة بطارية أو LiPo للمايكرو بت.

كابل طاقة بمفتاح (اختياري ولكنه مفيد) أكياس شفافة مانعة لتسرب الماء. لقد استخدمت كيسًا من السيليكون للهاتف المحمول وواحدًا أو اثنين من أكياس ziploc الصغيرة. تأكد من أن المادة سميكة بدرجة كافية ، حتى لا تتلف المسامير الموجودة على الموصل الطرفي الأكياس.

بعض الأوزان. لقد استخدمت قطعًا من الرصاص تستخدم في الصيد.

Arduino IDE والعديد من المكتبات.

الخطوة 4: التجميع

المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
المجسم
المجسم

قم بتثبيت Arduino IDE والمكتبات المطلوبة. التفاصيل موصوفة هنا.

(ليس مطلوبًا لنص MakeCode.) نظرًا لأنك تستخدم موصل حافة Kitronik ، فإن دبابيس اللحام بمنافذ I2C 19 & 20 ليست مطلوبة لموصل حافة Pimoroni. قم بتوصيل رأس جهاز الاستشعار وتوصيل المستشعر وموصل الحافة باستخدام كبلات التوصيل. قم بتوصيل VCC بـ 3V ، GND بـ 0 V ، 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 بنفس الطريقة. لا تتردد في تحسين البرنامج النصي لاحتياجاتك. يمكنك إلغاء كتم صوت خطوط معينة لتقديم القيم على الشاشة التسلسلية أو الراسمة الخاصة بـ Arduino IDE. لمحاكاة الوظيفة ، يمكنك إنشاء الجهاز الذي وصفته في تعليمات سابقة.

لم أكتب جزء النص الذي يقرأ جهاز الاستشعار. لست متأكدًا من المصدر ، لكني أود أن أشكر المؤلفين. نرحب بأي تصحيحات أو تلميحات للتحسين.

#يشمل

# تضمين ميكروبيت Adafruit_Microbit_Matrix ؛ #define BME280_ADDRESS 0x76 غير موقعة طويلة 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 ؛ ضغط مزدوج = 1015 ؛ // قيمة ابتدائية مزدوجة العمق ؛ // العمق المحسوب // -------------------------------------------- -------------------------------------------------- ---------------------- إعداد باطل () {uint8_t osrs_t = 1؛ // تجاوز درجة الحرارة × 1 uint8_t osrs_p = 1 ؛ // الضغط الزائد x 1 uint8_t osrs_h = 1 ؛ // زيادة أخذ عينات الرطوبة × 1 وضع uint8_t = 3 ؛ // الوضع العادي uint8_t t_sb = 5 ؛ // Tstandby 1000ms uint8_t filter = 0 ؛ // تصفية uint8_t spi3w_en = 0 ؛ // 3-wire SPI Disable uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | الوضع؛ uint8_t config_reg = (t_sb << 5) | (مرشح << 2) | spi3w_ar ؛ 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 ؛ الصحافة_cal ، hum_cal كثافة العمليات طويلة بدون توقيع ؛ كثافة العمليات N ؛ كثافة العمليات م ؛ اضغط مرتين // عمق الضغط النسبي int_m ؛ // العمق بالأمتار ، الجزء الصحيح عمق مزدوج_ سم ؛ // الباقي في سم 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 ("م") ؛ // Serial.println ("") ؛ } else {// احسب العمق من فرق الضغط press_delta = (press_act - press_norm) ؛ // حساب عمق الضغط النسبي = (press_delta / 100) ؛ // العمق بالأمتار deep_m = int (القيمة المطلقة (العمق)) ؛ // العمق im متر العمق_ سم = (القيمة المطلقة (العمق) - العمق_ م) ؛ // باقي / * // المستخدمة لتطوير Serial.println (العمق) ؛ Serial.println (عمق _ م) ؛ Serial.println (عمق _ سم) ؛ * / // خطوات الرسم البياني إذا كان (عمق _ سم> 0.8) {// ضبط طول القضبان (N = 4) ؛ } وإلا إذا (عمق _ سم> 0.6) {(عدد = 3) ؛ } وإلا إذا (عمق_ سم> 0.4) {(ن = 2) ؛ } وإلا إذا (عمق _ سم> 0.2) {(ن = 1) ؛ } آخر {(N = 0) ؛ }

إذا (عمق_م == 4) {// تعيين المستوى == متر

(م = 4) ؛ } وإلا إذا (عمق_م == 3) {(م = 3) ؛ } وإلا إذا (عمق_م == 2) {(م = 2) ؛ } وإلا إذا (عمق_م == 1) {(م = 1) ؛ } آخر {(M = 0) ؛ // الصف العلوي} / * // المستخدمة لأغراض التطوير Serial.print ("m:")؛ Serial.println (عمق _ م) ؛ Serial.print ("سم:") ؛ Serial.println (عمق _ سم) ؛ 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 () ؛ Wire.request From (BME280_ADDRESS ، 24) ، // إصلاح 2014 / while (Wire.available ()) {data = Wire.read () ؛ أنا ++ ؛ } Wire.beginTransmission (BME280_ADDRESS) ؛ // إضافة 2014 / Wire.write (0xA1) ؛ // إضافة 2014 / Wire.endTransmission () ؛ // إضافة 2014 / Wire.requestFrom (BME280_ADDRESS، 1) ؛ // إضافة 2014 / البيانات = Wire.read () ؛ // إضافة 2014 / i ++ ؛ // إضافة 2014 / Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xE1) ؛ Wire.endTransmission () ؛ Wire.request From (BME280_ADDRESS، 7) ، // إصلاح 2014 / while (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 () ؛ } readData () باطل {int i = 0 ؛ uint32_t data [8] ؛ Wire.beginTransmission (BME280_ADDRESS) ؛ Wire.write (0xF7) ؛ Wire.endTransmission () ؛ Wire.request From (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) dig_T1 11 ؛ var2 = (((((adc_T >> 4) - ((موقع طويل int) dig_T1)) * ((adc_T >> 4) - ((توقيع طويل int) dig_T1))) >> 12) * ((توقيع طويل int) dig_T3)) >> 14 ؛ t_fine = var1 + var2 ؛ T = (t_fine * 5 + 128) >> 8 ؛ إرجاع T ؛ } long int calibration_P غير الموقعة (توقيع طويل int adc_P) {موقع long int var1، var2؛ unsigned long int P؛ var1 = (((علامة طويلة int) t_fine) >> 1) - (موقع طويل int) 64000؛ var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((int long int) dig_P6) ؛ var2 = var2 + ((var1 * ((Sign long int) dig_P5)) 2) + (((توقيع طويل int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((علامة طويلة int) dig_P2) * var1) >> 1)) >> 18 ؛ var1 = ((((32768 + var1)) * ((توقيع عدد صحيح طويل) dig_P1)) >> 15) ؛ إذا (var1 == 0) {إرجاع 0 ؛ } P = (((int long int) (((علامة طويلة int) 1048576) -adc_P) - (var2 >> 12))) * 3125 ؛ إذا (P <0x80000000) {P = (P << 1) / ((عدد صحيح طويل بدون إشارة) var1) ؛ } else {P = (P / (unsigned long int) var1) * 2 ؛ } var1 = (((علامة طويلة int) dig_P9) * ((علامة int طويلة) (((P >> 3) * (P >> 3)) >> 13))) >> 12 ؛ var2 = (((علامة int طويلة) (P >> 2)) * ((علامة int طويلة) dig_P8)) >> 13 ؛ P = (int long int) ((علامة طويلة int) P + ((var1 + var2 + dig_P7) >> 4)) ؛ عودة P ؛ } long int calibration_H غير الموقعة (long int adc_H) {signature long int v_x1؛ v_x1 = (t_fine - ((توقيع عقد طويل) 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) + ((توقيع طويل 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) ؛ إرجاع (عدد صحيح طويل بدون توقيع) (v_x1 >> 12) ؛

الخطوة 6: تبسيط رئيسي: MakeCode / JavaScript Code

تبسيط كبير: كود MakeCode / JavaScript
تبسيط كبير: كود MakeCode / JavaScript
تبسيط كبير: كود MakeCode / JavaScript
تبسيط كبير: كود MakeCode / JavaScript

في مايو 2018 ، أصدرت بيموروني enviro: bit ، الذي يأتي مع مستشعر ضغط / رطوبة / درجة حرارة BME280 ، ومستشعر إضاءة ولون TCS3472 وميكروفون MEMS. بالإضافة إلى ذلك ، يقدمون مكتبة JavaScript لمحرر MakeCode ومكتبة MicroPython لهذه المستشعرات.

لقد كنت أستخدم مكتبة MakeCode الخاصة بهم لتطوير البرامج النصية لجهازي. تجد مرفقًا الملفات السداسية وفقًا لذلك ، والتي يمكنك نسخها مباشرة إلى micro: bit الخاص بك.

تجد أدناه رمز JavaScript المقابل. نجح الاختبار في المسبح بشكل جيد مع إصدار سابق من البرنامج النصي ، لذلك أفترض أنهما سيعملان أيضًا. بالإضافة إلى الإصدار الأساسي ، إصدار الرسم البياني ، هناك أيضًا إصدار متقاطع (X) ونسخة L ، تهدف إلى تسهيل القراءة ، خاصة في ظروف الإضاءة المنخفضة. اختر الشخص الذي تفضله.

دع العمود = 0

دع العداد = 0 دعنا يبقى = 0 دع الصف = 0 دع دلتا = 0 دع المرجع = 0 دع هو = 0 هو = 1012 basic.showLeds (`# # # # # #.. # #. #. # #.. # # # # # # `) المرجع = 1180 basic.clearScreen () basic.forever (() => {basic.clearScreen () if (input.buttonIsPressed (Button. A)) {Ref = envirobit.getPressure () مصابيح العرض الأساسية ("#. #. #. #. #. # # # # #. #. #. #. #. #`) basic.pause (1000)} وإلا إذا (المدخلات.) {basic.showString ("" + Row + "." + stay + "m") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) if (العداد> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100) {Row = 1} else {Row = 0} تبقى = العداد - الصف * 100 إذا (تبقى> = 80) {العمود = 4} وإلا إذا (تبقى> = 60) {العمود = 3} وإلا إذا (تبقى> = 40) {Column = 2} else if (stay> = 20) {Column = 1} else {Column = 0} لـ (let ColA = 0؛ ColA <= Column؛ ColA ++) {led.plot (C olA، Row)} basic.pause (500)}})

الخطوة 7: إصدار Enviro: bit

Enviro: إصدار بت
Enviro: إصدار بت
Enviro: إصدار بت
Enviro: إصدار بت
Enviro: إصدار بت
Enviro: إصدار بت

في غضون ذلك تلقيت enviro: bit (20 جنيهًا إسترلينيًا) والقوة: bit (6 جنيهات إسترلينية) ، وكلاهما من Pimoroni.

كما ذكرنا سابقًا ، يأتي enviro: bit مع مستشعر الضغط والرطوبة ودرجة الحرارة 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 جم من أوزان الرصاص في بالون ثان ، ولفتها حول الأول ، ووضعت أوزانًا على الجانب الخارجي ، وثبّتت نهاية البالون في الدرجة الثانية. تمت إزالة الهواء من البالون الثاني ، ثم تم إصلاح كل شيء بشريط لاصق. انظر إلى الصور ، قد يتبعها المزيد من التفاصيل.

تم توصيل وصلات العبور بـ micro: bit عبر موصل حافة ، وتم تشغيل الجهاز وضبط الضغط المرجعي. ثم تم تحرير رأس المستشعر ببطء إلى قاع البركة (برج قفز 10 أمتار ، وعمق حوالي 4.5 متر).

نتائج:

لدهشتي ، عملت حتى مع هذا الكابل الطويل. من ناحية أخرى ، ولكن ليس من المستغرب ، يبدو أن خطأ القياس أصبح أكبر عند الضغوط العالية ، وتم الإبلاغ عن عمق يقدر بـ 4 أمتار بحوالي 3 أمتار.

التطبيقات المحتملة:

مع بعض تصحيحات الأخطاء ، يمكن استخدام الجهاز لقياس العمق إلى حوالي 4 أمتار.

بالاقتران مع Arduino أو Raspberry Pi ، يمكن استخدام هذا لقياس والتحكم في نقطة ملء حوض السباحة أو خزان المياه ، على سبيل المثال ، g. لإثارة تحذير إذا كانت مستويات المياه أعلى أو أقل من عتبات معينة.

تحدي اللياقة في الهواء الطلق
تحدي اللياقة في الهواء الطلق
تحدي اللياقة في الهواء الطلق
تحدي اللياقة في الهواء الطلق

الوصيف في تحدي اللياقة في الهواء الطلق

موصى به: