Mundarija:

Mikro: bitli sho'ng'in: 8 qadam (rasmlar bilan)
Mikro: bitli sho'ng'in: 8 qadam (rasmlar bilan)

Video: Mikro: bitli sho'ng'in: 8 qadam (rasmlar bilan)

Video: Mikro: bitli sho'ng'in: 8 qadam (rasmlar bilan)
Video: buka buka raqisi yoqqan bõlsa bitta layk 2024, Iyul
Anonim
Micro: bit sho'ng'in-o'lchagich
Micro: bit sho'ng'in-o'lchagich
Micro: bit sho'ng'in-o'lchagich
Micro: bit sho'ng'in-o'lchagich
Micro: bit sho'ng'in-o'lchagich
Micro: bit sho'ng'in-o'lchagich

Yoz keldi, hovuz vaqti!

O'zingizni va mikro: o'zingizni suzish havzasiga, hatto tashqariga olib chiqish uchun yaxshi imkoniyat.

Bu erda tasvirlangan mikro: bit-sho'ng'in o'lchagichi-siz o'zingizni qanchalik chuqur yoki sho'ng'iganingizni o'lchash imkonini beruvchi oddiy DIY chuqurlik o'lchagichi. U faqat mikro: bit, batareya to'plami yoki LiPo, micro: bit uchun chekka ulagich, BMP280 yoki BME280 barometrik bosim sensori va ba'zi o'tish kabellaridan iborat. Pimoroni muhitidan foydalanish: bit hamma narsani soddalashtiradi. Bularning barchasi ikki qatlamli suv o'tkazmaydigan shaffof plastmassa yoki silikon qoplarga o'ralgan bo'lib, ko'tarilish kuchini qoplash uchun ozgina og'irlik qo'shilgan.

Bu men ilgari ko'rsatma bergan mikro: bit bosim sensori qurilmasining ilovasi.

Siz qurilmadan foydalanishingiz mumkin e. g. do'stlar va oila a'zolari bilan sho'ng'in musobaqalari uchun yoki bu hovuz qanchalik chuqurligini bilish uchun. Men uni mahalladagi eng chuqur hovuz yordamida sinab ko'rdim va u kamida 3,2 metr chuqurlikda ishlashini aniqladim. Taxminan besh metr - bu nazariy maksimal. Hozircha men uning aniqligini hech qanday tafsilot bilan sinab ko'rmadim, lekin bildirilgan raqamlar hech bo'lmaganda kutilgan diapazonda edi.

Ba'zi izohlar: bu haqiqiy g'avvoslar uchun vosita emas. Mikro: bit nam bo'lsa, shikastlanadi. Siz o'zingizning xavf -xataringiz uchun ushbu ko'rsatmalarni ishlatasiz.

27-mayni yangilang: Endi siz MakeCode HEX-skriptini topishingiz mumkin, uni to'g'ridan-to'g'ri micro: bit-ga yuklashingiz mumkin. 6 -qadamga qarang. 13 -iyunni yangilang: Enviro: bit va kabel versiyasi qo'shildi. 7 va 8 -qadamlarni ko'ring

1 -qadam: Qurilma orqasidagi nazariya

Biz havo okeanining tubida yashayapmiz. Bu erdagi bosim taxminan 1020 gPa (gektoPaskal) ni tashkil qiladi, chunki havo ustunining kosmosdagi og'irligi har kvadrat santimetr uchun taxminan 1 kg ni tashkil qiladi.

Suvning zichligi ancha yuqori, chunki bir litr havo og'irligi taxminan 1,2 g va bir litr suv 1 kg, ya'ni taxminan 800 barobar. Barometrik bosimning pasayishi har 8 metr balandlikda taxminan 1 gPa bo'lgani uchun, suv sathidan pastda har santimetrda 1 gPa bosim ortadi. Taxminan 10 m chuqurlikda bosim 2000 gPa yoki ikki atmosfera.

Bu erda ishlatiladigan bosim sensori taxminan bir hPa piksellar sonida 750 dan 1500 gPa gacha bo'lgan o'lchov diapazoniga ega. Bu shuni anglatadiki, biz 5 sm gacha chuqurliklarni taxminan 1 sm o'lchamda o'lchay olamiz.

Qurilma Boyl Marriotte tipidagi chuqurlik o'lchagichi bo'ladi. Uning yig'ilishi juda oddiy va keyingi bosqichda tasvirlangan. Sensor I2C protokolidan foydalanadi, shuning uchun micro: bit uchun chekka ulagich qulay bo'ladi. Eng muhim qismi suv o'tkazmaydigan sumkalardir, chunki har qanday namlik mikro: bit, sensor yoki batareyaga zarar etkazadi. Bir oz havo torbalar ichida tiqilib qolsa, og'irlik qo'shilishi ko'tarilish kuchini qoplashga yordam beradi.

2 -qadam: Qurilmadan foydalanish

Qurilmadan foydalanish
Qurilmadan foydalanish
Qurilmadan foydalanish
Qurilmadan foydalanish
Qurilmadan foydalanish
Qurilmadan foydalanish
Qurilmadan foydalanish
Qurilmadan foydalanish

Skript, keyingi bosqichda batafsil ko'rsatilgandek, men bosim o'lchagich uchun ilgari ishlab chiqqan skriptning o'zgarishi. Qurilmani sinab ko'rish uchun siz u erda tasvirlangan oddiy bosim kamerasidan foydalanishingiz mumkin.

Sho'ng'in uchun, o'lchovlar o'lchami bo'yicha hisoblangan chuqurlikni metrlarda, 20 sm qadamli chiziqli grafik yoki so'rov bo'yicha, raqamlar bilan ko'rsatadi.

Micro: bitdagi A tugmachasidan foydalanib, joriy bosimni mos yozuvlar bosimi qiymati sifatida o'rnatasiz. Kirishni tasdiqlash uchun matritsa bir marta miltillaydi.

Siz undan qanchalik chuqur sho'ng'ayotganingizni ko'rishingiz yoki sho'ng'iganingizni yozib olishingiz mumkin.

Birinchi holda, tashqi havo bosimini mos yozuvlar sifatida belgilang. Ikkinchi holda, bosimni bosimning eng chuqur nuqtasiga o'rnating, bu sizga sirtga qaytganingizda qanchalik chuqurligingizni ko'rsatishga imkon beradi. B tugmasi bosim farqidan hisoblangan chuqurlikni metrlar sonida ko'rsatadi.

3 -qadam: kerakli materiallar

Kerakli materiallar
Kerakli materiallar
Kerakli materiallar
Kerakli materiallar
Kerakli materiallar
Kerakli materiallar

Mikro: bit. Masalan, Pimoroni UK/DE da 13 GBP/16 evro.

Kenar ulagichi (Kitronic yoki Pimoroni), 5 GBP. Men Kitronic versiyasidan foydalandim.

BMP/BME280 sensori. Men Banggooddan BMP280 sensoridan foydalanganman, uch birlik uchun 4,33 evro.

Sensor va chekka ulagichni ulash uchun o'tish kabellari.

Yuqoridagi chekka ulagich/sensorlar kombinatsiyasiga ajoyib alternativ Pimoroni muhit bo'lishi mumkin: bit (hozircha sinovdan o'tkazilmagan, oxirgi bosqichga qarang).

Micro: bit uchun batareya to'plami yoki LiPo.

Kommutatorli quvvat kabeli (ixtiyoriy, lekin foydali). Toza suv o'tkazmaydigan sumkalar. Men uyali telefon uchun silikon sumkani va bitta yoki ikkita kichik ziplok sumkasidan foydalandim, materialning qalinligi etarlicha qalin ekanligiga ishonch hosil qiling, shuning uchun chekkadagi ulagichdagi pinlar sumkalarga zarar etkazmaydi.

Ba'zi og'irliklar. Men baliq ovlash uchun ishlatiladigan qo'rg'oshin vaznidan foydalanardim.

Arduino IDE va bir nechta kutubxonalar.

4 -qadam: yig'ish

O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish
O'rnatish

Arduino IDE va kerakli kutubxonalarni o'rnating. Tafsilotlar bu erda tasvirlangan.

(MakeCode skriptida talab qilinmaydi.) Agar siz Kitronik chekka ulagichidan foydalangan bo'lsangiz, 19 va 20 -sonli I2C portlariga lehim pimi qo'yiladi, bu Pimoroni qirrali ulagichi uchun shart emas. Sarlavhani sensorga lehimlang va sensori va chekka ulagichini o'tish kabellari yordamida ulang. VCC -ni 3V ga, GNDni 0 V ga, SCLni 19 -portga va SDA -ni 20 -portga ulang. Shu bilan bir qatorda kabellarni to'g'ridan -to'g'ri uzilishga lehimlang. Mikro: bitni kompyuterimizga USB kabeli orqali ulang. Taqdim etilgan skriptni oching va uni micro: bit -ga o'chiring. Ketma -ket monitor yoki plotterdan foydalaning, sensorning oqilona ma'lumot berishini tekshiring. Mikro: bitni kompyuterdan uzing. Batareyani yoki LiPo -ni mikro: bitga ulang. B tugmachasini bosing, qiymatni o'qing. A tugmasini bosing, B tugmasini bosing, qiymatni o'qing. Qurilmani havo o'tkazmaydigan sumkalarning ikki qatlamiga joylashtiring, bunda sumkalarda havo juda kam qoladi. Bunday holda, ko'tarilish kuchini qoplash uchun og'irlik qo'ying. Hammasi suv o'tkazmasligini tekshiring. Hovuzga boring va o'ynang.

5 -qadam: MicroPython skript

Skript sensordan bosim qiymatini oladi, uni mos yozuvlar qiymati bilan taqqoslaydi va keyin farqni chuqurligini hisoblab chiqadi. Qiymatlarni chiziqli grafik sifatida ko'rsatish uchun chuqurlik qiymatining butun soni va qolgan qismi olinadi. Birinchisi, chiziq balandligini belgilaydi. Qolganlari beshta idishga bo'linadi, ular barlarning uzunligini aniqlaydi. Yuqori sath - 0 - 1 m, eng pasti - 4-5 m. Yuqorida aytib o'tilganidek, "A" tugmachasini bosish mos yozuvlar bosimini o'rnatadi, "V" tugmasi "nisbiy chuqurlik" ni metr sifatida ko'rsatadi va raqamli qiymat sifatida ko'rsatiladi. Hozirgi vaqtda manfiy va musbat qiymatlar LED matritsadagi bargraf sifatida bir xil tarzda taqdim etiladi. Arduino IDE ketma -ket monitorida yoki chizgichida qiymatlarni ko'rsatish uchun siz ba'zi satrlarni o'chirib qo'yishingiz mumkin. Funktsiyani taqlid qilish uchun siz ilgari ko'rsatma berilgan qurilmani qurishingiz mumkin.

Men skriptning sensorni o'qiyotgan qismini yozmaganman. Manba haqida ishonchim komil emas, lekin men avtorlarga minnatdorchilik bildirmoqchiman. Optimallashtirish uchun har qanday tuzatishlar yoki maslahatlar qabul qilinadi.

#qo'shing

#Adafruit_Microbit_Matrix mikrobitini qo'shing; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; long int t_fine imzolangan; 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; ikki marta bosish_norm = 1015; // boshlang'ich qiymati ikki tomonlama chuqurlik; // hisoblangan chuqurlik // -------------------------------------------- -------------------------------------------------- ---------------------- void setup () {uint8_t osrs_t = 1; // Haddan tashqari namuna olish x 1 uint8_t osrs_p = 1; // Haddan tashqari namuna olish x 1 uint8_t osrs_h = 1; // Namlikdan ortiqcha namuna olish x 1 uint8_t rejimi = 3; // Oddiy rejim uint8_t t_sb = 5; // Tstandby 1000ms uint8_t filter = 0; // Filtrni o'chiring uint8_t spi3w_en = 0; // 3-simli SPI o'chirish uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | rejim; uint8_t config_reg = (t_sb << 5) | (filtr << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMod (PIN_BUTTON_A, INPUT); pinMod (PIN_BUTTON_B, INPUT); Serial.begin (9600); // ketma -ket port tezligini sozlash Serial.print ("Bosim [hPa]"); // ketma -ket chiqish uchun sarlavha Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); kechikish (1000); } // ----------------------------------------------- ---------------------------------------------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; long int temp_cal imzolangan; imzosiz uzoq int press_cal, hum_cal; int N; int M; ikki marta bosish_delta; // nisbiy bosim int chuqurlik_m; // metrdagi chuqurlik, ikki barobar chuqurlikdagi chuqurlik_cm; // sm qoldiqlari readData (); // temp_kal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); // hum_kal = kalibrlash_H (hum_raw); // temp_act = (ikki marta) temp_cal / 100.0; press_act = (ikki marta) press_cal / 100.0; // hum_act = (er -xotin) hum_cal / 1024.0; microbit.clear (); // LED matritsasini tiklash // A tugmasi haqiqiy qiymatni mos yozuvlar sifatida o'rnatadi (P nol) // B tugmasi joriy qiymatni metrda chuqurlik sifatida ko'rsatadi (bosim farqidan hisoblanadi), agar (! digitalRead (PIN_BUTTON_A)) {// normal havo bosimini o'rnating nol sifatida press_norm = press_act; // microbit.print ("P0:"); // microbit.print (press_norm, 0); // microbit.print ("hPa"); microbit.fillScreen (LED_ON); // kechikishni tasdiqlash uchun bir marta miltillash (100); } if if (! digitalRead (PIN_BUTTON_B)) {// metrni chuqurlikda ko'rsatish microbit.print (chuqurlik, 2); microbit.print ("m"); // Serial.println (""); } else {// bosim farqidan chuqurlikni hisoblang press_delta = (press_act - press_norm); // nisbiy bosim chuqurligini hisoblash = (press_delta/100); // metr chuqurlikdagi chuqurlik_m = int (abs (chuqurlik)); // chuqurlik im metr chuqurlik_cm = (abs (chuqurlik) - chuqurlik_m); // qoldiq /* // rivojlanish uchun ishlatiladi Serial.println (chuqurlik); Serial.println (chuqurlik_m); Serial.println (chuqurlik_cm); */ // Bargraf uchun qadamlar, agar (chuqurlik_sm> 0,8) {// chiziqlar uzunligini belgilang (N = 4); } if if (chuqurlik_sm> 0,6) {(N = 3); } if if (chuqurlik_sm> 0,4) {(N = 2); } if if (chuqurlik_sm> 0,2) {(N = 1); } boshqa {(N = 0); }

agar (chuqurlik_m == 4) {// darajani == metrga o'rnating

(M = 4); } if if (chuqurlik_m == 3) {(M = 3); } if if (chuqurlik_m == 2) {(M = 2); } if if (chuqurlik_m == 1) {(M = 1); } boshqa {(M = 0); // yuqori qator} /* // ishlab chiqish maqsadlarida ishlatiladi Serial.print ("m:"); Serial.println (chuqurlik_m); Serial.print ("sm:"); Serial.println (chuqurlik_cm); Serial.print ("M:"); Serial.println (M); // rivojlanish maqsadida Serial.print ("N:"); Serial.println (N); // rivojlanish maqsadlari uchun kechiktirish (500); */ // bargbit microbit.drawLine chizish (0, M, N, M, LED_ON); }

// plotter uchun ketma -ket portga qiymat yuborish

Serial.print (press_delta); // indikator chiziqlarini chizish va ko'rsatilgan qatorni tuzatish Serial.print ("\ t"); Serial.print (0); Serial.print ("\ t"); Ketma-ket chop etish (-500); Serial.print ("\ t"); Serial.println (500); kechikish (500); // Sekundiga ikki marta o'lchang} // ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // bmp/bme280 sensori uchun quyidagilar talab qilinadi, chunki u o'qilmagan holda o'qing ReadTrim () {uint8_t data [32], i = 0; // 2014 yil tuzatish/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // 2014 -yilni tuzatish (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // 2014/Wire.write -ni qo'shing (0xA1); // 2014/Wire.endTransmission () ni qo'shing; // 2014/Wire.requestFrom -ni qo'shing (BME280_ADDRESS, 1); // 2014 yil/ma'lumotlarni qo'shing = Wire.read (); // 2014/i ++ ni qo'shing; // 2014/Wire.beginTransmission (BME280_ADDRESS) ni qo'shing; Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // 2014 -yilni tuzatish (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (ma'lumotlar [1] << 8) | ma'lumotlar [0]; dig_P1 = (ma'lumotlar [7] << 8) | ma'lumotlar [6]; dig_P2 = (ma'lumotlar [9] << 8) | ma'lumotlar [8]; dig_P3 = (ma'lumotlar [11] << 8) | ma'lumotlar [10]; dig_P4 = (ma'lumotlar [13] << 8) | ma'lumotlar [12]; dig_P5 = (ma'lumotlar [15] << 8) | ma'lumotlar [14]; dig_P6 = (ma'lumotlar [17] << 8) | ma'lumotlar [16]; dig_P7 = (ma'lumotlar [19] << 8) | ma'lumotlar [18]; dig_T2 = (ma'lumotlar [3] << 8) | ma'lumotlar [2]; dig_T3 = (ma'lumotlar [5] << 8) | ma'lumotlar [4]; dig_P8 = (ma'lumotlar [21] << 8) | ma'lumotlar [20]; dig_P9 = (ma'lumotlar [23] << 8) | ma'lumotlar [22]; dig_H1 = ma'lumotlar [24]; dig_H2 = (ma'lumotlar [26] << 8) | ma'lumotlar [25]; dig_H3 = ma'lumotlar [27]; dig_H4 = (ma'lumotlar [28] << 4) | (0x0F va ma'lumotlar [29]); dig_H5 = (ma'lumotlar [30] 4) & 0x0F); // Tuzatish 2014/dig_H6 = ma'lumotlar [31]; // Tuzatish 2014/} bekorRegReg (uint8_t reg_address, uint8_t ma'lumotlar) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (ma'lumotlar); Wire.endTransmission (); } void readData () {int i = 0; uint32_t ma'lumotlari [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); i ++; } pres_raw = (ma'lumotlar [0] << 12) | (ma'lumotlar [1] 4); temp_raw = (ma'lumotlar [3] << 12) | (ma'lumotlar [4] 4); hum_raw = (ma'lumotlar [6] 3) - ((imzolangan uzoq int) dig_T1 11; var2 = (((((adc_T >> 4) - [(imzolangan uzun int) dig_T1)) * (((imzolangan uzun int) dig_T1))) >> 12) * ((imzolangan uzun int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; T ni qaytarish; } imzosiz uzun int kalibratsiya_P (imzolangan uzun int adc_P) {imzolangan uzun int var1, var2; imzosiz uzun int P; var1 = (((imzolangan uzun int) t_fine) >> 1) - (imzolangan uzun int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((imzolangan uzoq int) dig_P6); var2 = var2 + ((var1 * ((imzolangan uzoq int) dig_P5)) 2) + (((imzolangan uzun int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + (((((imzolangan uzun int) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768+var1))*((imzolangan uzoq int) dig_P1)) >> 15); if (var1 == 0) {qaytarish 0; } P = (((imzosiz uzun int) (((imzolangan uzun int) 1048576) -adc_P)-(var2 >> 12)))*3125; if (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } else {P = (P / (unsigned long int) var1) * 2; } var1 = (((imzolangan uzun int) dig_P9) * ((imzolangan uzun int) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((imzolangan uzun int) (P >> 2)) * ((imzolangan uzun int) dig_P8)) >> 13; P = (imzosiz uzun int) ((imzolangan uzun int) P + ((var1 + var2 + dig_P7) >> 4)); qaytarish P; } imzosiz long int calibration_H (imzolangan long int adc_H) {imzolangan long int v_x1; v_x1 = (t_fine - ((imzolangan uzoq int) 76800)); v_x1 = ((((((adc_H << 14) -(((imzolangan uzoq int) dig_H4) 15) * (((((((v_x1 * ((imzolangan uzun int) dig_H3)) >> 11) + ((imzolangan uzun int) 32768))) >> 10) + ((imzolangan uzun int) 2097152)) * ((imzolangan uzun int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) 7) * ((imzolangan uzoq int) dig_H1)) >> 4) v_x1 = (v_x1 419430400? 419430400: v_x1); qaytish (imzosiz uzoq int) (v_x1 >> 12);

6 -qadam: Katta soddalashtirish: MakeCode/JavaScript kodi

Asosiy soddalashtirish: MakeCode/JavaScript kodi
Asosiy soddalashtirish: MakeCode/JavaScript kodi
Asosiy soddalashtirish: MakeCode/JavaScript kodi
Asosiy soddalashtirish: MakeCode/JavaScript kodi

2018 yil may oyida Pimoroni BME280 bosim/namlik/harorat sensori, TCS3472 yorug'lik va rang sensori va MEMS mikrofoni bilan ta'minlangan muhit: bitni chiqardi. Bundan tashqari, ular MakeCode muharriri uchun JavaScript kutubxonasini va bu sensorlar uchun MicroPython kutubxonasini taklif qilmoqdalar.

Men qurilmam uchun skriptlarni ishlab chiqish uchun MakeCode kutubxonasidan foydalanganman. Siz to'g'ridan -to'g'ri micro: bit -ga nusxa ko'chirishingiz mumkin bo'lgan o'n oltilik fayllarni topasiz.

Quyida siz tegishli JavaScript kodini topasiz. Hovuzda test qilish skriptning oldingi versiyasi bilan yaxshi ishladi, shuning uchun ular ham ishlaydi deb o'ylayman. Bargrafning asosiy versiyasidan tashqari, ayniqsa, yorug'lik kam bo'lgan sharoitda o'qishni osonlashtirish uchun mo'ljallangan, o'zaro bog'liqlik (X) va L-versiya ham mavjud. O'zingizga yoqqanini tanlang.

ustun = 0 bo'lsin

Let Meter = 0 qolsin = 0 bo'lsin 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 ("" + Row + "." + qoladi " +" m ") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) if (Metr> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} if if (Meter> = 200) {Row = 2} if if (Meter> = 100)) {Row = 1} else {Row = 0} qoladi = Meter - Qator * 100 agar (qolsa> = 80) {ustun = 4} if (qolsa> = 60) {ustun = 3} if (qolsa> =) 40) {Column = 2} else if (qoladi> = 20) {Column = 1} else {Column = 0} for (ColA = 0 bo'lsin; ColA <= Column; ColA ++) {led.plot (C olA, Qator)} asosiy.pauza (500)}})

7 -qadam: Enviro: bit versiyasi

Enviro: bit versiyasi
Enviro: bit versiyasi
Enviro: bit versiyasi
Enviro: bit versiyasi
Enviro: bit versiyasi
Enviro: bit versiyasi

Bu orada men muhitni oldim: bit (20 GBP) va quvvat: bit (6 GBP), ikkalasi ham Pimoroni.

Yuqorida aytib o'tilganidek, muhit: bit BME280 bosimi, namlik va harorat sensori bilan birga yorug'lik va rang sensori (bu erda ilovaga qarang) va MEMS mikrofoni bilan birga keladi.

Quvvat: bit - bu mikro: bitni yoqish uchun yaxshi echim va uni yoqish/o'chirish tugmasi bilan birga keladi.

Ajoyib tomoni shundaki, bu ikkalasi ham bosish va ishlatishdir, lehimsiz, kabellar, non paneli. Enviro: bit -ni micro: bit -ga qo'shing, kodingizni micro: bit -ga yuklang, undan foydalaning.

Bu holda men micro, power va enviro: bit -ni ishlatardim, ularni Ziploc sumkachasiga joylashtirdim, uyali telefonlar uchun toza suv o'tkazmaydigan plastik to'rva ichiga joylashtirdim, tayyor. Juda tez va tartibli yechim. Rasmlarga qarang. Kalit uni himoya qatlamlari orqali ishlatish uchun etarlicha katta.

U suvda sinovdan o'tgan, yaxshi ishlagan. Taxminan 1,8 m chuqurlikda o'lchangan qiymat taxminan 1,7 m edi. Tez va arzon echim uchun yomon emas, lekin mukammal bo'lishdan uzoq. Sozlash uchun biroz vaqt ketadi, shuning uchun ma'lum chuqurlikda taxminan 10-15 soniya turish kerak bo'ladi.

8 -qadam: Kabel va sensorli prob versiyasi

Kabel va sensorli prob versiyasi
Kabel va sensorli prob versiyasi
Kabel va sensorli prob versiyasi
Kabel va sensorli prob versiyasi

Bu aslida mikro: bit chuqurlik o'lchagich uchun birinchi g'oya edi, oxirgi qurilgan.

Bu erda men BMP280 sensorini 5 simli 4 simli simga lehimladim va boshqa uchiga ayol o'tish moslamasini joylashtirdim. Sensorni suvdan himoya qilish uchun kabel ishlatilgan vino tiqinidan o'tdi. Mantarning uchlari issiq elim bilan yopilgan. Men mantarni ikkita tirqish bilan kesib olishimdan oldin, ikkalasi ham aylanib o'tdi. Keyin men datchikni gubka to'piga joylashtirdim, uning atrofiga shar qo'ydim va balonning uchini qo'ziqorin ustiga o'rnatdim (pastki chiziq). keyin men ikkinchi balonga 3 ta 40 g qo'rg'oshin og'irligini joylashtirdim, uni birinchisiga o'rab qo'ydim, og'irliklarini tashqi tomoniga qo'ydim va balonning uchini ikkinchi chuqurchaga o'rnatdim. Ikkinchi balondan havo chiqarildi, keyin hamma narsa yopishqoq lenta bilan o'rnatildi. Rasmlarni ko'ring, keyinroq batafsilroq bo'lishi mumkin.

O'tish moslamalari chekka ulagich orqali mikro: bitga ulangan, qurilma yoqilgan va mos yozuvlar bosimi o'rnatilgan. Keyin sensor boshi asta -sekin hovuz tubiga qo'yildi (10 m sakrash minorasi, chuqurligi taxminan 4,5 m).

Natijalar:

Ajablanarlisi shundaki, u hatto bu uzun kabel bilan ham ishlagan. Boshqa tomondan, lekin ajablanarli emas, o'lchov xatosi yuqori bosimlarda kattalashib ketganday tuyuldi va taxminan 4 m chuqurlik taxminan 3 metrni tashkil etdi.

Potentsial ilovalar:

Ba'zi xatoliklar tuzatilganda, qurilma taxminan 4 m chuqurlikni o'lchash uchun ishlatilishi mumkin.

Arduino yoki Raspberry Pi bilan birgalikda bu hovuz yoki suv idishining to'ldirish nuqtasini o'lchash va nazorat qilish uchun ishlatilishi mumkin, e, g. agar suv sathi ma'lum chegaralardan yuqori yoki pastroq bo'lsa, ogohlantirish chaqirish.

Ochiq havoda fitnes musobaqasi
Ochiq havoda fitnes musobaqasi
Ochiq havoda fitnes musobaqasi
Ochiq havoda fitnes musobaqasi

Ochiq havoda o'tkaziladigan fitnes musobaqasida yuguruvchi

Tavsiya: