İçindekiler:

Mikro:bit Dalış-O-Metre: 8 Adım (Resimlerle)
Mikro:bit Dalış-O-Metre: 8 Adım (Resimlerle)

Video: Mikro:bit Dalış-O-Metre: 8 Adım (Resimlerle)

Video: Mikro:bit Dalış-O-Metre: 8 Adım (Resimlerle)
Video: ASKERDE DÖVME NASIL YAPILIR? 2024, Temmuz
Anonim
Mikro:bit Dalış-O-Metre
Mikro:bit Dalış-O-Metre
Mikro:bit Dalış-O-Metre
Mikro:bit Dalış-O-Metre
Mikro:bit Dalış-O-Metre
Mikro:bit Dalış-O-Metre

Yaz geldi, havuz zamanı!

Kendinizi ve micro:bit'inizi dışarı, hatta bu durumda yüzme havuzuna götürmek için iyi bir fırsat.

Burada açıklanan micro:bit dalış ölçer, ne kadar derine daldığınızı veya dalış yapmakta olduğunuzu ölçmenizi sağlayan basit bir kendin yap derinlik ölçerdir. Yalnızca bir micro:bit, bir pil takımı veya LiPo, micro:bit için bir kenar konektörü, bir BMP280 veya BME280 barometrik basınç sensörü ve bazı atlama kablolarından oluşur. Pimoroni enviro:bit'i kullanmak işleri hiç olmadığı kadar basitleştirir. Bütün bunlar, kaldırma kuvvetini telafi etmek için bazı ağırlıklar eklenmiş, iki kat su geçirmez şeffaf plastik veya silikon torba içinde paketlenmiştir.

Daha önceki bir talimatta tarif ettiğim mikro: bit basınç sensörü cihazının bir uygulamasıdır.

Cihazı kullanabilirsiniz e. G. Arkadaşlarınız ve ailenizle dalış yarışmaları yapmak veya o göletin gerçekten ne kadar derin olduğunu öğrenmek için. Mahallemdeki en derin havuzu kullanarak test ettim ve en az 3,2 metre derinliğe kadar çalıştığını gördüm. Yaklaşık beş metre teorik maksimum değerdir. Şu ana kadar kesinliğini ayrıntılı olarak test etmedim, ancak bildirilen rakamlar en azından beklenen aralıktaydı.

Bazı açıklamalar: Bu, gerçek dalgıçlar için bir araç değildir. Micro:bit'iniz ıslanırsa zarar görür. Bu talimatı kendi sorumluluğunuzdadır kullanırsınız.

27 Mayıs Güncellemesi: Artık doğrudan micro:bit'inize yükleyebileceğiniz bir MakeCode HEX betiği bulabilirsiniz. 6. Adıma bakın 13 Haziran Güncellemesi: Bir Enviro:bit ve bir kablo sürümü eklendi. 7. ve 8. adımlara bakın

Adım 1: Cihazın Arkasındaki Teori

Bir hava okyanusunun dibinde yaşıyoruz. Buradaki basınç yaklaşık 1020 hPa'dır (hektoPascal), çünkü buradaki hava sütununun uzaya ağırlığı yaklaşık 1 kg/santimetredir.

Bir litre hava ağırlığı yaklaşık 1,2 g ve bir litre su 1 kg, yani yaklaşık 800 kat olduğundan suyun yoğunluğu çok daha yüksektir. Barometrik basınçtaki düşüş her 8 metre yükseklik için yaklaşık 1 hPa olduğundan, su yüzeyinin altındaki her santimetre için basınç kazancı 1 hPa'dır. Yaklaşık 10 m derinlikte, basınç 2000 hPa veya iki atmosferdir.

Burada kullanılan basınç sensörü, yaklaşık bir hPa çözünürlükte 750 ile 1500 hPa arasında bir ölçüm aralığına sahiptir. Bu, yaklaşık 1 cm çözünürlükte 5 metreye kadar derinlikleri ölçebileceğimiz anlamına gelir.

Cihaz Boyle Marriotte tipi bir derinlik ölçer olacaktır. Montajı oldukça basittir ve daha sonraki bir adımda açıklanmıştır. Sensör, I2C protokolünü kullanır, bu nedenle micro:bit için bir kenar konektörü kullanışlı olur. En kritik kısım su geçirmez torbalardır, çünkü herhangi bir nem micro:bit'e, sensöre veya pile zarar verir. Torbaların içinde bir miktar hava tutulacağından, ağırlıkların eklenmesi kaldırma kuvvetini telafi etmeye yardımcı olur.

2. Adım: Cihazı Kullanma

Cihazı Kullanma
Cihazı Kullanma
Cihazı Kullanma
Cihazı Kullanma
Cihazı Kullanma
Cihazı Kullanma
Cihazı Kullanma
Cihazı Kullanma

Daha sonraki bir adımda ayrıntılı olarak gösterildiği gibi komut dosyası, daha önce bir basınç ölçer için geliştirdiğim bir komut dosyasının bir varyasyonudur. Cihazı test etmek için burada açıklanan basit basınç odasını kullanabilirsiniz.

Dalış amacıyla, basınç ölçümlerinden hesaplanan derinliği metre cinsinden, 20 cm'lik adımlarla çubuk grafik olarak veya istek üzerine sayılarla gösterir.

Mikro:bit üzerindeki A düğmesini kullanarak mevcut basıncı referans basınç değeri olarak ayarlarsınız. Girişi onaylamak için matris bir kez yanıp söner.

Bunu, ne kadar derine daldığınızı görmek veya ne kadar derine daldığınızı kaydetmek için kullanabilirsiniz.

İlk durumda, mevcut dış hava basıncını referans olarak ayarlayın. İkinci durumda, basıncı, basınç referansı olarak en derin noktada ayarlayın, bu da yüzeye geri döndüğünüzde ne kadar derinde olduğunuzu göstermenize olanak tanır. B düğmesi, basınç farkından hesaplanan derinliği metre cinsinden sayısal bir değer olarak görüntüler.

Adım 3: Gerekli Malzemeler

Gerekli malzemeler
Gerekli malzemeler
Gerekli malzemeler
Gerekli malzemeler
Gerekli malzemeler
Gerekli malzemeler

Bir mikro: bit. Örneğin. Pimoroni UK/DE'de 13 GBP/16 Euro'dan.

Bir kenar konektörü (Kitronic veya Pimoroni), 5 GBP. Kitronik versiyonunu kullandım.

Bir BMP/BME280 sensörü. Üç ünite için Banggood'dan bir BMP280 sensör, 4.33 Euro kullandım.

Sensörü ve kenar konektörünü bağlamak için atlama kabloları.

Yukarıdaki kenar konektörü/sensör kombinasyonuna mükemmel bir alternatif Pimoroni enviro:bit olabilir (şimdi test edilmedi, son adıma bakın).

Micro:bit için bir pil takımı veya LiPo.

Anahtarlı bir güç kablosu (isteğe bağlı ancak yardımcı olur). Şeffaf su geçirmez torbalar. Cep telefonu için silikon bir kese ve bir veya iki küçük ziploc çanta kullandım. Malzemenin yeterince kalın olduğundan emin olun, böylece kenar konektöründeki pimler çantalara zarar vermez.

Bazı ağırlıklar. Balık tutmak için kullanılan kurşun ağırlık parçalarını kullandım.

Arduino IDE ve birkaç kütüphane.

Adım 4: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Arduino IDE'yi ve gerekli kütüphaneleri kurun. Ayrıntılar burada açıklanmıştır.

(MakeCode betiği için gerekli değildir.) Kitronik kenar konektörünü kullandığınızda, pimleri I2C bağlantı noktaları 19 ve 20'ye lehimleyin. Bu, Pimoroni kenar konektörü için gerekli değildir. Başlığı sensör çıkışına lehimleyin ve atlama kabloları kullanarak sensörü ve kenar konektörünü bağlayın. VCC'yi 3V'a, GND'yi 0 V'a, SCL'yi bağlantı noktası 19'a ve SDA'yı bağlantı noktası 20'ye bağlayın. Alternatif olarak kabloları doğrudan çıkışa lehimleyin. micro:bit'i bir USB kablosuyla bilgisayarımıza bağlayın. Sağlanan komut dosyasını açın ve micro:bit'e flash yapın. Seri monitör veya çiziciyi kullanın, sensörün makul veriler verip vermediğini kontrol edin. micro:bit'i bilgisayarınızdan ayırın. Pili veya LiPo'yu micro:bit'e bağlayın. B düğmesine basın, değeri okuyun A düğmesine basın. B düğmesine basın, değeri okuyun. Cihazı, torbalarda çok az hava kalacak şekilde iki kat hava geçirmez torbaya yerleştirin. Bu durumda, kaldırma kuvvetini telafi etmek için bir ağırlık yerleştirin. Her şeyin su geçirmez olup olmadığını kontrol edin. Havuza git ve oyna.

Adım 5: MicroPython Komut Dosyası

Komut dosyası, sensörden basınç değerini alır, referans değeriyle karşılaştırır ve ardından farktan derinliği hesaplar. Değerlerin çubuk grafik olarak görüntülenmesi için derinlik değerinin tamsayı ve kalan kısmı alınır. Birincisi, çizginin yüksekliğini tanımlar. Kalan kısım, çubukların uzunluğunu tanımlayan beş bölmeye bölünmüştür. Üst seviye 0 - 1 m, en düşük 4 - 5 m'dir. Daha önce belirtildiği gibi, A düğmesine basmak referans basıncını ayarlar, B düğmesi sayısal bir değer olarak görüntülenen metre cinsinden "bağıl derinliği" görüntüler. Artık negatif ve pozitif değerler aynı şekilde LED matrisi üzerinde çubuk grafik olarak sunulmaktadır. Senaryoyu ihtiyaçlarınıza göre optimize etmekten çekinmeyin. Arduino IDE'nin seri monitöründe veya çizicisinde değerleri sunmak için belirli satırların sesini açabilirsiniz. İşlevi taklit etmek için, önceki bir talimatta tanımladığım cihazı oluşturabilirsiniz.

Senaryonun sensörü okuyan kısmını yazmadım. Kaynağından emin değilim ama yazarlara teşekkür etmek isterim. Optimizasyon için herhangi bir düzeltme veya ipucu bekliyoruz.

#Dahil etmek

#include Adafruit_Microbit_Matrix mikrobit; #define BME280_ADDRESS 0x76 unsigned uzun int hum_raw, temp_raw, pres_raw; imzalı uzun 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; çift basma_norm = 1015; // bir başlangıç değeri çift derinlik; // hesaplanan derinlik //---------------------------------------------------------- -------------------------------------------------- ---------------------- geçersiz kurulum() { uint8_t osrs_t = 1; //Sıcaklık aşırı örnekleme x 1 uint8_t osrs_p = 1; //Basınç aşırı örnekleme x 1 uint8_t osrs_h = 1; //Nem aşırı örnekleme x 1 uint8_t modu = 3; //Normal mod uint8_t t_sb = 5; //Tstandby 1000ms uint8_t filtre = 0; //Filtreleme kapalı uint8_t spi3w_en = 0; //3-wire SPI Devre Dışı Bırak uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mod; uint8_t config_reg = (t_sb << 5) | (filtre <<2) | spi3w_tr; uint8_t ctrl_hum_reg = osrs_h; pinMode(PIN_BUTTON_A, INPUT); pinMode(PIN_BUTTON_B, INPUT); Seri.başla(9600); // seri port hızını ayarla Serial.print("Basınç [hPa] "); // seri çıktı için başlık Wire.begin(); writeReg(0xF2, ctrl_hum_reg); writeReg(0xF4, ctrl_meas_reg); writeReg(0xF5, config_reg); readTrim(); // mikrobit.begin(); // mikrobit.print("x"); gecikme (1000); } //------------------------------------------------ ---------------------------------------------- geçersiz döngü() { çift temp_act = 0.0, press_act = 0.0, hum_act=0.0; imzalı uzun int temp_cal; unsigned long int press_cal, hum_cal; int N; int M; double press_delta; // bağıl basınç int derinlik_m; // metre cinsinden derinlik, tamsayı kısmı çift derinlik_cm; // cm cinsinden kalan readData(); // temp_cal = kalibrasyon_T(temp_raw); press_cal = kalibrasyon_P(pres_raw); // hum_cal = kalibrasyon_H(hum_raw); // temp_act = (çift)temp_cal / 100.0; press_act = (çift)press_cal / 100.0; // hum_act = (çift)hum_cal / 1024.0; mikrobit.clear(); //LED matrisini sıfırla // Düğme A, gerçek değeri referans olarak ayarlar (P sıfır) // Düğme B, mevcut değeri metre cinsinden derinlik olarak görüntüler (basınç farkından hesaplanır) if (! digitalRead(PIN_BUTTON_A)) { // normal hava basıncını ayarlar sıfır olarak press_norm = press_act; // microbit.print("P0:"); // microbit.print(basın_norm, 0); // microbit.print(" hPa"); microbit.fillScreen(LED_ON); // gecikmeyi onaylamak için bir kez yanıp söner (100); }else if (! digitalRead(PIN_BUTTON_B)) { // derinliği metre cinsinden göster microbit.print(derinlik, 2); mikrobit.print("m"); // Serial.println(""); }else{ // basınç farkından derinliği hesapla press_delta = (press_act - press_norm); // bağıl basınç derinliğini hesapla = (press_delta/100); // metre cinsinden derinlik derinlik_m = int(mutlak(derinlik)); // derinlik im metre derinlik_cm = (abs(derinlik) - derinlik_m); // kalan /* // geliştirme için kullanılır Serial.println(derinlik); Seri.println(derinlik_m); Seri.println(derinlik_cm); */ // Çubuk grafiği için adımlar if (depth_cm> 0.8){ // çubukların uzunluğunu ayarlayın (N=4); } else if (depth_cm > 0.6){ (N=3); } else if (depth_cm > 0.4){ (N=2); } else if (depth_cm > 0.2){ (N=1); } başka { (N=0); }

if (depth_m == 4){ // seviyeyi ayarla == metre

(M=4); } else if (depth_m == 3){ (M=3); } else if (depth_m == 2){ (M=2); } else if (depth_m == 1){ (M=1); } başka { (M=0); // üst sıra } /* // geliştirme amaçlı kullanılır Serial.print("m: "); Seri.println(derinlik_m); Seri.print("cm:"); Seri.println(derinlik_cm); Serial.print("M:"); Seri.println(M); // geliştirme amaçlı Serial.print("N: "); Seri.println(N); // geliştirme amaçlı gecikme(500); */ // çubuk grafik çizin microbit.drawLine(0, M, N, M, LED_ON); }

// çizici için seri porta değer gönder

Serial.print(basın_delta); // gösterge çizgileri çizin ve görüntülenen aralığı düzeltin Serial.print("\t"); Seri.baskı(0); Seri.print("\t"); Seri.baskı(-500); Seri.print("\t"); Seri.println(500); gecikme(500); // Saniyede iki kez ölçün } //------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // bmp/bme280 sensörü için aşağıdakiler gereklidir, olduğu gibi kalsın readTrim() { uint8_t data[32], i=0; // 2014/Wire.beginTransmission'ı düzeltin(BME280_ADDRESS); Wire.write(0x88); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 24); // Düzelt 2014/while(Wire.available()){ data = Wire.read(); ben++; } Wire.beginTransmission(BME280_ADDRESS); // 2014/Wire.write(0xA1) ekleyin; // 2014/Wire.endTransmission() ekleyin; // 2014/Wire.requestFrom(BME280_ADDRESS, 1); // 2014/veri ekle = Wire.read(); // 2014/i++ ekleyin; // 2014/Wire.beginTransmission(BME280_ADDRESS) ekleyin; Wire.write(0xE1); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 7); // Düzelt 2014/while(Wire.available()){ data = Wire.read(); ben++; } dig_T1 = (veri[1] << 8) | veri[0]; dig_P1 = (veri[7] << 8) | veri[6]; dig_P2 = (veri[9] << 8) | veri[8]; dig_P3 = (veri[11]<< 8) | veri[10]; dig_P4 = (veri[13]<< 8) | veri[12]; dig_P5 = (veri[15]<< 8) | veri[14]; dig_P6 = (veri[17]<< 8) | veri[16]; dig_P7 = (veri[19]<< 8) | veri[18]; dig_T2 = (veri[3] << 8) | veri[2]; dig_T3 = (veri[5] << 8) | veri[4]; dig_P8 = (veri[21]<< 8) | veri[20]; dig_P9 = (veri[23]<< 8) | veri[22]; dig_H1 = veri[24]; dig_H2 = (veri[26]<< 8) | veri[25]; dig_H3 = veri[27]; dig_H4 = (veri[28]<< 4) | (0x0F ve veri[29]); dig_H5 = (veri[30] 4) & 0x0F); // Düzelt 2014/dig_H6 = veri[31]; // Düzelt 2014/} void writeReg(uint8_t reg_address, uint8_t data) { Wire.beginTransmission(BME280_ADDRESS); Wire.write(reg_address); Wire.write(veri); Wire.endTransmission(); } geçersiz readData() { int ben = 0; uint32_t verisi[8]; Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xF7); Wire.endTransmission(); Wire.requestFrom(BME280_ADDRESS, 8); while(Wire.available()){ data = Wire.read(); ben++; } pres_raw = (veri[0] << 12) | (veri[1] 4); temp_raw = (veri[3] << 12) | (veri[4] 4); hum_raw = (veri[6] 3) - ((işaretli uzun int)dig_T1 11; var2 = (((((adc_T >> 4) - ((işaretli uzun int)dig_T1)) * ((adc_T>>4) - ((işaretli uzun int)dig_T1))) >> 12) * (((işaretli uzun int)dig_T3)) >> 14; t_fine = var1 + var2;T = (t_fine * 5 + 128) >> 8;dönüş T; } unsigned long int kalibrasyon_P(signed long int adc_P) { Signed long int var1, var2; unsigned long int P; var1 = (((signed long int)t_fine)>>1) - (signed long int)64000; var2 = (((var1>>2) * (var1>>2)) >> 11) * ((signed long int)dig_P6); var2 = var2 + ((var1*((signed long int)dig_P5))2)+(((işaretli uzun int)dig_P4)2)*(var1>>2)) >> 13)) >>3) + ((((işaretli uzun int)dig_P2) * var1)>>1))>>18; var1 = ((((32768+var1))*((işaretli uzun int)dig_P1))>>15); if (var1 == 0) { 0 döndür; } P = (((işaretsiz uzun int)(((işaretli uzun int)1048576)-adc_P)-(var2>>12)))*3125; if(P<0x80000000) { P = (P <<1) / ((işaretsiz uzun int) var1); } else { P = (P / (işaretsiz uzun int)var1) * 2; } var1 = (((işaretli uzun int)dig_P9) * ((işaretli uzun int)(((P>>3) * (P>>3))>>13)))>>12; var2 = (((işaretli uzun int)(P>>2)) * ((işaretli uzun int)dig_P8))>>13; P = (işaretsiz uzun int)((işaretli uzun int)P + ((var1 + var2 + dig_P7) >> 4)); dönüş P; } unsigned long int kalibrasyon_H(signed long int adc_H) { Signed long int v_x1; v_x1 = (t_fine - ((uzun int işaretli)76800)); v_x1 = (((((adc_H << 14) -(((işaretli uzun int)dig_H4) 15) * (((((((v_x1 * ((işaretli uzun int))dig_H6))) >> 10) * (((v_x1 * ((uzun int işaretli)dig_H3)) >> 11) + ((uzun int işaretli) 32768))) >> 10) + ((uzun int işaretli)2097152)) * ((uzun int işaretli) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((uzun int işaretli)dig_H1)) >> 4)); v_x1 = (v_x1 419430400 ? 419430400: v_x1);dönüş (işaretsiz uzun int)(v_x1 >> 12);

Adım 6: Büyük Bir Basitleştirme: MakeCode/JavaScript Kodu

Büyük Bir Basitleştirme: MakeCode/JavaScript Kodu
Büyük Bir Basitleştirme: MakeCode/JavaScript Kodu
Büyük Bir Basitleştirme: MakeCode/JavaScript Kodu
Büyük Bir Basitleştirme: MakeCode/JavaScript Kodu

Mayıs 2018'de Pimoroni, bir BME280 basınç/nem/sıcaklık sensörü, bir TCS3472 ışık ve renk sensörü ve bir MEMS mikrofonu ile birlikte gelen enviro:bit'i piyasaya sürdü. Ayrıca MakeCode düzenleyicisi için bir JavaScript kitaplığı ve bu sensörler için bir MicroPython kitaplığı sunuyorlar.

Cihazım için komut dosyaları geliştirmek için MakeCode kitaplığını kullanıyorum. Ekte, doğrudan micro:bit'inize kopyalayabileceğiniz uygun onaltılık dosyaları bulacaksınız.

Aşağıda ilgili JavaScript kodunu bulabilirsiniz. Havuzda test etmek, betiğin önceki bir sürümüyle iyi çalıştı, bu yüzden onların da işe yarayacağını varsayıyorum. Temel çubuk grafik versiyonuna ek olarak, özellikle düşük ışık koşullarında okumayı kolaylaştırmayı amaçlayan bir artı işareti versiyonu (X) ve bir L versiyonu da vardır. Tercih ettiğinizi seçin.

Sütun = 0 olsun

Let Meter = 0 kalsın = 0 olsun Satır = 0 olsun Delta = 0 olsun Ref = 0 olsun 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("" + Satır + "." + kal + " m") basic.pause(200) basic.clearScreen() } else { Is = envirobit.getPressure() Delta = Is - Ref Meter = Matematik.abs(Delta) if (Metre >= 400) { Satır = 4 } else if (Metre >= 300) { Satır = 3 } else if (Metre >= 200) { Satır = 2 } else if (Metre >= 100) { Satır = 1 } else { Satır = 0 } left = Metre - Satır * 100 if (remain >= 80) { Column = 4 } else if (remain >= 60) { Column = 3 } else if (remain >= 40) { Sütun = 2 } else if (remain >= 20) { Sütun = 1 } else { Sütun = 0 } for (let ColA = 0; ColA <= Sütun; ColA++) { led.plot(C olA, Satır) } basic.pause(500) } })

Adım 7: Enviro:bit Sürümü

Enviro:bit Sürümü
Enviro:bit Sürümü
Enviro:bit Sürümü
Enviro:bit Sürümü
Enviro:bit Sürümü
Enviro:bit Sürümü

Bu arada, her ikisi de Pimoroni'den enviro:bit (20 GBP) ve power:bit (6 GBP) aldım.

Daha önce belirtildiği gibi, enviro:bit, BME280 basınç, nem ve sıcaklık sensörünün yanı sıra bir ışık ve renk sensörü (buradaki bir uygulamaya bakın) ve bir MEMS mikrofonu ile birlikte gelir.

power:bit, micro:bit'e güç sağlamak için güzel bir çözümdür ve bir açma/kapama düğmesi ile birlikte gelir.

Harika olan şey, her ikisinin de sadece tıklama ve kullanma, lehimleme, kablo, devre tahtası olmamasıdır. Enviro:bit'i micro:bit'e ekleyin, kodunuzu micro:bit'e yükleyin, kullanın.

Bu durumda micro, power ve enviro:bit kullandım, onları bir Ziploc çantasına yerleştirdim, cep telefonları için şeffaf, su geçirmez bir plastik torbaya yerleştirdim, hazır. Çok hızlı ve düzenli bir çözüm. Resimlere bakın. Anahtar, koruma katmanları aracılığıyla kullanmak için yeterince büyüktür.

Suda test edildi, iyi çalışıyordu. Yaklaşık 1.8 m derinlikte ölçülen değer yaklaşık 1.7 m idi. Hızlı ve ucuz bir çözüm için çok kötü değil ama mükemmel olmaktan çok uzak. Ayarlaması biraz zaman alıyor bu yüzden belli bir derinlikte yaklaşık 10-15 saniye kalmanız gerekebilir.

Adım 8: Kablo ve Sensör Probu Versiyonu

Kablo ve Sensör Probu Versiyonu
Kablo ve Sensör Probu Versiyonu
Kablo ve Sensör Probu Versiyonu
Kablo ve Sensör Probu Versiyonu

Bu aslında bir mikro:bit derinlik ölçer için sahip olunan ilk fikirdi, en son inşa edilecek fikirdi.

Burada BMP280 sensörünü 5m 4 telli kabloya lehimledim ve diğer ucuna dişi jumper yerleştirdim. Sensörü sudan korumak için kablo kullanılmış bir şarap mantarından geçirildi. Mantarın uçları sıcak tutkalla kapatılmıştır. Mantara iki çentik kesmeden önce, ikisi de etrafını sarmıştı. Sonra sensörü bir sünger topun içine yerleştirdim, etrafına bir balon yerleştirdim ve balonun ucunu mantarın üzerine (alt çentik) sabitledim. sonra 3 adet 40 gr kurşun ağırlıkları ikinci bir balonun içine yerleştirdim, birincinin etrafına sardım, ağırlıkları dış tarafa yerleştirdim ve balonun ucunu ikinci çentiğe sabitledim. İkinci balondan hava alındı, ardından her şey koli bandıyla sabitlendi. Resimlere bakın, daha detaylı olanlar takip edebilir.

Jumper'lar bir kenar konektörü aracılığıyla micro:bit'e bağlandı, cihaz açıldı ve referans basıncı ayarlandı. Daha sonra sensör başlığı yavaşça havuzun dibine bırakıldı (10 m atlama kulesi, yaklaşık 4,5 m derinlik).

Sonuçlar:

Şaşırtıcı bir şekilde, bu uzun kabloyla bile çalıştı. Öte yandan, şaşırtıcı olmayan bir şekilde, ölçüm hatası daha yüksek basınçlarda daha büyük görünüyordu ve tahmini 4 m'lik bir derinlik yaklaşık 3 m olarak rapor edildi.

Potansiyel uygulamalar:

Bazı hata düzeltmeleri ile cihaz, yaklaşık 4 m'ye kadar derinliği ölçmek için kullanılabilir.

Arduino veya Raspberry Pi ile bağlantılı olarak, bu, bir havuz veya su deposunun dolum noktasını ölçmek ve kontrol etmek için kullanılabilir, örn. su seviyeleri belirli eşiklerin üstüne veya altına düştüğünde uyarı vermek için.

Açık Alanda Fitness Mücadelesi
Açık Alanda Fitness Mücadelesi
Açık Alanda Fitness Mücadelesi
Açık Alanda Fitness Mücadelesi

Outdoor Fitness Challenge'da İkincilik

Önerilen: