Sisällysluettelo:

A Micro: bit Dive-O-Meter: 8 vaihetta (kuvilla)
A Micro: bit Dive-O-Meter: 8 vaihetta (kuvilla)

Video: A Micro: bit Dive-O-Meter: 8 vaihetta (kuvilla)

Video: A Micro: bit Dive-O-Meter: 8 vaihetta (kuvilla)
Video: Что ты такое?! 2024, Marraskuu
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

Kesä on täällä, sen uima -aika!

Hyvä tilaisuus viedä itsesi ja mikro: pureutua uima -altaalle ja tässä tapauksessa jopa uima -altaalle.

Tässä kuvattu mikro: bittinen sukellus-o-mittari on yksinkertainen DIY-syvyysmittari, jonka avulla voit mitata, kuinka syvä olet tai olitko sukeltamassa. Se koostuu vain micro: bitistä, akusta tai LiPo: sta, micro: bitin reunaliittimestä, BMP280- tai BME280 -ilmanpaineanturista ja joistakin hyppyjohdoista. Pimoroni enviro: bitin käyttö tekee asioista entistä yksinkertaisempia. Kaikki tämä on pakattu kahteen kerrokseen vesitiiviitä kirkkaita muovi- tai silikonipusseja, joihin on lisätty joitakin painoja kelluvan voiman kompensoimiseksi.

Se on mikro -bittisen paineanturilaitteen sovellus, jonka olin kuvannut edellisessä ohjeessa.

Voit käyttää laitetta e. g. sukelluskilpailuihin ystävien ja perheen kanssa tai selvittääksesi kuinka syvä lampi on. Testasin sen naapurustani syvimmällä altaalla ja huomasin, että se toimii vähintään 3,2 metrin syvyyteen. Noin viisi metriä on teoreettinen maksimi. Toistaiseksi en ole testannut sen tarkkuutta yksityiskohtaisesti, mutta raportoidut luvut olivat ainakin odotetulla alueella.

Muutamia huomautuksia: Tämän ei ole tarkoitus olla työkalu todellisille sukeltajille. Micro: bitti vaurioituu, jos se kastuu. Käytät tätä ohjetta omalla vastuullasi.

Päivitys 27. toukokuuta: Nyt löydät MakeCode HEX -skriptin, jonka voit ladata suoraan micro: bitille. Katso vaihe 6. Päivitys 13. kesäkuuta: Enviro: bitti ja kaapeliversio lisätty. Katso vaiheet 7 ja 8

Vaihe 1: Laitteen takana oleva teoria

Elämme ilmameren pohjalla. Paine täällä on noin 1020 hPa (hectoPascal), koska ilmapylvään paino tässä avaruudessa on noin 1 kg neliösenttimetriä kohti.

Veden tiheys on paljon suurempi, koska yksi litra ilmaa painaa noin 1,2 g ja yksi litra vettä 1 kg eli noin 800-kertaisesti. Joten koska ilmanpaineen lasku on noin 1 hPa jokaista 8 metriä korkeudelta, paineen nousu on 1 hPa jokaista senttimetriä vedenpinnan alapuolella. Noin 10 metrin syvyydessä paine on 2000 hPa eli kaksi ilmakehää.

Tässä käytetyn paineanturin mittausalue on 750 - 1500 hPa noin yhden hPa: n tarkkuudella. Tämä tarkoittaa, että voimme mitata jopa 5 metrin syvyyden noin 1 cm: n tarkkuudella.

Laite olisi Boyle Marriotte -tyyppinen syvyysmittari. Sen kokoaminen on melko yksinkertaista ja kuvataan myöhemmässä vaiheessa. Anturi käyttää I2C -protokollaa, joten micro: bitin reunaliitin on kätevä. Tärkein osa on vesitiiviit pussit, koska kosteus vahingoittaa mikro: bittiä, anturia tai akkua. Koska pussien sisään jää jonkin verran ilmaa, painojen lisääminen auttaa kompensoimaan kelluvaa voimaa.

Vaihe 2: Laitteen käyttö

Laitteen käyttäminen
Laitteen käyttäminen
Laitteen käyttäminen
Laitteen käyttäminen
Laitteen käyttäminen
Laitteen käyttäminen
Laitteen käyttäminen
Laitteen käyttäminen

Käsikirjoitus, kuten myöhemmin esitetään yksityiskohtaisesti, on muunnelma aiemmin painemittaria varten kehittämästäni skriptistä. Voit testata laitetta käyttämällä siinä kuvattua yksinkertaista painekammiota.

Sukellustarkoituksiin se näyttää syvyyden metreinä painemittauksista laskettuna joko pylväskaaviona 20 cm: n välein tai pyynnöstä numeroina.

Käyttämällä micro: bitin painiketta A asetat nykyisen paineen vertailupainearvoksi. Vahvistaaksesi syöttämisen matriisi vilkkuu kerran.

Voit käyttää tätä joko nähdäksesi kuinka syvälle sukellat, tai tallentaaksesi kuinka syvälle sukellit.

Aseta ensimmäisessä tapauksessa nykyinen ulkoilmapaine vertailukohteeksi. Toisessa tapauksessa aseta paine syvimpään kohtaan, jossa olet, viiteparametriksi, jonka avulla voit näyttää, kuinka syvä olet ollut, kun olet jälleen pinnalla. Painike B näyttää syvyyden, joka lasketaan paine -erosta, numeerisena arvona metreinä.

Vaihe 3: Tarvittavat materiaalit

Tarvittavat materiaalit
Tarvittavat materiaalit
Tarvittavat materiaalit
Tarvittavat materiaalit
Tarvittavat materiaalit
Tarvittavat materiaalit

Mikro: bitti. Esim. 13 GBP/16 euroa Pimoroni UK/DE: ssä.

Reunaliitin (Kitronic tai Pimoroni), 5 GBP. Käytin Kitronic -versiota.

BMP/BME280 -anturi. Käytin Banggoodin BMP280 -anturia, 4,33 euroa kolmelle yksikölle.

Hyppyjohdot anturin ja reunaliittimen liittämiseksi.

Erinomainen vaihtoehto reunaliittimen/anturin yhdistelmälle voisi olla Pimoroni enviro: bit (ei testattu toistaiseksi, katso viimeinen vaihe).

Akku tai LiPo micro: bitille.

Virtakaapeli, jossa on kytkin (valinnainen mutta hyödyllinen). Käytin silikonipussia matkapuhelimelle ja yhden tai kaksi pientä ziploc -pussia. Varmista, että materiaali on tarpeeksi paksu, joten reunaliittimen tapit eivät vahingoita laukkuja.

Jotkut painot. Käytin lyijypainoja, joita käytetään kalastukseen.

Arduino IDE ja useita kirjastoja.

Vaihe 4: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Asenna Arduino IDE ja tarvittavat kirjastot. Yksityiskohdat on kuvattu täällä.

(Ei vaadita MakeCode -komentosarjassa.) Kun käytät Kitronik -reunaliitintä, juota nastat I2C -portteihin 19 ja 20. Tätä ei vaadita Pimoroni -reunaliittimessä. Juottaa otsikon anturiin puhkeamaan ja liittää anturi ja reunaliitin hyppyjohdoilla. Kytke VCC 3 V: iin, GND 0 V: iin, SCL porttiin 19 ja SDA porttiin 20. Vaihtoehtoisesti juottamalla kaapelit suoraan katkaisuun. Liitä micro: bit tietokoneeseemme USB -kaapelilla. Avaa toimitettu komentosarja ja päivitä se micro: bitiin. Käytä sarjamonitoria tai plotteria ja tarkista, antavatko anturit kohtuullisia tietoja. Irrota micro: bit tietokoneesta. Liitä akku tai LiPo micro: bittiin. Paina painiketta B, lue arvo Paina painiketta A. Paina painiketta B, lue arvo. Aseta laite kahteen ilmatiiviiseen pussikerrokseen jättäen pussiin vain hyvin vähän ilmaa. Aseta siinä tapauksessa paino nostovoiman kompensoimiseksi. Tarkista, onko kaikki vedenpitävä. Mene altaalle ja pelaa.

Vaihe 5: MicroPython -skripti

Skripti vain ottaa painearvon anturilta, vertaa sitä vertailuarvoon ja laskee sitten syvyyden erotuksesta. Arvojen näyttämiseksi pylväskaaviona otetaan kokonaisluku ja loppuosa syvyysarvosta. Ensimmäinen määrittää viivan korkeuden. Loput on jaettu viiteen lokeroon, jotka määrittävät tankojen pituuden. Ylempi taso on 0 - 1 m, alin 4 - 5 m. Kuten aiemmin mainittiin, painikkeen A painaminen asettaa referenssipaineen, painike B näyttää "suhteellisen syvyyden" metreinä numeerisena arvona. Tällä hetkellä negatiiviset ja positiiviset arvot esitetään pylväskaaviona LED -matriisissa samalla tavalla. Voit optimoida käsikirjoituksen tarpeidesi mukaan. Voit poistaa mykistyksen tietyiltä riveiltä näyttääksesi arvot Arduino IDE: n sarjamonitorissa tai plotterissa. Toiminnon jäljittelemiseksi voit rakentaa laitteen, jonka kuvailin edellisessä ohjeessa.

En ole kirjoittanut käsikirjoituksen osaa, joka lukee anturin. En ole varma lähteestä, mutta haluan kiittää kirjoittajia. Kaikki korjaukset tai vinkit optimointiin ovat tervetulleita.

#sisältää

#Sisällytä Adafruit_Microbit_Matrix microbit; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; allekirjoitettu pitkä 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; kaksoisnapsautus_norm = 1015; // alkuarvo kaksinkertainen syvyys; // laskettu syvyys // -------------------------------------------- -------------------------------------------------- ---------------------- void setup () {uint8_t osrs_t = 1; // Lämpötilan ylinäytteenotto x 1 uint8_t osrs_p = 1; // Paineen ylinäytteenotto x 1 uint8_t osrs_h = 1; // Kosteuden ylinäytteenotto x 1 uint8_t -tila = 3; // Normaalitila uint8_t t_sb = 5; // Valmiustilassa 1000 ms uint8_t filter = 0; // Suodata pois uint8_t spi3w_en = 0; // 3-johtiminen SPI Poista käytöstä uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | tila; uint8_t config_reg = (t_sb << 5) | (suodatin << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Sarja.alku (9600); // aseta sarjaportin nopeus Serial.print ("Paine [hPa]"); // sarjalähdön otsikko Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); viive (1000); } // ----------------------------------------------- ---------------------------------------------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; allekirjoitettu pitkä int temp_cal; allekirjoittamaton pitkä int press_cal, hum_cal; int N; int M; kaksinkertainen press_delta; // suhteellinen paine int syvyys_m; // syvyys metreinä, kokonaisluku kaksinkertainen syvyys_cm; // loput senttimetreinä readData (); // temp_cal = calibration_T (temp_raw); press_cal = calibration_P (esikaavio); // hum_cal = calibration_H (hum_raw); // temp_act = (kaksinkertainen) temp_cal / 100.0; press_act = (kaksinkertainen) press_cal / 100.0; // hum_act = (kaksinkertainen) hum_cal / 1024,0; microbit.clear (); // nollaa LED -matriisi // Painike A asettaa todellisen arvon vertailukohteeksi (P nolla) // Painike B näyttää nykyisen arvon syvyytenä metreinä (laskettuna paine -erosta), jos (! digitalRead (PIN_BUTTON_A)) {// aseta normaali ilmanpaine nollana press_norm = press_act; // microbit.print ("P0:"); // microbit.print (press_norm, 0); // microbit.print ("hPa"); microbit.fillScreen (LED_ON); // vilkkuu kerran vahvistaaksesi viiveen (100); } else if (! digitalRead (PIN_BUTTON_B)) {// näyttää syvyyden metreinä microbit.print (syvyys, 2); microbit.print ("m"); // Sarja.println (""); } else {// laske syvyys paine -erosta press_delta = (press_act - press_norm); // laske suhteellinen painesyvyys = (press_delta/100); // syvyys metreissä syvyys_m = int (abs (syvyys)); // syvyys im metriä syvyys_cm = (abs (syvyys) - syvyys_m); // loput /* // käytetään kehittämiseen Serial.println (syvyys); Sarja.println (syvyys_m); Sarja.println (syvyys_cm); */ // Pylväskaavion vaiheet, jos (syvyys_cm> 0,8) {// asetetaan tankojen pituus (N = 4); } muu jos (syvyys_cm> 0,6) {(N = 3); } muu jos (syvyys_cm> 0,4) {(N = 2); } muu jos (syvyys_cm> 0,2) {(N = 1); } muu {(N = 0); }

jos (syvyys_m == 4) {// aseta taso == metri

(M = 4); } muu jos (syvyys_m == 3) {(M = 3); } muu jos (syvyys_m == 2) {(M = 2); } muu jos (syvyys_m == 1) {(M = 1); } muu {(M = 0); // ylin rivi} /* // käytetään kehittämistarkoituksiin Serial.print ("m:"); Sarja.println (syvyys_m); Sarjajälki ("cm:"); Sarja.println (syvyys_cm); Serial.print ("M:"); Sarja.println (M); // kehitystarkoituksiin Serial.print ("N:"); Sarja.println (N); // kehitystarkoituksiin viivästyminen (500); */ // piirrä pylväskaavio microbit.drawLine (0, M, N, M, LED_ON); }

// lähetä arvo plotterin sarjaporttiin

Serial.print (press_delta); // piirrä merkkiviivat ja korjaa näytetty alue Serial.print ("\ t"); Sarjanjälki (0); Serial.print ("\ t"); Sarjanjälki (-500); Serial.print ("\ t"); Sarja.println (500); viive (500); // Mittaa kahdesti sekunnissa} // ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // bmp/bme280-anturilta vaaditaan seuraavaa, pidä se tyhjänä readTrim () {uint8_t data [32], i = 0; // Korjaa 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Korjaa 2014/while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Lisää 2014/Wire.write (0xA1); // Lisää 2014/Wire.endTransmission (); // Lisää 2014/Wire.requestFrom (BME280_ADDRESS, 1); // Lisää 2014/data = Wire.read (); // Lisää 2014/i ++; // Lisää 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Korjaa 2014/while (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (data [1] << 8) | data [0]; dig_P1 = (data [7] << 8) | tiedot [6]; dig_P2 = (data [9] << 8) | tiedot [8]; dig_P3 = (data [11] << 8) | tiedot [10]; dig_P4 = (data [13] << 8) | tiedot [12]; dig_P5 = (data [15] << 8) | tiedot [14]; dig_P6 = (data [17] << 8) | tiedot [16]; dig_P7 = (data [19] << 8) | tiedot [18]; dig_T2 = (data [3] << 8) | tiedot [2]; dig_T3 = (data [5] << 8) | tiedot [4]; dig_P8 = (data [21] << 8) | tiedot [20]; dig_P9 = (data [23] << 8) | tiedot [22]; dig_H1 = data [24]; dig_H2 = (data [26] << 8) | tiedot [25]; dig_H3 = data [27]; dig_H4 = (data [28] << 4) | (0x0F & data [29]); dig_H5 = (data [30] 4) & 0x0F); // Korjaa 2014/dig_H6 = data [31]; // Korjaa 2014/} void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (data); Wire.endTransmission (); } void readData () {int i = 0; uint32_t -tiedot [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); i ++; } pres_raw = (data [0] << 12) | (data [1] 4); temp_raw = (data [3] << 12) | (data [4] 4); hum_raw = (data [6] 3) - ((allekirjoitettu pitkä int) dig_T1 11; var2 = ((((((adc_T >> 4) - ((allekirjoitettu pitkä int) dig_T1)) * ((adc_T >> 4) - ((allekirjoitettu pitkä int) dig_T1))) >> 12) * ((allekirjoitettu pitkä int) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T; } unsigned long int calibration_P (allekirjoitettu pitkä int adc_P) {allekirjoitettu pitkä int var1, var2; unsigned long int P; var1 = (((allekirjoitettu pitkä int) t_fine) >> 1) - (allekirjoitettu pitkä int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((allekirjoitettu pitkä int) dig_P6); var2 = var2 + ((var1 * ((allekirjoitettu pitkä int) dig_P5)) 2) + (((allekirjoitettu pitkä int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((allekirjoitettu pitkä int) dig_P2) * var1) >> 1)) >> 18; var1 = (((((32768+var1))*((allekirjoitettu pitkä int) dig_P1)) >> 15); if (var1 == 0) {return 0; } P = (((allekirjoittamaton pitkä int) (((allekirjoitettu pitkä int) 1048576) -adc_P)-(var2 >> 12)))*3125; jos (P <0x80000000) {P = (P << 1) / ((unsigned long int) var1); } else {P = (P / (unsigned long int) var1) * 2; } var1 = (((allekirjoitettu pitkä int) dig_P9) * ((allekirjoitettu pitkä int) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((allekirjoitettu pitkä int) (P >> 2)) * ((allekirjoitettu pitkä int) dig_P8)) >> 13; P = (allekirjoittamaton pitkä int) ((allekirjoitettu pitkä int) P + ((var1 + var2 + dig_P7) >> 4)); paluu P; } unsigned long int calibration_H (allekirjoitettu pitkä int adc_H) {allekirjoitettu pitkä int v_x1; v_x1 = (t_fine - ((allekirjoitettu pitkä int) 76800)); v_x1 = ((((((adc_H << 14) -(((allekirjoitettu pitkä int) dig_H4) 15) * ((((((((v_x1 * ((allekirjoitettu pitkä int) dig_H6)) >> 10) * (((v_x1 * ((allekirjoitettu pitkä int) dig_H3)) >> 11) + ((allekirjoitettu pitkä int) 32768))) >> 10) + ((allekirjoitettu pitkä int) 2097152)) * ((allekirjoitettu pitkä int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((allekirjoitettu pitkä int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); return (allekirjoittamaton pitkä int) (v_x1 >> 12);

Vaihe 6: Suuri yksinkertaistus: MakeCode/JavaScript -koodi

Suuri yksinkertaistus: MakeCode/JavaScript -koodi
Suuri yksinkertaistus: MakeCode/JavaScript -koodi
Suuri yksinkertaistus: MakeCode/JavaScript -koodi
Suuri yksinkertaistus: MakeCode/JavaScript -koodi

Toukokuussa 2018 Pimoroni on julkaissut enviro: bitin, joka sisältää BME280 -paine-/kosteus-/lämpötila -anturin, TCS3472 -valo- ja värianturin sekä MEMS -mikrofonin. Lisäksi he tarjoavat JavaScript -kirjaston MakeCode -editorille ja MicroPython -kirjaston näille antureille.

Olen käyttänyt heidän MakeCode -kirjastoaan skriptien kehittämiseen laitteelleni. Liitteenä löydät heksadesimaalitiedostot, jotka voit kopioida suoraan micro: bitille.

Alta löydät vastaavan JavaScript -koodin. Testaus altaassa toimi hyvin komentosarjan aiemman version kanssa, joten oletan, että ne toimivat myös. Pylväsdiagrammin perusversion lisäksi on myös hiusristikko (X) ja L-versio, joiden tarkoituksena on helpottaa lukemista erityisesti hämärässä. Valitse haluamasi.

sarake = 0

anna Meter = 0 anna jäädä = 0 anna Rivi = 0 anna Delta = 0 anna Ref = 0 anna 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 ("" + Rivi + "." + jää + "m") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) jos (Meter> = 400) {Row = 4} else if (Meter> = 300) {Row = 3} else if (Meter> = 200) {Row = 2} else if (Meter> = 100)) {Rivi = 1} muu {Rivi = 0} jäljellä = Mittari - Rivi * 100, jos (jäljellä> = 80) {Sarake = 4} muu, jos (jäljellä> = 60) {Sarake = 3} muu, jos (jäljellä> = 40) {Sarake = 2} muu jos (jää>> 20) {Sarake = 1} muu {Sarake = 0} kohteelle (olkoon ColA = 0; ColA <= Column; ColA ++) {led.plot (C olA, Rivi)} perus.tauko (500)}})

Vaihe 7: Enviro: bittiversio

Enviro: bittiversio
Enviro: bittiversio
Enviro: bittiversio
Enviro: bittiversio
Enviro: bittiversio
Enviro: bittiversio

Sillä välin sain enviro: bitin (20 GBP) ja power: bitin (6 GBP), molemmat Pimoronilta.

Kuten aiemmin mainittiin, enviro: bitin mukana tulee BME280 -paine-, kosteus- ja lämpötila -anturi, mutta myös valo- ja värianturi (katso sovellus täältä) ja MEMS -mikrofoni.

Power: bit on mukava ratkaisu micro: bitin virransyöttöön, ja siinä on virtakytkin.

Hienoa on, että molemmat ovat vain napsautusta ja käyttöä, ei juottamista, kaapeleita, leipälevyjä. Lisää enviro: bit mikro: bittiin, lataa koodi micro: bitiin, käytä sitä.

Tässä tapauksessa käytin micro-, power- ja enviro: bit -laitteita, laitoin ne Ziploc -pussiin, laitoin sen kirkkaaseen vedenpitävään muovipussiin matkapuhelimille valmiina. Erittäin nopea ja siisti ratkaisu. Katso kuvat. Kytkin on riittävän suuri käyttääkseen sitä suojakerrosten läpi.

Se on testattu vedessä, toimi hyvin. Noin 1,8 m syvyydessä mitattu arvo oli noin 1,7 m. Ei liian huono nopea ja halpa ratkaisu, mutta kaukana täydellisestä. Sopeutuminen kestää jonkin aikaa, joten sinun on ehkä pysyttävä tietyssä syvyydessä noin 10-15 sekuntia.

Vaihe 8: Kaapeli- ja anturianturin versio

Kaapeli- ja anturianturin versio
Kaapeli- ja anturianturin versio
Kaapeli- ja anturianturin versio
Kaapeli- ja anturianturin versio

Tämä oli itse asiassa ensimmäinen idea, joka syntyi viimeiseksi rakennetusta micro: bit -syvyysmittarista.

Tässä juotin BMP280-anturin 5 metrin pituiseen 4-johdinkaapeliin ja asetin naarashyppylaitteen toiseen päähän. Anturin suojaamiseksi vedeltä kaapeli vedettiin käytetyn viinikorkin läpi. Korkin päät suljettiin kuumalla liimalla. Ennen kuin olin leikannut kaksi lovia korkkiin, molemmat menivät ympäri. Sitten pakkasin anturin sienipalloon, asetin ilmapallon sen ympärille ja kiinnitin ilmapallon pään korkkiin (alempi lovi). sitten laitoin 3 40 g lyijypainoja toiseen ilmapalloon, kiedoin sen ensimmäisen ympärille, painot asetin ulkopuolelle ja kiinnitin ilmapallon pään toiseen loveen. Ilma poistettiin toisesta ilmapallosta, sitten kaikki kiinnitettiin teipillä. Katso kuvia, tarkempia kuvia voi seurata.

Hyppyjohdot liitettiin micro: bittiin reunaliittimen kautta, laite kytkettiin päälle ja referenssipaine asetettiin. Sen jälkeen anturipää päästettiin hitaasti altaan pohjaan (10 m: n hyppytorni, noin 4,5 m syvä).

Tulokset:

Yllätyksekseni se toimi jopa tämän pitkän kaapelin kanssa. Toisaalta, mutta ei yllättävää, mittausvirhe näytti lisääntyvän korkeammilla paineilla, ja arvioitu syvyys 4 m ilmoitettiin noin 3 m: ksi.

Mahdolliset sovellukset:

Joidenkin virheiden korjausten avulla laitetta voidaan käyttää syvyyden mittaamiseen noin 4 metriin.

Yhdessä Arduinon tai Raspberry Pi: n kanssa tätä voitaisiin käyttää altaan tai vesisäiliön täyttöpisteen mittaamiseen ja ohjaamiseen, esim. varoittamaan, jos vedenpinta ylittää tai alittaa tietyt kynnysarvot.

Outdoor Fitness Challenge
Outdoor Fitness Challenge
Outdoor Fitness -haaste
Outdoor Fitness -haaste

Juoksija Outdoor Fitness Challengessa

Suositeltava: