Tartalomjegyzék:

A Micro: bit Dive-O-Meter: 8 lépés (képekkel)
A Micro: bit Dive-O-Meter: 8 lépés (képekkel)

Videó: A Micro: bit Dive-O-Meter: 8 lépés (képekkel)

Videó: A Micro: bit Dive-O-Meter: 8 lépés (képekkel)
Videó: 🤩🌿🌸СПЕШУ К ВАМ С НОВИНКОЙ! КВАДРАТНЫЙ МОТИВ ВЕСЕННИЙ - узор крючком (вязание крючком для начинающих) 2024, November
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

Itt a nyár, a medence ideje!

Jó alkalom arra, hogy elvigye magát és a mikróját: harapjon ki az úszómedencébe, és ebben az esetben akár bele is.

Az itt leírt mikro: bites merülő-o-méter egy egyszerű barkácsmélység-mérő, amely lehetővé teszi annak mérését, hogy milyen mélyen vagy merültek. Csupán egy micro: bitből, egy akkumulátorcsomagból vagy LiPo -ból, a micro: bit élcsatlakozójából, egy BMP280 vagy BME280 légnyomás -érzékelőből és néhány áthidaló kábelből áll. A Pimoroni enviro: bit használata a dolgokat egyre egyszerűbbé teszi. Mindez két réteg vízzáró, átlátszó műanyag vagy szilikon tasakba van csomagolva, néhány súly hozzáadásával a felhajtóerő ellensúlyozására.

Ez egy mikrobites nyomásérzékelő eszköz alkalmazása, amelyet egy előző utasításban leírtam.

Használhatja a készüléket pl. g. búvárversenyekre barátaival és családjával, vagy hogy megtudja, milyen mély ez a tó valójában. A környékem legmélyebb medencéjével teszteltem, és azt tapasztaltam, hogy legalább 3,2 méter mélyen működik. Körülbelül öt méter az elméleti maximum. Eddig semmilyen részletességgel nem teszteltem a pontosságát, de a jelentett számok legalább a várt tartományba estek.

Néhány megjegyzés: Ez nem az igazi búvárok eszköze. A micro: bit megsérül, ha nedves lesz. Ezt az utasítást saját felelősségére használja.

Frissítés május 27.: Most megtalálhat egy MakeCode HEX-szkriptet, amelyet közvetlenül betölthet a micro: bitre. Lásd a 6. lépést. Frissítés június 13.: Egy Enviro: bit és egy kábelverzió került hozzáadásra. Lásd a 7. és 8. lépést

1. lépés: Az eszköz mögött álló elmélet

A levegő óceánjának fenekén élünk. A nyomás itt körülbelül 1020 hPa (hectoPascal), mivel a légoszlop súlya a térben körülbelül 1 kg négyzetcentiméterenként.

A víz sűrűsége sokkal nagyobb, mivel egy liter levegő súlya körülbelül 1,2 g, egy liter víz pedig 1 kg, azaz körülbelül 800-szoros. Tehát mivel a légköri nyomás csökkenése körülbelül 1 hPa minden 8 méter magasságban, a nyomásnövekedés 1 hPa a vízfelszín alatti minden centiméterre. Körülbelül 10 m mélységben a nyomás 2000 hPa, vagy két atmoszféra.

Az itt használt nyomásérzékelő mérési tartománya 750 és 1500 hPa között van, körülbelül 1 hPa felbontással. Ez azt jelenti, hogy körülbelül 1 méteres felbontással akár 5 méter mélységet is mérhetünk.

A készülék egy Boyle Marriotte típusú mélységmérő lenne. Összeszerelése meglehetősen egyszerű, és egy későbbi lépésben ismertetjük. Az érzékelő az I2C protokollt használja, így a micro: bit élcsatlakozója jól jön. A legkritikusabb rész a vízzáró tasak, mivel bármilyen páratartalom károsítja a mikro: bit, az érzékelőt vagy az akkumulátort. Mivel némi levegő csapdába esik a zsákok belsejében, a súlyok hozzáadása segít kompenzálni a felhajtóerőt.

2. lépés: Az eszköz használata

A készülék használata
A készülék használata
A készülék használata
A készülék használata
A készülék használata
A készülék használata
A készülék használata
A készülék használata

A szkript, amint azt egy későbbi lépésben részletesen bemutatjuk, a korábban egy nyomásmérőhöz kifejlesztett forgatókönyv változata. A készülék teszteléséhez használhatja az ott leírt egyszerű nyomókamrát.

Búvárkodás céljából a mélységet méterben mutatja, a nyomásmérésekből számítva, akár oszlopdiagramként 20 cm -es lépésekben, vagy kérésre számokban.

A micro: bit A gombjával beállíthatja az aktuális nyomást referencianyomás értékként. A bevitel megerősítéséhez a mátrix egyszer felvillan.

Ezt használhatja akár annak megtekintésére, hogy milyen mélyre merül, vagy rögzíti, hogy milyen mélyre merült.

Az első esetben állítsa be az aktuális külső légnyomást referenciaként. A második esetben állítsa be a nyomást a legmélyebb ponton, ahol a nyomás referenciája, amely lehetővé teszi, hogy megmutassa, milyen mély volt, amikor visszatért a felszínre. A B gomb a nyomáskülönbségből számított mélységet jeleníti meg számértékként méterben.

3. lépés: Szükséges anyagok

Szükséges anyagok
Szükséges anyagok
Szükséges anyagok
Szükséges anyagok
Szükséges anyagok
Szükséges anyagok

Mikro: bit. Például. 13 GBP/16 Euro áron a Pimoroni UK/DE -nál.

Egy élcsatlakozó (Kitronic vagy Pimoroni), 5 GBP. A Kitronic verziót használtam.

BMP/BME280 érzékelő. A Banggood BMP280 szenzorát használtam, 4,33 Euro három egységért.

Jumper kábelek az érzékelő és az élcsatlakozó csatlakoztatásához.

A fenti élcsatlakozó/érzékelő kombináció kiváló alternatívája lehet a Pimoroni enviro: bit (eddig nem tesztelték, lásd az utolsó lépést).

Akkumulátor vagy LiPo a micro: bithez.

Tápkábel kapcsolóval (opcionális, de hasznos). Tisztítsa meg a vízzáró zsákokat. Szilikon tasakot használtam mobiltelefonhoz és egy vagy két kis ziploc táskát. Győződjön meg arról, hogy az anyag elég vastag, így az élcsatlakozó csapjai nem károsítják a táskákat.

Néhány súly. Horgászathoz használt ólomtömegű darabokat használtam.

Arduino IDE és számos könyvtár.

4. lépés: Összeszerelés

Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés
Összeszerelés

Telepítse az Arduino IDE -t és a szükséges könyvtárakat. A részleteket itt ismertetjük.

(Nem szükséges a MakeCode szkripthez.) Mivel a Kitronik élcsatlakozót használja, forrasztja a 19 és 20 I2C portokat. Ez nem szükséges a Pimoroni élcsatlakozónál. Forrasztja le a fejlécet az érzékelőhöz, és csatlakoztassa az érzékelőt és az élcsatlakozót áthidaló kábelekkel. Csatlakoztassa a VCC -t 3 V -ra, a GND -t 0 V -ra, az SCL -t a 19 -es portra, és az SDA -t a 20 -as portra. Csatlakoztassa a micro: bitet számítógépünkhöz USB -kábellel. Nyissa meg a mellékelt szkriptet, és villanja fel a micro: bitre. Használja a soros monitort vagy a plottert, és ellenőrizze, hogy az érzékelő ésszerű adatokat szolgáltat -e. Válassza le a micro: bitet a számítógépről. Csatlakoztassa az akkumulátort vagy a LiPo -t a micro: bithez. Nyomja meg a B gombot, olvassa el az értéket Nyomja meg az A gombot. Nyomja meg a B gombot, és olvassa el az értéket. Helyezze a készüléket két réteg légmentesen záródó tasakba, csak nagyon kevés levegőt hagyva a zsákban. Abban az esetben helyezzen súlyt a felhajtóerő ellensúlyozására. Ellenőrizze, hogy minden vízzáró -e. Menj a medencébe és játssz.

5. lépés: A MicroPython szkript

A szkript csak leveszi a nyomásértéket az érzékelőtől, összehasonlítja a referenciaértékkel, majd kiszámítja a mélységet a különbségből. Az értékek oszlopdiagramként történő megjelenítéséhez a mélységérték egész és fennmaradó részét vesszük. Az első határozza meg a vonal magasságát. A fennmaradó rész öt tárolóba van osztva, amelyek meghatározzák a rudak hosszát. A felső szint 0 - 1 m, a legalacsonyabb 4 - 5 m. Amint korábban említettük, az A gomb megnyomásával beállítható a referencianyomás, a B gomb pedig a „relatív mélységet” mutatja méterben, számértékként. Mostanra a negatív és pozitív értékek ugyanúgy oszlopdiagramként jelennek meg a LED mátrixon. Nyugodtan optimalizálja a szkriptet az Ön igényei szerint. Bizonyos sorok némítását feloldhatja az értékek megjelenítéséhez az Arduino IDE soros monitorán vagy plotterjén. A funkció emulálásához felépítheti az előző utasításban leírt eszközt.

Nem írtam a szkriptnek azt a részét, amely olvassa az érzékelőt. A forrásban nem vagyok biztos, de szeretnék köszönetet mondani az íróknak. Bármilyen javítást vagy optimalizálási tippet szívesen fogadunk.

#befoglalni

#include Adafruit_Microbit_Matrix microbit; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; aláírt hosszú 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; dupla sajtó_norm = 1015; // kezdőérték kettős mélység; // számított mélység // -------------------------------------------- -------------------------------------------------- ---------------------- void setup () {uint8_t osrs_t = 1; // Hőmérséklet -túlmintavétel x 1 uint8_t osrs_p = 1; // Nyomás túlmintavétele x 1 uint8_t osrs_h = 1; // Páratartalom túlmintavételezés x 1 uint8_t mód = 3; // Normál mód uint8_t t_sb = 5; // Készenléti állapot 1000ms uint8_t filter = 0; // szűrés ki uint8_t spi3w_en = 0; // 3 vezetékes SPI Letiltás uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mód; uint8_t config_reg = (t_sb << 5) | (szűrő << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Sorozat.kezdet (9600); // soros port sebességének beállítása Serial.print ("Nyomás [hPa]"); // fejléc soros kimenethez Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); késleltetés (1000); } // ----------------------------------------------- ---------------------------------------------- void loop () {dupla temp_act = 0.0, press_act = 0.0, hum_act = 0.0; aláírt hosszú int temp_cal; előjel nélküli hosszú int press_cal, hum_cal; int N; int M; dupla press_delta; // relatív nyomás int mélység_m; // mélység méterben, egész rész dupla mélység_cm; // maradék cm -ben readData (); // temp_cal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); // hum_cal = calibration_H (hum_raw); // temp_act = (dupla) temp_cal / 100.0; press_act = (dupla) press_cal / 100.0; // hum_act = (kettős) hum_cal / 1024,0; microbit.clear (); // a LED mátrix visszaállítása // Az A gomb a tényleges értéket állítja be referenciaként (P nulla) // A B gomb megjeleníti az aktuális értéket mélységben méterben (nyomáskülönbségből számítva), ha (! digitalRead (PIN_BUTTON_A)) {// állítsa be a normál légnyomást mint nulla press_norm = press_act; // mikrobit.print ("P0:"); // mikrobit.print (press_norm, 0); // mikrobit.print ("hPa"); microbit.fillScreen (LED_ON); // pislogjon egyszer a késleltetés megerősítéséhez (100); } else if (! digitalRead (PIN_BUTTON_B)) {// megjeleníti a mélységet méterben microbit.print (mélység, 2); microbit.print ("m"); // Sorozat.println (""); } else {// mélység kiszámítása nyomáskülönbségből press_delta = (press_act - press_norm); // relatív nyomásmélység kiszámítása = (press_delta/100); // mélység méterben mélység_m = int (absz (mélység)); // mélység im méter mélység_cm = (absz (mélység) - mélység_m); // maradék /* // fejlesztésre használt Serial.println (mélység); Soros.println (mélység_m); Soros.println (mélység_cm); */ // Lépések az oszlopdiagramhoz, ha (mélység_cm> 0,8) {// beállítja a rudak hosszát (N = 4); } else if (mélység_cm> 0,6) {(N = 3); } else if (mélység_cm> 0,4) {(N = 2); } else if (mélység_cm> 0,2) {(N = 1); } else {(N = 0); }

ha (mélység_m == 4) {// beállított szint == méter

(M = 4); } else if (mélység_m == 3) {(M = 3); } else if (mélység_m == 2) {(M = 2); } else if (mélység_m == 1) {(M = 1); } else {(M = 0); // felső sor} /* // fejlesztési célokra használják Serial.print ("m:"); Soros.println (mélység_m); Soros.nyomat ("cm:"); Soros.println (mélység_cm); Serial.print ("M:"); Soros.println (M); // fejlesztési célokra Serial.print ("N:"); Soros.println (N); // fejlesztési célú késleltetés (500); */ // microsbit rajzolási oszlopdiagram.drawLine (0, M, N, M, LED_ON); }

// érték küldése a plotter soros portjára

Serial.print (press_delta); // rajzoljon jelzővonalakat és javítsa a megjelenített tartományt Serial.print ("\ t"); Sorozatnyomtatás (0); Serial.print ("\ t"); Sorozatnyomtatás (-500); Serial.print ("\ t"); Sorozat.println (500); késleltetés (500); // Mérjen másodpercenként kétszer} // ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // a következő szükséges a bmp/bme280 érzékelőhöz, tartsa érvénytelennek readTrim () {uint8_t data [32], i = 0; // Javítás 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Javítás 2014/while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Add 2014/Wire.write (0xA1); // 2014 hozzáadása/Wire.endTransmission (); // Add 2014/Wire.requestFrom (BME280_ADDRESS, 1); // Add 2014/data = Wire.read (); // Hozzáadás 2014/i ++; // Add 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Javítás 2014/while (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (adatok [1] << 8) | adatok [0]; dig_P1 = (adatok [7] << 8) | adatok [6]; dig_P2 = (adatok [9] << 8) | adatok [8]; dig_P3 = (adatok [11] << 8) | adatok [10]; dig_P4 = (adatok [13] << 8) | adatok [12]; dig_P5 = (adatok [15] << 8) | adatok [14]; dig_P6 = (adatok [17] << 8) | adatok [16]; dig_P7 = (adatok [19] << 8) | adatok [18]; dig_T2 = (adatok [3] << 8) | adatok [2]; dig_T3 = (adatok [5] << 8) | adatok [4]; dig_P8 = (adatok [21] << 8) | adatok [20]; dig_P9 = (adatok [23] << 8) | adatok [22]; dig_H1 = adatok [24]; dig_H2 = (adatok [26] << 8) | adatok [25]; dig_H3 = adatok [27]; dig_H4 = (adatok [28] << 4) | (0x0F és adatok [29]); dig_H5 = (adatok [30] 4) & 0x0F); // 2014 javítása/dig_H6 = adatok [31]; // 2014/} javítása void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (adatok); Wire.endTransmission (); } void readData () {int i = 0; uint32_t adatok [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); i ++; } pres_raw = (adatok [0] << 12) | (adatok [1] 4); temp_raw = (adatok [3] << 12) | (adatok [4] 4); hum_raw = (adatok [6] 3) - ((aláírt hosszú int) dig_T1 11; var2 = ((((((adc_T >> 4) - ((aláírt hosszú int) dig_T1)) * ((adc_T >> 4) - ((aláírt hosszú int) dig_T1))) >> 12) * ((aláírt hosszú int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_finom * 5 + 128) >> 8; visszatér T; } unsigned long int calibration_P (aláírt hosszú int adc_P) {aláírt hosszú int var1, var2; unsigned long int P; var1 = (((aláírt hosszú int) t_fine) >> 1) - (aláírt hosszú int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((aláírt hosszú int) dig_P6); var2 = var2 + ((var1 * ((aláírt hosszú int) dig_P5)) 2) + (((aláírt hosszú int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((aláírt hosszú int) dig_P2) * var1) >> 1)) >> 18; var1 = (((((32768+var1))*((aláírt hosszú int) dig_P1)) >> 15); if (var1 == 0) {return 0; } P = (((előjel nélküli hosszú int) (((aláírt hosszú int) 1048576) -adc_P)-(var2 >> 12)))*3125; ha (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } else {P = (P / (előjel nélküli hosszú int) var1) * 2; } var1 = (((aláírt hosszú int) dig_P9) * ((aláírt hosszú int) ((((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((aláírt hosszú int) (P >> 2)) * ((aláírt hosszú int) dig_P8)) >> 13; P = (előjel nélküli hosszú int) ((aláírt hosszú int) P + ((var1 + var2 + dig_P7) >> 4)); visszatérés P; } unsigned long int kalibráció_H (aláírt hosszú int adc_H) {aláírt hosszú int v_x1; v_x1 = (t_finom - ((aláírt hosszú int) 76800)); v_x1 = ((((((adc_H << 14) -(((aláírt hosszú int) dig_H4) 15) * (((((((v_x1 * ((aláírt hosszú int) dig_H6)) >> 10) * (((v_x1 * ((aláírt hosszú int) dig_H3)) >> 11) + ((aláírt hosszú int) 32768))) >> 10) + ((aláírt hosszú int) 2097152)) * ((aláírt hosszú int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((aláírt hosszú int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); return (előjel nélküli hosszú int) (v_x1 >> 12);

6. lépés: Jelentős egyszerűsítés: a MakeCode/JavaScript kód

Jelentős egyszerűsítés: a MakeCode/JavaScript kód
Jelentős egyszerűsítés: a MakeCode/JavaScript kód
Jelentős egyszerűsítés: a MakeCode/JavaScript kód
Jelentős egyszerűsítés: a MakeCode/JavaScript kód

2018 májusában a Pimoroni kiadta az enviro: bitet, amely BME280 nyomás/páratartalom/hőmérséklet érzékelővel, TCS3472 fény- és színérzékelővel és MEMS mikrofonnal rendelkezik. Ezen kívül JavaScript könyvtárat kínálnak a MakeCode szerkesztőhöz, és MicroPython könyvtárat kínálnak ezekhez az érzékelőkhöz.

A MakeCode könyvtárukat használtam szkriptek kifejlesztéséhez az eszközömhöz. Csatolva megtalálja a megfelelő hexafájlokat, amelyeket közvetlenül a micro: bitre másolhat.

Az alábbiakban megtalálja a megfelelő JavaScript kódot. A poolban végzett tesztelés jól működött a forgatókönyv egy korábbi verziójával, ezért feltételezem, hogy azok is működni fognak. Az alap, oszlopdiagramos verzió mellett van szálkeresztes (X) és L-változat is, amelyek megkönnyítik az olvasást, különösen gyenge fényviszonyok mellett. Válassza ki a kívántat.

legyen az oszlop = 0

hagyjuk Meter = 0 hagyjuk = 0 hagyjuk Sor = 0 hagyja Delta = 0 hagyja Ref = 0 hagyja 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 ("" + Sor + "." + marad + "m") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta), ha (Meter> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100)) {Sor = 1} más {Sor = 0} marad = Méter - Sor * 100, ha (marad> = 80) {Oszlop = 4} más, ha (marad> = 60) {Oszlop = 3} más, ha (marad>> 40) {Oszlop = 2} else if (marad> = 20) {Oszlop = 1} else {Oszlop = 0} for (legyen ColA = 0; ColA <= Oszlop; ColA ++) {led.plot (C olA, sor)} basic.pause (500)}})

7. lépés: Az Enviro: bit verzió

Az Enviro: bit verzió
Az Enviro: bit verzió
Az Enviro: bit verzió
Az Enviro: bit verzió
Az Enviro: bit verzió
Az Enviro: bit verzió

Időközben megkaptam a környezet: bit (20 GBP) és a power: bit (6 GBP) szolgáltatást, mindkettőt a Pimoronitól.

Amint azt korábban említettük, az enviro: bit a BME280 nyomás-, páratartalom- és hőmérséklet -érzékelőt, de fény- és színérzékelőt (lásd az alkalmazást itt) és MEMS mikrofont is tartalmaz.

A power: bit szép megoldás a micro: bit áramellátására, és be-/kikapcsolóval rendelkezik.

A nagyszerű dolog az, hogy mindkettő csak kattintás és használat, forrasztás, kábelek és kenyértáblák nélkül. Adja hozzá az enviro: bit -t a micro: bit -hez, töltse be a kódot a micro: bit -be, használja azt.

Ebben az esetben a micro, power és enviro: bit elemeket használtam, Ziploc tasakba tettem, átlátszó, vízzáró műanyag zacskóba tettem mobiltelefonokhoz, készen. Nagyon gyors és rendezett megoldás. Lásd a képeket. A kapcsoló elég nagy ahhoz, hogy a védőrétegeken keresztül használhassa.

Vízben tesztelték, jól működött. Körülbelül 1,8 m mélységben a mért érték körülbelül 1,7 m volt. Nem rossz a gyors és olcsó megoldás, de messze nem tökéletes. Beletelik egy kis időbe, amíg be kell állítani, ezért előfordulhat, hogy 10-15 másodpercig bizonyos mélységben kell maradnia.

8. lépés: Kábel és érzékelő szonda verzió

Kábel és érzékelő szonda verzió
Kábel és érzékelő szonda verzió
Kábel és érzékelő szonda verzió
Kábel és érzékelő szonda verzió

Valójában ez volt az első ötlet a mikro: bit mélységmérő számára, amelyet utoljára építettek.

Itt forrasztottam a BMP280 érzékelőt 5 méteres 4 vezetékes kábelre, és a másik végére női áthidalót helyeztem el. Annak érdekében, hogy megvédje az érzékelőt a víztől, a kábelt egy használt bordadugón vezette át. A parafa végeit forró ragasztóval lezártuk. Mielőtt két bevágást vágtam a parafába, mindkettő körbejárta. Ezután bepakoltam az érzékelőt egy szivacsgolyóba, köré léggömböt helyeztem, és a ballon végét a parafára rögzítettem (alsó bevágás). majd 3 40 g ólomtömeget helyeztem egy második léggömbbe, az első köré tekertem, a súlyokat a külső oldalára helyeztem, és rögzítettem a lufi végét a második bevágásnál. A levegőt eltávolították a második ballonról, majd mindent ragasztószalaggal rögzítettek. Nézze meg a képeket, részletesebbek következhetnek.

Az áthidalókat egy élcsatlakozón keresztül csatlakoztatták a micro: bithez, a készülék bekapcsolt és a referencianyomás be volt állítva. Ezután az érzékelőfejet lassan kiengedték a medence aljára (10 m ugrótorony, körülbelül 4,5 m mély).

Eredmények:

Meglepetésemre még ezzel a hosszú kábellel is működött. Másrészt, de nem meglepő módon, a mérési hiba nagyobb nyomáson nagyobbnak tűnt, és a becsült 4 m mélységet körülbelül 3 m -nek jelentették.

Lehetséges alkalmazások:

Bizonyos hibajavításokkal az eszközzel körülbelül 4 m mélységet lehet mérni.

Egy Arduino -val vagy Raspberry Pi -vel együtt ez használható egy medence vagy víztartály töltési pontjának mérésére és szabályozására, pl. figyelmeztetést idézni, ha a vízszint bizonyos küszöbértékek felett vagy alatt megy.

Kültéri fitnesz kihívás
Kültéri fitnesz kihívás
Kültéri fitnesz kihívás
Kültéri fitnesz kihívás

Második helyezett a szabadtéri fitnesz kihívásban

Ajánlott: