Turinys:

„Micro: bit Dive-O-Meter“: 8 žingsniai (su nuotraukomis)
„Micro: bit Dive-O-Meter“: 8 žingsniai (su nuotraukomis)

Video: „Micro: bit Dive-O-Meter“: 8 žingsniai (su nuotraukomis)

Video: „Micro: bit Dive-O-Meter“: 8 žingsniai (su nuotraukomis)
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Liepa
Anonim
„Micro: bit Dive-O-Meter“
„Micro: bit Dive-O-Meter“
„Micro: bit Dive-O-Meter“
„Micro: bit Dive-O-Meter“
„Micro: bit Dive-O-Meter“
„Micro: bit Dive-O-Meter“

Vasara jau čia, laikas baseinui!

Gera proga išsinešti save ir savo mikro: į lauką, o šiuo atveju net į baseiną.

Čia aprašytas mikro: bitų nardymo-metras yra paprastas „pasidaryk pats“gylio matuoklis, leidžiantis išmatuoti, kiek giliai nardai. Jį sudaro tik „micro: bit“, akumuliatorių paketas arba „LiPo“, „micro: bit“kraštinė jungtis, BMP280 arba BME280 barometrinio slėgio jutiklis ir kai kurie jungiamieji kabeliai. Naudojant „Pimoroni enviro: bit bit“viskas tampa vis paprasčiau. Visa tai supakuota į du vandens nepraleidžiančio skaidraus plastiko ar silikono maišelių sluoksnius, pridedant tam tikrų svorių, kad būtų kompensuota plūduriuojanti jėga.

Tai yra „micro: bit“slėgio jutiklio įrenginio, kurį aprašiau ankstesnėje instrukcijoje, taikymas.

Prietaisą galite naudoti el. g. nardymo varžyboms su draugais ir šeima ar sužinoti, koks gilus tas tvenkinys. Aš išbandžiau jį naudodami giliausią savo apylinkių baseiną ir sužinojau, kad jis veikia bent iki 3,2 metro gylio. Maždaug penki metrai yra teorinis maksimumas. Iki šiol nesu išsamiai išbandęs jo tikslumo, tačiau pateikti skaičiai buvo bent numatytoje riboje.

Keletas pastabų: tai nėra įrankis tikriems narams. Jūsų mikro: antgalis bus sugadintas, jei sušlaps. Jūs naudojate šią instrukciją savo rizika.

Atnaujinimas gegužės 27 d.: Dabar galite rasti „MakeCode HEX“scenarijų, kurį galite įkelti tiesiai į „micro: bit“. Žr. 6 veiksmą. Atnaujinti birželio 13 d. Pridėta „Enviro: bit“ir kabelio versija. Žr. 7 ir 8 veiksmus

1 žingsnis: teorija už prietaiso

Mes gyvename oro vandenyno dugne. Slėgis čia yra apie 1020 hPa (hectoPascal), nes oro kolonėlės svoris čia yra apie 1 kg kvadratiniam centimetrui.

Vandens tankis yra daug didesnis, nes vienas litras oro sveria apie 1,2 g, o vienas litras vandens-1 kg, t. Taigi, kadangi barometrinio slėgio kritimas yra apie 1 hPa kas 8 metrų aukščio, slėgio padidėjimas yra 1 hPa už kiekvieną centimetrą žemiau vandens paviršiaus. Maždaug 10 m gylyje slėgis yra 2000 hPa arba dvi atmosferos.

Čia naudojamo slėgio jutiklio matavimo diapazonas yra nuo 750 iki 1500 hPa, esant maždaug vienai hPa. Tai reiškia, kad mes galime išmatuoti gylį iki 5 metrų esant maždaug 1 cm raiškai.

Prietaisas būtų „Boyle Marriotte“tipo gylio matuoklis. Jo surinkimas yra gana paprastas ir aprašytas vėliau. Jutiklis naudoja I2C protokolą, todėl „micro: bit“krašto jungtis yra patogi. Svarbiausia dalis yra vandeniui nelaidūs maišeliai, nes bet kokia drėgmė sugadins mikro: bitą, jutiklį ar bateriją. Kadangi maišų viduje bus įstrigęs šiek tiek oro, pridėjus svorių, galima kompensuoti plūduriuojančią jėgą.

2 žingsnis: Įrenginio naudojimas

Prietaiso naudojimas
Prietaiso naudojimas
Prietaiso naudojimas
Prietaiso naudojimas
Prietaiso naudojimas
Prietaiso naudojimas
Prietaiso naudojimas
Prietaiso naudojimas

Raštas, kaip išsamiai parodyta vėliau, yra scenarijaus variantas, kurį anksčiau sukūriau slėgio matuokliui. Norėdami išbandyti prietaisą, galite naudoti ten aprašytą paprastą slėgio kamerą.

Nardymo tikslais jis rodo gylį metrais, apskaičiuotą pagal slėgio matavimus, arba kaip juostinę diagramą 20 cm žingsniais, arba, paprašius, skaičiais.

Naudodami „micro: bit“mygtuką A, dabartinį slėgį nustatysite kaip atskaitos slėgio vertę. Norėdami patvirtinti įvestį, matrica vieną kartą sumirksi.

Tai galite naudoti norėdami pamatyti, kiek giliai nardote, arba užfiksuoti, kiek giliai nardėte.

Pirmuoju atveju nustatykite dabartinį išorinį oro slėgį kaip atskaitą. Antruoju atveju nustatykite slėgį giliausioje vietoje, kur esate, kaip slėgio atskaitos tašką, kuris leidžia jums parodyti, koks gilus buvote grįžęs į paviršių. Mygtukas B rodo gylį, apskaičiuotą pagal slėgio skirtumą, kaip skaitinę vertę metrais.

3 žingsnis: reikalingos medžiagos

Reikalingos medžiagos
Reikalingos medžiagos
Reikalingos medžiagos
Reikalingos medžiagos
Reikalingos medžiagos
Reikalingos medžiagos

Mikro: bit. Pvz. po 13 GBP/16 eurų „Pimoroni UK/DE“.

Kraštinė jungtis („Kitronic“arba „Pimoroni“), 5 GBP. Aš naudojau „Kitronic“versiją.

BMP/BME280 jutiklis. Aš naudoju BMP280 jutiklį iš „Banggood“, 4,33 euro už tris vienetus.

Jungiamieji kabeliai, skirti jutikliui ir krašto jungčiai prijungti.

Puiki alternatyva aukščiau esančiam krašto jungties/jutiklio deriniui galėtų būti „Pimoroni enviro: bit“(kol kas neišbandyta, žr. Paskutinį žingsnį).

Akumuliatorius arba „LiPo“, skirtas „micro: bit“.

Maitinimo kabelis su jungikliu (neprivaloma, bet naudinga). Išvalykite vandeniui nelaidžius maišelius. Aš naudoju silikoninį maišelį mobiliam telefonui ir vieną ar du mažus ziploc maišelius. Įsitikinkite, kad medžiaga yra pakankamai stora, todėl krašto jungties kaiščiai nepažeis maišelių.

Kai kurie svoriai. Aš naudojau švino svorio gabalus, kurie naudojami žvejybai.

„Arduino IDE“ir kelios bibliotekos.

4 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Įdiekite „Arduino IDE“ir reikalingas bibliotekas. Išsami informacija aprašyta čia.

(Nereikalingas „MakeCode“scenarijui.) Kadangi naudojate „Kitronik“kraštinę jungtį, lituokite kaiščius prie I2C prievadų 19 ir 20. Tai nereikalinga „Pimoroni“krašto jungčiai. Lituokite antraštę prie jutiklio ir išjunkite jutiklį ir krašto jungtį, naudodami trumpiklius. Prijunkite VCC prie 3 V, GND prie 0 V, SCL prie 19 prievado ir SDA prie 20 prievado. Kitu atveju lituokite kabelius tiesiai prie pertraukos. Prijunkite „micro: bit“prie mūsų kompiuterio USB kabeliu. Atidarykite pateiktą scenarijų ir paleiskite jį į „micro: bit“. Naudokite serijinį monitorių ar braižytuvą, patikrinkite, ar jutiklis pateikia pagrįstus duomenis. Atjunkite „micro: bit“nuo kompiuterio. Prijunkite bateriją arba „LiPo“prie „micro: bit“. Paspauskite mygtuką B, perskaitykite vertę Paspauskite mygtuką A. Paspauskite mygtuką B, perskaitykite vertę. Įdėkite prietaisą į du hermetiškų maišų sluoksnius, palikdami maišuose tik labai mažai oro. Jei reikia, padėkite svorį, kad kompensuotumėte plūdrumo jėgą. Patikrinkite, ar viskas nepralaidi vandeniui. Eik į baseiną ir žaisk.

5 žingsnis: „MicroPython“scenarijus

Scenarijus tiesiog paima slėgio vertę iš jutiklio, lygina ją su pamatine verte ir tada apskaičiuoja gylį iš skirtumo. Norint rodyti reikšmes kaip juostinę diagramą, imamas sveikasis skaičius ir likusi gylio vertės dalis. Pirmasis apibrėžia linijos aukštį. Likusi dalis suskirstyta į penkias dėžes, kurios apibrėžia strypų ilgį. Viršutinis lygis yra 0 - 1 m, žemiausias - 4 m. Kaip minėta anksčiau, paspaudus mygtuką A nustatomas atskaitos slėgis, mygtukas B rodo „santykinį gylį“metrais, rodomą kaip skaitinė vertė. Iki šiol neigiamos ir teigiamos vertės LED matricoje pateikiamos kaip juostos diagrama. Nesivaržykite optimizuoti scenarijų pagal savo poreikius. Galite įjungti tam tikrų eilučių garsą, kad pateiktumėte vertes „Arduino IDE“serijos monitoriuje arba braižytuve. Norėdami imituoti funkciją, galite sukurti įrenginį, kurį aprašiau ankstesnėje instrukcijoje.

Aš neparašiau tos scenarijaus dalies, kurioje nuskaitomas jutiklis. Dėl šaltinio nesu tikras, bet norėčiau padėkoti autoriams. Bet kokie pataisymai ar patarimai dėl optimizavimo yra laukiami.

#įtraukti

#įtraukti „Adafruit_Microbit_Matrix“mikrobitą; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; pasirašytas ilgas 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; dvigubas paspaudimas_normas = 1015; // pradinė vertė dvigubas gylis; // apskaičiuotas gylis // -------------------------------------------- -------------------------------------------------- ---------------------- void setup () {uint8_t osrs_t = 1; // Temperatūros viršijimas x 1 uint8_t osrs_p = 1; // Slėgio perteklius x 1 uint8_t osrs_h = 1; // Drėgmės perteklius x 1 uint8_t režimas = 3; // Normalus režimas uint8_t t_sb = 5; // Budėjimo režimas 1000ms uint8_t filter = 0; // Išfiltruoti uint8_t spi3w_en = 0; // 3 laidų SPI Išjungti uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | režimas; uint8_t config_reg = (t_sb << 5) | (filtras << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Serial.begin (9600); // nustatyti serijinio prievado greitį Serial.print ("Slėgis [hPa]"); // serijos išvesties antraštė Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); vėlavimas (1000); } // ----------------------------------------------- ---------------------------------------------- void loop () {dvigubas temp_act = 0.0, press_act = 0.0, hum_act = 0.0; pasirašytas ilgas int temp_cal; unsigned long int press_cal, hum_cal; int N; int M; dvigubas spaudimas_delta; // santykinis slėgis int gylis_m; // gylis metrais, sveika dalis dvigubas gylis_cm; // likusi dalis cm readData (); // temp_cal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); // hum_cal = calibration_H (hum_raw); // temp_act = (dvigubas) temp_cal / 100.0; press_act = (dvigubas) press_cal / 100.0; // hum_act = (dvigubas) hum_cal / 1024,0; microbit.clear (); // iš naujo nustatyti LED matricą // Mygtukas A nustato faktinę vertę kaip atskaitą (P nulis) // Mygtukas B rodo dabartinę vertę kaip gylį metrais (apskaičiuojant pagal slėgio skirtumą), jei (! digitalRead (PIN_BUTTON_A)) {// nustatyti normalų oro slėgį kaip nulis press_norm = press_act; // microbit.print ("P0:"); // microbit.print (spausti_norm, 0); // microbit.print ("hPa"); microbit.fillScreen (LED_ON); // vieną kartą sumirksėkite, kad patvirtintumėte vėlavimą (100); } else if (! digitalRead (PIN_BUTTON_B)) {// rodomas gylis metrais microbit.print (gylis, 2); microbit.print („m“); // Serial.println (""); } else {// apskaičiuoti gylį iš slėgio skirtumo press_delta = (press_act - press_norm); // apskaičiuoti santykinį slėgio gylį = (press_delta/100); // gylis metrais gylis_m = int (abs (gylis)); // gylis im metrai gylis_cm = (abs (gylis) - gylis_m); // likutis /* // naudojamas kūrimui Serial.println (gylis); Serial.println (gylis_m); Serial.println (gylis_cm); */ // Juostos diagramos žingsniai, jei (gylis_cm> 0,8) {// nustatomas strypų ilgis (N = 4); } else if (gylis_cm> 0,6) {(N = 3); } else if (gylis_cm> 0,4) {(N = 2); } else if (gylis_cm> 0,2) {(N = 1); } dar {(N = 0); }

jei (gylis_m == 4) {// nustatytas lygis == metras

(M = 4); } else if (gylis_m == 3) {(M = 3); } else if (gylis_m == 2) {(M = 2); } else if (gylis_m == 1) {(M = 1); } dar {(M = 0); // viršutinė eilutė} /* // naudojama kūrimo tikslams Serial.print ("m:"); Serial.println (gylis_m); Serijinis atspaudas ("cm:"); Serial.println (gylis_cm); Serial.print („M:“); Serijinis.println (M); // kūrimo tikslais Serial.print ("N:"); Serial.println (N); // plėtros tikslais delay (500); */ // brėžti juostos grafiką microbit.drawLine (0, M, N, M, LED_ON); }

// siųskite vertę į braižytuvo nuoseklųjį prievadą

Serial.print (press_delta); // brėžti indikatoriaus linijas ir pataisyti rodomą diapazoną Serial.print ("\ t"); Serijinis atspaudas (0); Serial.print ("\ t"); Serijinis spaudinys (-500); Serial.print ("\ t"); Serijinis.println (500); vėlavimas (500); // Matuokite du kartus per sekundę} // ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // „bmp/bme280“jutikliui reikia šių dalykų, laikykite jį negaliojančiu readTrim () {uint8_t data [32], i = 0; // Pataisyti 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Pataisyti 2014/while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Pridėti 2014/Wire.write (0xA1); // Pridėti 2014/Wire.endTransmission (); // Pridėti 2014/Wire.requestFrom (BME280_ADDRESS, 1); // Pridėti 2014/data = Wire.read (); // Pridėti 2014/i ++; // Pridėti 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Pataisyti 2014/while (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (duomenys [1] << 8) | duomenys [0]; dig_P1 = (duomenys [7] << 8) | duomenys [6]; dig_P2 = (duomenys [9] << 8) | duomenys [8]; dig_P3 = (duomenys [11] << 8) | duomenys [10]; dig_P4 = (duomenys [13] << 8) | duomenys [12]; dig_P5 = (duomenys [15] << 8) | duomenys [14]; dig_P6 = (duomenys [17] << 8) | duomenys [16]; dig_P7 = (duomenys [19] << 8) | duomenys [18]; dig_T2 = (duomenys [3] << 8) | duomenys [2]; dig_T3 = (duomenys [5] << 8) | duomenys [4]; dig_P8 = (duomenys [21] << 8) | duomenys [20]; dig_P9 = (duomenys [23] << 8) | duomenys [22]; dig_H1 = duomenys [24]; dig_H2 = (duomenys [26] << 8) | duomenys [25]; dig_H3 = duomenys [27]; dig_H4 = (duomenys [28] << 4) | (0x0F ir duomenys [29]); dig_H5 = (duomenys [30] 4) ir 0x0F); // Pataisyti 2014/dig_H6 = duomenys [31]; // Pataisyti 2014/} void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (duomenys); Wire.endTransmission (); } void readData () {int i = 0; uint32_t duomenys [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); i ++; } pres_raw = (duomenys [0] << 12) | (duomenys [1] 4); temp_raw = (duomenys [3] << 12) | (duomenys [4] 4); hum_raw = (duomenys [6] 3) - ((pasirašytas ilgas int) dig_T1 11; var2 = ((((((adc_T >> 4) - ((pasirašytas ilgas int) dig_T1)) * ((adc_T >> 4) - ((pasirašytas ilgas int) dig_T1))) >> 12) * ((pasirašytas ilgas int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T; } unsigned long int calibration_P (pasirašyta ilga int adc_P) {pasirašyta ilga int var1, var2; unsigned long int P; var1 = (((pasirašyta ilga int) t_fine) >> 1) - (pasirašyta ilga int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((pasirašytas ilgas int) dig_P6); var2 = var2 + ((var1 * ((pasirašytas ilgas int) dig_P5)) 2) + (((pasirašytas ilgas int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((pasirašytas ilgas int) dig_P2) * var1) >> 1)) >> 18; var1 = (((((32768+var1))*((pasirašytas ilgas int) dig_P1)) >> 15); if (var1 == 0) {return 0; } P = (((nepasirašytas ilgas int) (((pasirašytas ilgas int) 1048576) -adc_P)-(var2 >> 12)))*3125; jei (P <0x80000000) {P = (P << 1) / ((nepasirašytas ilgas int) var1); } else {P = (P / (unsigned long int) var1) * 2; } var1 = (((pasirašytas ilgas int) dig_P9) * ((pasirašytas ilgas int) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((pasirašytas ilgas int) (P >> 2)) * ((pasirašytas ilgas int) dig_P8)) >> 13; P = (nepasirašytas ilgas int) ((pasirašytas ilgas int) P + ((var1 + var2 + dig_P7) >> 4)); grąžinti P; } unsigned long int calibration_H (pasirašytas ilgas int adc_H) {pasirašytas ilgas int v_x1; v_x1 = (t_fine - ((pasirašyta ilga int) 76800)); v_x1 = ((((((adc_H << 14) -(((pasirašyta ilga int) dig_H4) 15) * ((((((((v_x1 * ((pasirašyta ilga int) dig_H6)) >> 10) * (((v_x1 * ((pasirašyta ilga int) dig_H3)) >> 11) + ((pasirašyta ilga int) 32768))) >> 10) + ((pasirašyta ilga int) 2097152)) * ((pasirašyta ilga int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) *) (v_x1 >> 15)) >> 7) * ((pasirašytas ilgas int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); return (nepasirašytas ilgas int) (v_x1 >> 12);

6 žingsnis: pagrindinis supaprastinimas: „MakeCode“/„JavaScript“kodas

Pagrindinis supaprastinimas: „MakeCode“/„JavaScript“kodas
Pagrindinis supaprastinimas: „MakeCode“/„JavaScript“kodas
Pagrindinis supaprastinimas: „MakeCode“/„JavaScript“kodas
Pagrindinis supaprastinimas: „MakeCode“/„JavaScript“kodas

2018 m. Gegužės mėn. „Pimoroni“išleido „enviro: bit“, kuris tiekiamas su BME280 slėgio/drėgmės/temperatūros jutikliu, TCS3472 šviesos ir spalvų jutikliu bei MEMS mikrofonu. Be to, jie siūlo „JavaScript“biblioteką „MakeCode“redaktoriui ir „MicroPython“biblioteką šiems jutikliams.

Aš naudoju jų „MakeCode“biblioteką savo įrenginio scenarijams kurti. Pridedami rasite atitinkamus šešioliktainius failus, kuriuos galite nukopijuoti tiesiai į „micro: bit“.

Žemiau rasite atitinkamą „JavaScript“kodą. Bandymai baseine gerai veikė su ankstesne scenarijaus versija, todėl manau, kad jie taip pat veiks. Be pagrindinės juostos diagramos, taip pat yra kryžminio varianto (X) ir L versija, skirta palengvinti skaitymą, ypač esant silpnam apšvietimui. Pasirinkite tą, kuris jums labiau patinka.

tegul stulpelis = 0

tegul skaitiklis = 0 tegul lieka = 0 tegul eilutė = 0 tegul Delta = 0 tegul Ref = 0 tegul Is = 0 yra = 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 + "." + likti + "m") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) if (Meter> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100)) {Row = 1} else {Eilė = 0} likti = Skaitiklis - Eilutė * 100, jei (likti> = 80) {Stulpelis = 4} kitas, jei (likti> = 60) {Stulpelis = 3} kitas, jei (likti> = 40) {Column = 2} else if (stay> = 20) {Column = 1} else {Column = 0} for (tegul ColA = 0; ColA <= Column; ColA ++) {led.plot (C olA, eilutė)} basic.pause (500)}})

7 žingsnis: „Enviro: bit“versija

„Enviro: bit“versija
„Enviro: bit“versija
„Enviro: bit“versija
„Enviro: bit“versija
„Enviro: bit“versija
„Enviro: bit“versija

Tuo tarpu iš „Pimoroni“gavau „enviro: bit“(20 GBP) ir „power: bit“(6 GBP).

Kaip minėta anksčiau, „enviro: bit“yra su BME280 slėgio, drėgmės ir temperatūros jutikliu, taip pat šviesos ir spalvų jutikliu (žr. Programą čia) ir MEMS mikrofonu.

„Power: bit“yra puikus sprendimas maitinti „micro: bit“ir yra su įjungimo/išjungimo jungikliu.

Puiku tai, kad jie abu yra tik paspaudimas ir naudojimas, be litavimo, kabelių, lentų. Pridėkite „enviro: bit“prie „micro: bit“, įkelkite kodą į „micro: bit“, naudokite jį.

Šiuo atveju naudojau „micro“, „power“ir „enviro: bit“, įdėjau juos į „Ziploc“maišelį, įdėjau į skaidrų vandeniui nepralaidų plastikinį maišelį mobiliesiems telefonams, paruoštą. Labai greitas ir tvarkingas sprendimas. Žiūrėkite paveikslėlius. Jungiklis yra pakankamai didelis, kad jį būtų galima naudoti per apsauginius sluoksnius.

Buvo išbandytas vandenyje, gerai veikė. Maždaug 1,8 m gylyje išmatuota vertė buvo apie 1,7 m. Nėra labai blogai, jei sprendimas yra greitas ir pigus, tačiau toli gražu nėra tobulas. Prireikia šiek tiek laiko prisitaikyti, todėl gali tekti likti tam tikrame gylyje apie 10-15 sekundžių.

8 veiksmas: kabelio ir jutiklio zondo versija

Kabelio ir jutiklio zondo versija
Kabelio ir jutiklio zondo versija
Kabelio ir jutiklio zondo versija
Kabelio ir jutiklio zondo versija

Tiesą sakant, tai buvo pirmoji idėja sukurti „micro: bit“gylio matuoklį, kuris buvo paskutinis.

Čia aš lituodavau BMP280 jutiklį prie 5 metrų 4 laidų kabelio ir kitame gale įdėjau trumpiklį. Siekiant apsaugoti jutiklį nuo vandens, kabelis buvo pravestas per panaudotą vyno kamštį. Kamštienos galai buvo užsandarinti karštais klijais. Prieš tai aš įpjoviau du įpjovimus į kamštį, abu apėjo aplink jį. Tada aš supakavau jutiklį į kempinės rutulį, aplink jį uždėjau balioną ir pritvirtinau baliono galą ant kamštienos (apatinė įpjova). tada į antrąjį balioną įdėjau 3 40 g švino svorių gabalų, apvyniojau jį aplink pirmąjį, svarmenis uždėjau išorinėje pusėje ir baliono galą pritvirtinau antrame išpjovoje. Oras buvo pašalintas iš antrojo baliono, tada viskas buvo pritvirtinta lipnia juostele. Žiūrėkite vaizdus, vėliau gali būti išsamesnių.

Džemperiai buvo prijungti prie „micro: bit“per kraštinę jungtį, prietaisas įjungtas ir nustatytas atskaitos slėgis. Tada jutiklio galvutė lėtai buvo išleista į baseino dugną (10 m šokinėjimo bokštas, apie 4,5 m gylio).

Rezultatai:

Mano nuostabai, jis veikė net su šiuo ilgu kabeliu. Kita vertus, tačiau nenuostabu, kad matuojant paklaida padidėjo esant didesniam slėgiui, o apskaičiuotas 4 m gylis buvo apie 3 m.

Galimos programos:

Ištaisius klaidas, prietaisas gali būti naudojamas matuoti gylį iki maždaug 4 m.

Kartu su „Arduino“arba „Raspberry Pi“tai gali būti naudojama matuoti ir kontroliuoti baseino ar vandens rezervuaro užpildymo tašką, pvz. įspėti, jei vandens lygis viršija ar sumažina tam tikras ribas.

Lauko fitneso iššūkis
Lauko fitneso iššūkis
Lauko fitneso iššūkis
Lauko fitneso iššūkis

Laimėtojas lauko fitneso iššūkyje

Rekomenduojamas: