Բովանդակություն:

A Micro: bit Dive-O-Meter: 8 Step (նկարներով)
A Micro: bit Dive-O-Meter: 8 Step (նկարներով)

Video: A Micro: bit Dive-O-Meter: 8 Step (նկարներով)

Video: A Micro: bit Dive-O-Meter: 8 Step (նկարներով)
Video: Установка инсталляции. Монтаж водонагревателя. Ошибки. 2024, Նոյեմբեր
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

Ամառն այստեղ է, իր լողավազանի ժամանակը:

Ինքներդ ձեզ և ձեր միկրոյին տանելու լավ հնարավորություն. Մի փոքր դուրս եկեք լողավազանից, իսկ այս դեպքում `նույնիսկ:

Միկրո. Այն բաղկացած է ընդամենը միկրո բիտից, մարտկոցի տուփից կամ LiPo- ից, միկրո եզրին միակցիչից `բիթից, BMP280 կամ BME280 բարոմետրիկ ճնշման սենսորից և որոշ ցատկող մալուխներից: Օգտագործելով Pimoroni enviro. Bit- ը ամեն ինչ ավելի պարզեցնում է: Այս ամենը փաթեթավորված է անջրանցիկ թափանցիկ պլաստմասե կամ սիլիկոնե տոպրակների երկու շերտերի մեջ, որոնցից որոշ կշիռներ ավելացվել են `փոխադրող ուժը փոխհատուցելու համար:

Դա միկրո. Բիթ ճնշման սենսորային սարքի կիրառում է, որը ես նկարագրել էի նախորդ հրահանգում:

Դուք կարող եք օգտագործել սարքը ե. է. ընկերների և ընտանիքի հետ սուզվելու մրցումների համար, կամ պարզելու, թե իրականում որքան խորն է այդ լճակը: Ես փորձարկեցի այն ՝ օգտագործելով իմ հարևանության ամենախորը լողավազանը և պարզեցի, որ այն աշխատում է առնվազն 3,2 մետր խորության վրա: Մոտ հինգ մետրը տեսական առավելագույնն է: Մինչ այժմ ես ոչ մի մանրամասնությամբ չեմ ստուգել դրա ճշգրտությունը, բայց հաղորդված թվերն առնվազն սպասված տիրույթում էին:

Որոշ դիտողություններ. Սա չի նշանակում գործիք լինել իրական ջրասուզակների համար: Ձեր միկրո. Բիտը կթրջվի, եթե թրջվի: Դուք օգտագործում եք այս հրահանգը ձեր ռիսկով:

Թարմացրեք մայիսի 27-ին. Այժմ կարող եք գտնել MakeCode HEX- սցենար, որը կարող եք ուղղակիորեն բեռնել ձեր միկրո: բիթին: Տես քայլ 6: Թարմացրեք հունիսի 13 -ին. Enviro. Bit և կաբելային տարբերակ ավելացվեց: Տե՛ս 7 և 8 քայլերը

Քայլ 1. Սարքի հետևում գտնվող տեսությունը

Մենք ապրում ենք օդի օվկիանոսի հատակին: Այստեղ ճնշումը մոտ 1020 hPa է (hectoPascal), քանի որ օդային սյունակի քաշը այստեղ դեպի տիեզերք մոտ 1 կգ քառակուսի սանտիմետրի վրա է:

Densityրի խտությունը շատ ավելի բարձր է, քանի որ մեկ լիտր օդը կշռում է մոտ 1.2 գ, իսկ մեկ լիտր ջուրը `1 կգ, այսինքն ՝ մոտ 800 անգամ: Այսպիսով, քանի որ բարոմետրիկ ճնշման անկումը կազմում է մոտ 1 hPa յուրաքանչյուր 8 մետր բարձրության համար, ճնշման ավելացումը 1 hPa է ջրի մակերևույթից ցածր յուրաքանչյուր սանտիմետրի համար: Մոտ 10 մ խորության վրա ճնշումը 2000 hPa է կամ երկու մթնոլորտ:

Usedնշման սենսորը, որն օգտագործվում է այստեղ, ունի չափման միջակայք ՝ 750 -ից մինչև 1500 hPa, մոտ մեկ hPa լուծաչափով: Սա նշանակում է, որ մենք կարող ենք չափել մինչև 5 մետր խորություն ՝ մոտ 1 սմ լուծույթով:

Սարքը կլինի Boyle Marriotte տիպի խորության չափիչ: Դրա հավաքումը բավականին պարզ է և նկարագրված է հետագա փուլում: Սենսորն օգտագործում է I2C արձանագրությունը, ուստի միկրո. Բիթի եզրային միակցիչը հարմար է: Ամենակարևոր մասը անջրանցիկ պայուսակներն են, քանի որ ցանկացած խոնավություն կվնասի միկրոին ՝ բիթին, տվիչին կամ մարտկոցին: Քանի որ պայուսակների ներսում որոշ օդը կպահպանվի, կշիռների ավելացումն օգնում է փոխհատուցել լողացող ուժը:

Քայլ 2: Սարքի օգտագործումը

Օգտագործելով Սարքը
Օգտագործելով Սարքը
Օգտագործելով Սարքը
Օգտագործելով Սարքը
Օգտագործելով Սարքը
Օգտագործելով Սարքը
Օգտագործելով Սարքը
Օգտագործելով Սարքը

Սցենարը, ինչպես մանրամասն ցույց է տրված հետագա քայլում, ճնշման հաշվիչի համար ավելի վաղ մշակված սցենարի տատանումն է: Սարքը փորձարկելու համար կարող եք օգտագործել այնտեղ նկարագրված պարզ ճնշման պալատը:

Սուզվելու նպատակով այն ցույց է տալիս խորությունը մետրերով, ինչպես հաշվարկված է ճնշման չափումներից, կամ որպես գրաֆիկ 20 սմ քայլերով կամ, ըստ ցանկության, թվերով:

Օգտագործելով A կոճակը միկրո: բիտի վրա, դուք ընթացիկ ճնշումը կդնեք որպես հղման ճնշման արժեք: Մուտքը հաստատելու համար մատրիցան մեկ անգամ թարթում է:

Դուք կարող եք դա օգտագործել կամ տեսնել, թե որքան խորն եք սուզվում, կամ գրանցել, թե որքան խորն եք սուզվել:

Առաջին դեպքում նշեք արտաքին օդի ճնշումը որպես հղում: Երկրորդ դեպքում ճնշումը դրեք ձեր ամենախորը կետում, որտեղ գտնվում եք որպես ճնշման հղում, ինչը թույլ է տալիս ցույց տալ, թե որքան խորն եք եղել, երբ մակերեսին վերադառնալիս եք եղել: B կոճակը ցուցադրում է ճնշման տարբերությունից հաշվարկված խորությունը որպես թվային արժեք մետրերով:

Քայլ 3. Պահանջվող նյութեր

Պահանջվող նյութեր
Պահանջվող նյութեր
Պահանջվող նյութեր
Պահանջվող նյութեր
Պահանջվող նյութեր
Պահանջվող նյութեր

Միկրո: բիթ: Օրինակ ՝ 13 GBP/16 եվրո Pimoroni UK/DE- ում:

Edgeայրային միակցիչ (Kitronic կամ Pimoroni), 5 GBP: Ես օգտագործեցի Kitronic տարբերակը:

BMP/BME280 ցուցիչ: Ես օգտագործել եմ BMP280 սենսոր Banggood- ից ՝ 4,33 եվրո երեք միավորի համար:

Թռիչքային մալուխներ `սենսորը և եզրային միակցիչը միացնելու համար:

Վերևի եզրային միակցիչ/սենսորային համադրության հիանալի այլընտրանք կարող է լինել Pimoroni enviro: bit (մինչ այժմ փորձարկված չէ, տես վերջին քայլը):

Մարտկոցի փաթեթ կամ LiPo միկրո -ի համար. Բիթ:

Անջատիչով հոսանքի մալուխ (ընտրովի, բայց օգտակար): Մաքրել անջրանցիկ պայուսակները: Ես բջջային հեռախոսի համար օգտագործեցի սիլիկոնե պայուսակ և մեկ կամ երկու փոքրիկ ziploc պայուսակներ: Համոզվեք, որ նյութը բավականաչափ հաստ է, այնպես որ եզրային միակցիչի քորոցները չեն վնասի պայուսակները:

Որոշ կշիռներ: Ես օգտագործել եմ կապարի քաշի կտորներ, որոնք օգտագործվում են ձկնորսության համար:

Arduino IDE և մի քանի գրադարաններ:

Քայլ 4: Հավաքում

Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով
Ժողով

Տեղադրեք Arduino IDE- ն և անհրաժեշտ գրադարանները: Մանրամասները նկարագրված են այստեղ:

(Չի պահանջվում MakeCode սցենարի համար:) Հաշվի առնելով, որ դուք օգտագործում եք Kitronik եզրային միակցիչը, կպցրեք կապերը I2C 19 և 20. նավահանգիստներին: Սա պարտադիր չէ Pimoroni եզրային միակցիչի համար: Վերնագիծը սենսորին կպցրեք և միացրեք սենսորը և եզրային միակցիչը ՝ օգտագործելով jumper մալուխներ: VCC- ն միացրեք 3 Վ -ին, GND- ին `0 Վ -ին, SCL- ին` 19 պորտին և SDA- ին `20 -րդ պորտին: Այլապես միացրեք մալուխները անմիջապես ճեղքմանը: Միացրեք միկրո: բիթը մեր համակարգչին USB մալուխի միջոցով: Բացեք տրամադրված սցենարը և միացրեք այն micro: bit- ին: Օգտագործեք սերիական մոնիտորը կամ գծանկարիչը, ստուգեք ՝ արդյոք սենսորը տալիս է ողջամիտ տվյալներ: Անջատեք միկրո. Բիթը ձեր համակարգչից: Միացրեք մարտկոցը կամ LiPo- ն միկրո. Բիթ: Սեղմեք կոճակը B, կարդալ արժեքը Սեղմեք կոճակը A. Սեղմեք կոճակը B, կարդացեք արժեքը: Տեղադրեք սարքը հերմետիկ պայուսակների երկու շերտերում ՝ պայուսակներում թողնելով միայն շատ քիչ օդ: Դեպքում, տեղադրեք ծանրություն `լողացող ուժը փոխհատուցելու համար: Ստուգեք, արդյոք ամեն ինչ անջրանցիկ է: Գնացեք լողավազան և խաղացեք:

Քայլ 5. MicroPython Script

Սցենարը պարզապես սենսորից վերցնում է ճնշման արժեքը, այն համեմատում է հղման արժեքի հետ, այնուհետև հաշվարկում է խորությունը տարբերությունից: Արժեքները որպես գրաֆիկ ցուցադրելու համար վերցվում են խորության արժեքի ամբողջ թիվը և մնացած մասը: Առաջինը սահմանում է գծի բարձրությունը: Մնացածը բաժանված է հինգ աղբարկղի, որոնք իսկապես որոշում են ձողերի երկարությունը: Վերին մակարդակը 0 - 1 մ է, ամենացածրը `4 - 5 մ: Ինչպես նշվեց նախկինում, կոճակը սեղմելը սահմանում է հղման ճնշումը, B կոճակը ցուցադրում է« հարաբերական խորությունը »մետրերով, որը ցուցադրվում է որպես թվային արժեք: Մինչ այժմ, բացասական և դրական արժեքները նույն կերպ ներկայացվում են որպես լուսագրիչ LED մատրիցի վրա: Ազատ զգացեք ձեր կարիքների համար սցենարը օպտիմալացնելու համար: Arduino IDE- ի սերիական մոնիտորի կամ գծագրիչի արժեքները ներկայացնելու համար կարող եք միացնել որոշակի տողեր: Ֆունկցիան ընդօրինակելու համար կարող եք կառուցել այն սարքը, որը ես նկարագրեցի նախորդ հրահանգում:

Ես չեմ գրել սցենարի այն հատվածը, որը կարդում է սենսորը: Աղբյուրի մասին վստահ չեմ, բայց սիրում եմ շնորհակալություն հայտնել հեղինակներին: Օպտիմալացման ցանկացած ուղղում կամ ակնարկ ողջունելի է:

#ներառում

#ներառել Adafruit_Microbit_Matrix microbit; #սահմանեք BME280_ADDRESS 0x76 անստորագիր երկար int hum_raw, temp_raw, pres_raw; ստորագրված երկար int t_fine; uint16_t փորել_Տ 1; int16_t dig_T2; int16_t dig_T3; uint16_t փորել_Փ 1; int16_t dig_P2; int16_t dig_P3; int16_t dig_P4; int16_t dig_P5; int16_t փորել_Փ 6; int16_t dig_P7; int16_t dig_P8; int16_t dig_P9; int8_t փորել_Հ 1; int16_t փորել_Հ2; int8_t փորել_Հ 3; int16_t dig_H4; int16_t dig_H5; int8_t փորել_Հ 6; կրկնակի սեղմել_որմալ = 1015; // մեկնարկային արժեք կրկնակի խորություն; // հաշվարկված խորություն // ------------------------------------------------ ------------------------------------------------------ ---------------------- անվավեր կարգավորում () {uint8_t osrs_t = 1; // peratերմաստիճանի գերազանցում x 1 uint8_t osrs_p = 1; // ureնշման գերբարձրացում x 1 uint8_t osrs_h = 1; // Խոնավության գերազանցում x 1 uint8_t ռեժիմ = 3; // Նորմալ ռեժիմ uint8_t t_sb = 5; // Tstandby 1000ms uint8_t զտիչ = 0; // terտել անջատված uint8_t spi3w_en = 0; // 3-մետաղալար SPI Անջատել uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | ռեժիմ; uint8_t config_reg = (t_sb << 5) | (զտիչ << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Serial.begin (9600); // սահմանել սերիական նավահանգստի արագություն Serial.print ("Pressնշում [hPa]"); // վերնագիր սերիական ելքի համար Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); ուշացում (1000); } // --------------------------------------------------- -------------------------------------------------- դատարկ շրջան () {կրկնակի temp_act = 0.0, press_act = 0.0, hum_act = 0.0; ստորագրված երկար int temp_cal; անստորագիր երկար int press_cal, hum_cal; int N; int M; կրկնակի սեղմում_դելտա; // հարաբերական ճնշում int deep_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); // խորությունը մետր խորություն_մ = int (abs (խորություն)); // խորություն im մետր խորություն_ սմ = (աբս (խորություն) - խորություն_մ); // մնացորդ /* // օգտագործվում է զարգացման համար Serial.println (խորություն); Serial.println (խորություն_մ); Serial.println (խորություն_ սմ); */ // Բարգրաֆի քայլեր եթե (խորություն_ սմ> 0.8) {// սահմանել ձողերի երկարություն (N = 4); } else if (խորություն_ սմ> 0.6) {(N = 3); } else if (խորություն_ սմ> 0.4) {(N = 2); } else if (խորություն_ սմ> 0.2) {(N = 1); } այլ {(N = 0); }

եթե (խորություն_մ == 4) {// սահմանել մակարդակ == մետր

(M = 4); } else if (deep_m == 3) {(M = 3); } else if (deep_m == 2) {(M = 2); } else if (deep_m == 1) {(M = 1); } else {(M = 0); // վերին տող} /* // օգտագործվում է զարգացման նպատակների համար Serial.print ("m:"); Serial.println (խորություն_մ); Serial.print ("սմ:"); Serial.println (խորություն_ սմ); Serial.print ("M:"); Serial.println (M); // զարգացման նպատակով Serial.print ("N:"); Serial.println (N); // զարգացման նպատակներով հետաձգում (500); */ // գծել bargraph 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 տվյալները [32], i = 0; // Ուղղել 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Մետաղալար. Խնդրում ենք (BME280_ADDRESS, 24); // Fix 2014/while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Ավելացնել 2014/Wire.write (0xA1); // Ավելացնել 2014/Wire.endTransmission (); // Ավելացնել 2014/Wire.request. From (BME280_ADDRESS, 1); // Ավելացնել 2014/տվյալներ = Wire.read (); // Ավելացնել 2014/i ++; // Ավելացնել 2014/Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Մետաղալար. Խնդրանք (BME280_ADDRESS, 7); // Fix 2014/while (Wire.available ()) {data = Wire.read (); i ++; } 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]; // Fix 2014/} void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (տվյալներ); Wire.endTransmission (); } void readData () {int i = 0; uint32_t տվյալներ [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Մետաղալար. Խնդրանք (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); i ++; } 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; } անստորագիր երկար int calibration_P (ստորագրված երկար int adc_P) {ստորագրված երկար int var1, var2; անստորագիր երկար int P; var1 = (((ստորագրված երկար int) t_fine) >> 1) - (ստորագրված երկար int) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((ստորագրված երկար int) dig_P6); var2 = var2 + ((var1 * ((ստորագրված երկար int) dig_P5)) 2) + (((ստորագրված երկար int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((ստորագրված երկար int) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768+var1))*((ստորագրված երկար int) dig_P1)) >> 15); if (var1 == 0) {վերադարձ 0; } P = (((չստորագրված երկար int) (((ստորագրված երկար int) 1048576) -adc_P)-(var2 >> 12)))*3125; եթե (P <0x80000000) {P = (P << 1) / ((անստորագիր երկար int) 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) ((ստորագրված երկար int) P + ((var1 + var2 + dig_P7) >> 4)); վերադարձ P; } unsigned long int calibration_H (ստորագրված long int adc_H) {ստորագրված երկար int v_x1; v_x1 = (t_fine - ((ստորագրված երկար int) 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); վերադարձ (անստորագիր երկար int) (v_x1 >> 12);

Քայլ 6: Հիմնական պարզեցում. MakeCode/JavaScript կոդ

Հիմնական պարզեցում. MakeCode/JavaScript կոդ
Հիմնական պարզեցում. MakeCode/JavaScript կոդ
Հիմնական պարզեցում. MakeCode/JavaScript կոդ
Հիմնական պարզեցում. MakeCode/JavaScript կոդ

2018 -ի մայիսին Պիմորոնին թողարկեց enviro: bit- ը, որն ուղեկցվում է BME280 ճնշման/խոնավության/ջերմաստիճանի տվիչով, TCS3472 լույսի և գույնի տվիչով և MEMS խոսափողով: Բացի այդ, նրանք առաջարկում են JavaScript գրադարան MakeCode խմբագրի համար և MicroPython գրադարան այս տվիչների համար:

Ես օգտագործում էի նրանց MakeCode գրադարանը `իմ սարքի համար սցենարներ մշակելու համար: Կից գտնում եք ըստ վեցանկյուն ֆայլերի, որոնք կարող եք պատճենել անմիջապես ձեր միկրո: բիթում:

Ստորև կգտնեք համապատասխան JavaScript ծածկագիրը: Լողավազանում փորձարկումները լավ աշխատեցին սցենարի ավելի վաղ տարբերակի հետ, ուստի ենթադրում եմ, որ նրանք նույնպես կաշխատեն: Բացի հիմնական, բարգրաֆիկ տարբերակից, կան նաև խաչաձև տարբերակ (X) և L- տարբերակ, որոնք նախատեսված են ընթերցումը հեշտացնելու համար, հատկապես ցածր լուսավորության պայմաններում: Ընտրեք ձեր նախընտրածը:

թող Սյունակ = 0

let Meter = 0 let let = 0 let 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)} այլ դեպքում, եթե (input.buttonIsPressed (Button. B)) {basic.showString ("" + Տող + "." + մնում + "մ") 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) {Տող = 1} այլ {Տող = 0} մնա = Մետր - Տող * 100 եթե (մնա> = 80) {Սյունակ = 4} այլ եթե (մնա> = 60) {Սյունակ = 3} այլ եթե (մնա> = 40) {Սյունակ = 2} այլ, եթե (մնա> = 20) {Սյունակ = 1} այլ {Սյունակ = 0} համար (թող ColA = 0; ColA <= Սյունակ; ColA ++) {led.plot (C olA, Row)} Basic.pause (500)}})

Քայլ 7: The Enviro: bit Version

The Enviro: bit տարբերակ
The Enviro: bit տարբերակ
The Enviro: bit տարբերակ
The Enviro: bit տարբերակ
The Enviro: bit տարբերակ
The Enviro: bit տարբերակ

Այդ ընթացքում ես ստացա enviro: bit (20 GBP) և հզորությունը `bit (6 GBP), երկուսն էլ Pimoroni- ից:

Ինչպես արդեն նշվեց, շրջապատը. Բիթը գալիս է BME280 ճնշման, խոնավության և ջերմաստիճանի տվիչով, ինչպես նաև լույսի և գույնի տվիչով (տես դիմումը այստեղ) և MEMS խոսափող:

Հզորությունը. Բիթը լավ լուծում է միկրո բիթը սնուցելու համար և գալիս է միացման/անջատման անջատիչով:

Հիանալին այն է, որ երկուսն էլ պարզապես սեղմում են և օգտագործում, առանց զոդման, մալուխներ, տախտակներ: Ավելացրեք enviro: bit միկրո: bit, բեռնեք ձեր ծածկագիրը micro: bit, օգտագործեք այն:

Այս դեպքում ես օգտագործեցի միկրո, էներգիա և մթնոլորտ. Շատ արագ և կոկիկ լուծում: Տես նկարները: Անջատիչն այնքան մեծ է, որ այն կարող է օգտագործվել պաշտպանական շերտերի միջոցով:

Այն փորձարկվել է ջրում, լավ էր աշխատում: Մոտ 1,8 մ խորության վրա չափված արժեքը կազմել է մոտ 1,7 մ: Շատ վատ չէ արագ և էժան լուծման համար, բայց հեռու է կատարյալ լինելուց:Հարմարվելու համար որոշ ժամանակ է պահանջվում, այնպես որ գուցե անհրաժեշտ լինի մոտ 10-15 վայրկյան մնալ որոշակի խորության վրա:

Քայլ 8: Մալուխի և տվիչի զոնդի տարբերակ

Մալուխի և տվիչի զոնդի տարբերակ
Մալուխի և տվիչի զոնդի տարբերակ
Մալուխի և տվիչի զոնդի տարբերակ
Մալուխի և տվիչի զոնդի տարբերակ

Սա իրականում առաջին գաղափարն էր, որն ունեցավ միկրո. Բիտ խորության հաշվիչի համար, վերջինը, որը պետք է կառուցվեր:

Այստեղ ես BMP280 սենսորը միացրեցի 4-մետաղալար մալուխի 5 մ-ի վրա և մյուս ծայրում տեղադրեցի կին ցատկող: Սենսորը ջրից պաշտպանելու համար մալուխը անցնում էր օգտագործված գինու խցանի միջով: Խցանափայտի ծայրերը կնքված էին տաք սոսինձով: Նախքան խցանափայտի երկու խազ կտրելը, երկուսն էլ պտտվում էին դրա շուրջը: Հետո ես սենսորը փաթեթավորեցի սպունգ գնդակի մեջ, դրա շուրջը դրեցի փուչիկ և ամրացրեցի փուչիկի ծայրը խցանափայտի վրա (ցածր խազ): այնուհետև ես տեղադրեցի 3 40 գ կապարի կշիռներ երկրորդ փուչիկի մեջ, այն փաթաթեցի առաջինի շուրջը, կշիռները դրեցի արտաքին կողմում և ամրացրեցի փուչիկի ծայրը երկրորդ խազին: Երկրորդ օդապարիկից օդը հանվեց, ապա ամեն ինչ ամրացվեց կպչուն ժապավենով: Տեսեք պատկերները, ավելի մանրամասն կարող եք հետևել դրանց:

Թռիչքները միացված էին միկրո. Հետո սենսորային գլուխը դանդաղ արձակվեց դեպի լողավազանի հատակը (10 մ ցատկող աշտարակ, մոտ 4,5 մ խորություն):

Արդյունքներ:

Ի զարմանս ինձ, այն աշխատեց նույնիսկ այս երկար մալուխի միջոցով: Մյուս կողմից, բայց զարմանալի չէ, որ չափման սխալը կարծես ավելի մեծ էր ավելի բարձր ճնշումների դեպքում, և գնահատված 4 մ խորությունը հաղորդվում էր մոտ 3 մ:

Պոտենցիալ ծրագրեր.

Սխալների որոշ ուղղումներով, սարքը կարող է օգտագործվել մոտ 4 մ խորություն չափելու համար:

Arduino- ի կամ Raspberry Pi- ի հետ համատեղ դա կարող է օգտագործվել լողավազանի կամ ջրի բաքի լցման կետը չափելու և վերահսկելու համար, օրինակ ՝ է. զգուշացում առաջացնել, եթե ջրի մակարդակը որոշ շեմերից բարձր կամ ցածր է:

Բացօթյա ֆիթնես մարտահրավեր
Բացօթյա ֆիթնես մարտահրավեր
Բացօթյա ֆիթնես մարտահրավեր
Բացօթյա ֆիթնես մարտահրավեր

Երկրորդ տեղ ՝ բացօթյա ֆիթնես մարտահրավերում

Խորհուրդ ենք տալիս: