Isi kandungan:

Mikro: bit Dive-O-Meter: 8 Langkah (dengan Gambar)
Mikro: bit Dive-O-Meter: 8 Langkah (dengan Gambar)

Video: Mikro: bit Dive-O-Meter: 8 Langkah (dengan Gambar)

Video: Mikro: bit Dive-O-Meter: 8 Langkah (dengan Gambar)
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Julai
Anonim
Mikro: bit Dive-O-Meter
Mikro: bit Dive-O-Meter
Mikro: bit Dive-O-Meter
Mikro: bit Dive-O-Meter
Mikro: bit Dive-O-Meter
Mikro: bit Dive-O-Meter

Musim panas sudah tiba, waktu kolam!

Peluang yang baik untuk membawa diri dan mikro anda: sedikit ke luar, dan dalam kes ini bahkan ke kolam renang.

Mikro: bit dive-o-meter yang dijelaskan di sini adalah alat pengukur kedalaman DIY ringkas yang membolehkan anda mengukur sejauh mana anda, atau sedang, menyelam. Ia terdiri daripada mikro: bit, pek bateri atau LiPo, penyambung tepi untuk mikro: bit, sensor tekanan barometrik BMP280 atau BME280 dan beberapa kabel pelompat. Menggunakan persekitaran Pimoroni: bit memang menjadikan semuanya lebih mudah. Semua ini dibungkus ke dalam dua lapisan beg plastik atau silikon jernih kedap air, dengan beberapa berat ditambahkan untuk mengimbangi daya apung.

Ini adalah aplikasi peranti sensor tekanan mikro: bit yang telah saya jelaskan dalam instruksi sebelumnya.

Anda boleh menggunakan peranti ini e. g. untuk pertandingan menyelam dengan rakan dan keluarga, atau untuk mengetahui seberapa dalam kolam itu. Saya mengujinya menggunakan kolam paling dalam di kawasan kejiranan saya, dan mendapati ia berfungsi sekurang-kurangnya hingga kedalaman 3.2 meter. Kira-kira lima meter adalah maksimum teori. Sejauh ini saya belum menguji ketepatannya secara terperinci, tetapi bilangan yang dilaporkan sekurang-kurangnya berada dalam julat yang diharapkan.

Beberapa komen: Ini tidak dimaksudkan untuk menjadi alat bagi penyelam sejati. Mikro: bit anda akan rosak sekiranya basah. Anda menggunakan arahan ini atas risiko anda sendiri.

Kemas kini 27 Mei: Sekarang anda dapat mencari skrip HEX MakeCode yang boleh anda muatkan terus ke bit mikro anda. Lihat langkah 6. Kemas kini 13 Jun: Versi Enviro: bit dan kabel ditambahkan. Lihat langkah 7 & 8

Langkah 1: Teori Di Sebalik Peranti

Kita hidup di dasar lautan udara. Tekanan di sini adalah sekitar 1020 hPa (hectoPascal) kerana berat lajur udara yang terbentuk di sini ke angkasa adalah sekitar 1 kg per sentimeter persegi.

Ketumpatan air jauh lebih tinggi, kerana satu liter berat udara sekitar 1.2 g dan satu liter air 1 kg, iaitu sekitar 800 kali ganda. Oleh kerana penurunan tekanan barometrik adalah sekitar 1 hPa untuk setiap ketinggian 8 meter, kenaikan tekanan adalah 1 hPa untuk setiap sentimeter di bawah permukaan air. Pada kedalaman sekitar 10 m, tekanannya adalah 2000 hPa, atau dua atmosfera.

Sensor tekanan yang digunakan di sini mempunyai jarak pengukuran antara 750 dan 1500 hPa pada resolusi sekitar satu hPa. Ini bermaksud kita dapat mengukur kedalaman hingga 5 meter pada resolusi sekitar 1 cm.

Peranti itu adalah alat pengukur kedalaman jenis Boyle Marriotte. Pemasangannya agak mudah dan dijelaskan pada langkah seterusnya. Sensor menggunakan protokol I2C, jadi penyambung tepi untuk mikro: bit berguna. Bahagian yang paling kritikal adalah beg kedap air, kerana kelembapan apa pun akan merosakkan mikro: bit, sensor, atau bateri. Oleh kerana udara akan terperangkap di dalam beg, penambahan berat membantu mengimbangi daya apung.

Langkah 2: Menggunakan Peranti

Menggunakan Peranti
Menggunakan Peranti
Menggunakan Peranti
Menggunakan Peranti
Menggunakan Peranti
Menggunakan Peranti
Menggunakan Peranti
Menggunakan Peranti

Skrip, seperti yang ditunjukkan secara terperinci pada langkah selanjutnya, adalah variasi skrip yang saya kembangkan sebelumnya untuk meter tekanan. Untuk menguji peranti, anda boleh menggunakan ruang tekanan sederhana yang dijelaskan di sana.

Untuk tujuan menyelam, ini menunjukkan kedalaman dalam meter, seperti yang dihitung dari pengukuran tekanan, baik sebagai grafik bar dalam jarak 20 cm atau, berdasarkan permintaan, dalam jumlah.

Dengan menggunakan butang A pada mikro: bit, anda akan menetapkan tekanan semasa sebagai nilai tekanan rujukan. Untuk mengesahkan kemasukan, matriks berkelip sekali.

Anda boleh menggunakan ini sama ada melihat sejauh mana anda menyelam, atau untuk merakam seberapa dalam anda menyelam.

Dalam kes pertama tetapkan tekanan udara luar semasa sebagai rujukan. Dalam kes kedua tetapkan tekanan pada titik terdalam di mana anda sebagai rujukan tekanan, yang kemudian memungkinkan anda untuk menunjukkan seberapa dalam anda ketika anda kembali ke permukaan. Butang B menunjukkan kedalaman, yang dihitung dari perbezaan tekanan, sebagai nilai berangka dalam meter.

Langkah 3: Bahan yang Diperlukan

Bahan yang Diperlukan
Bahan yang Diperlukan
Bahan yang Diperlukan
Bahan yang Diperlukan
Bahan yang Diperlukan
Bahan yang Diperlukan

Mikro: bit. Cth. pada 13 GBP / 16 Euro di Pimoroni UK / DE.

Penyambung tepi (Kitronic atau Pimoroni), 5 GBP. Saya menggunakan versi Kitronic.

Sensor BMP / BME280. Saya menggunakan sensor BMP280 dari Banggood, 4,33 Euro untuk tiga unit.

Kabel pelompat untuk menyambungkan sensor dan penyambung tepi.

Alternatif yang sangat baik untuk kombinasi penyambung tepi / sensor di atas ialah Pimoroni enviro: bit (belum diuji sekarang, lihat langkah terakhir).

Pek bateri atau LiPo untuk mikro: bit.

Kabel kuasa dengan suis (pilihan tetapi berguna). Bersihkan beg kedap air. Saya menggunakan beg silikon untuk telefon bimbit dan satu atau dua beg ziploc kecil. Pastikan bahannya cukup tebal, sehingga pin pada penyambung tepi tidak akan merosakkan beg.

Beberapa berat. Saya menggunakan kepingan timbal yang digunakan untuk memancing.

Arduino IDE, dan beberapa perpustakaan.

Langkah 4: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Pasang Arduino IDE dan perpustakaan yang diperlukan. Perincian dijelaskan di sini.

(Tidak diperlukan untuk skrip MakeCode.) Memandangkan anda menggunakan penyambung tepi Kitronik, pin solder ke port I2C 19 & 20. Ini tidak diperlukan untuk penyambung tepi Pimoroni. Solder header ke sensor pecah dan sambungkan sensor dan penyambung tepi menggunakan kabel jumper. Sambungkan VCC ke 3V, GND ke 0 V, SCL ke port 19 dan SDA ke port 20. Sebagai alternatif, solder kabel terus ke breakout. Sambungkan bit mikro ke komputer kita dengan kabel USB. Buka skrip yang disediakan dan flash ke mikro: bit. Gunakan monitor bersiri atau plotter, periksa apakah sensor memberikan data yang munasabah. Putuskan sambungan mikro: bit dari komputer anda. Sambungkan bateri atau LiPo ke mikro: bit. Tekan butang B, baca nilai Tekan butang A. Tekan butang B, baca nilainya. Letakkan peranti dalam dua lapisan beg kedap udara, hanya tinggal sedikit udara di dalam beg. Sekiranya berlaku, letakkan berat untuk mengimbangi daya apung. Periksa sama ada semuanya kedap air. Pergi ke kolam renang dan bermain.

Langkah 5: Skrip MicroPython

Skrip hanya mengambil nilai tekanan dari sensor, membandingkannya dengan nilai rujukan, dan kemudian mengira kedalaman dari perbezaannya. Untuk memaparkan nilai sebagai graf bar, diambil bilangan bulat dan bilangan selebihnya dari nilai kedalaman. Yang pertama menentukan ketinggian garis. Selebihnya dibahagi kepada lima tong sampah, yang menentukan panjang bar. Tingkat atas adalah 0 - 1 m, terendah 4 - 5 m. Seperti yang disebutkan sebelumnya, menekan butang A menetapkan tekanan rujukan, butang B memaparkan "kedalaman relatif" dalam meter, ditampilkan sebagai nilai berangka. Sekarang, nilai negatif dan positif ditampilkan sebagai bargraf pada matriks LED dengan cara yang sama. Jangan ragu untuk mengoptimumkan skrip untuk keperluan anda. Anda mungkin membungkam baris tertentu untuk menunjukkan nilai pada monitor bersiri atau plotter dari Arduino IDE. Untuk meniru fungsi, anda boleh membina peranti yang saya jelaskan dalam arahan sebelumnya.

Saya belum menulis bahagian skrip yang membaca sensor. Saya tidak pasti mengenai sumbernya, tetapi saya ingin mengucapkan terima kasih kepada pihak berkuasa. Sebarang pembetulan atau petunjuk untuk pengoptimuman adalah dialu-alukan.

#sertakan

#masuk mikrobit Adafruit_Microbit_Matrix; #tentukan BME280_ADDRESS 0x76 panjang int hum_raw yang tidak ditandatangani, temp_raw, pres_raw; ditandatangani int lama 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; tekan dua kali_norm = 1015; // nilai kedalaman berganda permulaan; // kedalaman yang dikira // -------------------------------------------- -------------------------------------------------- ---------------------- persediaan tidak sah () {uint8_t osrs_t = 1; // Sampel berlebihan suhu x 1 uint8_t osrs_p = 1; // Tekanan berlebihan sampel x 1 uint8_t osrs_h = 1; // Kelembapan berlebihan kelembapan x 1 mod uint8_t = 3; // Mod normal uint8_t t_sb = 5; // Tstandby 1000ms uint8_t filter = 0; // Tapiskan uint8_t spi3w_en = 0; // SPI 3 wayar Lumpuhkan uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mod; uint8_t config_reg = (t_sb << 5) | (tapis << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Serial.begin (9600); // tetapkan kelajuan port siri Serial.print ("Tekanan [hPa]"); // header untuk output bersiri Wire.begin (); writeReg (0xF2, ctrl_hum_reg); tulisReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); bacaTrim (); // microbit.begin (); // microbit.print ("x"); kelewatan (1000); } // ----------------------------------------------- ---------------------------------------------- gelung kosong () {double temp_act = 0.0, tekan_act = 0.0, hum_act = 0.0; ditandatangani int temp_cal panjang; tekan_cal int lama yang tidak ditandatangani, hum_cal; int N; int M; tekan dua kali_delta; // tekanan relatif int kedalaman_m; // kedalaman dalam meter, bahagian integer ganda kedalaman_cm; // baki dalam cm readData (); // temp_cal = calibration_T (temp_raw); tekan_cal = penentukuran_P (pres_raw); // hum_cal = penentukuran_H (hum_raw); // temp_act = (berganda) temp_cal / 100.0; press_act = (double) tekan_cal / 100.0; // hum_act = (berganda) hum_cal / 1024.0; microbit.clear (); // reset matriks LED // Butang A menetapkan nilai sebenar sebagai rujukan (P sifar) // Butang B memaparkan nilai semasa sebagai kedalaman dalam meter (dikira dari perbezaan tekanan) jika (! digitalRead (PIN_BUTTON_A)) {// tetapkan tekanan udara normal sebagai zero tekan_norm = press_act; // microbit.print ("P0:"); // microbit.print (tekan_norm, 0); // microbit.print ("hPa"); microbit.fillScreen (LED_ON); // berkedip sekali untuk mengesahkan kelewatan (100); } lain jika (! digitalRead (PIN_BUTTON_B)) {// paparan kedalaman dalam meter microbit.print (kedalaman, 2); microbit.print ("m"); // Serial.println (""); } lain {// hitung kedalaman dari perbezaan tekanan tekan_delta = (press_act - tekan_norm); // hitung kedalaman tekanan relatif = (tekan_delta / 100); // kedalaman dalam meter kedalaman_m = int (abs (kedalaman)); // kedalaman im meter kedalaman_cm = (abs (kedalaman) - kedalaman_m); // bakinya / * // digunakan untuk pembangunan Serial.println (kedalaman); Serial.println (kedalaman_m); Serial.println (kedalaman_cm); * / // Langkah untuk bargraph jika (kedalaman_cm> 0.8) {// tetapkan panjang bar (N = 4); } lain jika (kedalaman_cm> 0.6) {(N = 3); } lain jika (kedalaman_cm> 0.4) {(N = 2); } lain jika (kedalaman_cm> 0.2) {(N = 1); } lain {(N = 0); }

jika (kedalaman_m == 4) {// tetapkan tahap == meter

(M = 4); } lain jika (kedalaman_m == 3) {(M = 3); } lain jika (kedalaman_m == 2) {(M = 2); } lain jika (kedalaman_m == 1) {(M = 1); } lain {(M = 0); // baris atas} / * // digunakan untuk tujuan pembangunan Serial.print ("m:"); Serial.println (kedalaman_m); Serial.print ("cm:"); Serial.println (kedalaman_cm); Serial.print ("M:"); Serial.println (M); // untuk tujuan pembangunan Serial.print ("N:"); Bersiri.println (N); // untuk kelewatan tujuan pembangunan (500); * / // lukis bargraph microbit.drawLine (0, M, N, M, LED_ON); }

// hantar nilai ke port bersiri untuk plotter

Serial.print (tekan_delta); // lukis garis penunjuk dan perbaiki julat yang ditunjukkan Serial.print ("\ t"); Cetakan bersiri (0); Serial.print ("\ t"); Cetakan bersiri (-500); Serial.print ("\ t"); Serial.println (500); kelewatan (500); // Ukur dua kali sesaat} // ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // berikut diperlukan untuk sensor bmp / bme280, simpan kerana tidak sah readTrim () {uint8_t data [32], i = 0; // Betulkan 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Betulkan 2014 / while (Wire.available ()) {data = Wire.read (); saya ++; } Wire.beginTransmission (BME280_ADDRESS); // Tambah 2014 / Wire.write (0xA1); // Tambah 2014 / Wire.endTransmission (); // Tambah 2014 / Wire.requestFrom (BME280_ADDRESS, 1); // Tambah 2014 / data = Wire.read (); // Tambah 2014 / i ++; // Tambah 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Betulkan 2014 / while (Wire.available ()) {data = Wire.read (); saya ++; } dig_T1 = (data [1] << 8) | data [0]; dig_P1 = (data [7] << 8) | data [6]; dig_P2 = (data [9] << 8) | data [8]; dig_P3 = (data [11] << 8) | data [10]; dig_P4 = (data [13] << 8) | data [12]; dig_P5 = (data [15] << 8) | data [14]; dig_P6 = (data [17] << 8) | data [16]; dig_P7 = (data [19] << 8) | data [18]; dig_T2 = (data [3] << 8) | data [2]; dig_T3 = (data [5] << 8) | data [4]; dig_P8 = (data [21] << 8) | data [20]; dig_P9 = (data [23] << 8) | data [22]; dig_H1 = data [24]; dig_H2 = (data [26] << 8) | data [25]; dig_H3 = data [27]; dig_H4 = (data [28] << 4) | (0x0F & data [29]); dig_H5 = (data [30] 4) & 0x0F); // Betulkan 2014 / dig_H6 = data [31]; // Betulkan 2014 /} batal writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (data); Wire.endTransmission (); } batal readData () {int i = 0; uint32_t data [8]; Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xF7); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 8); while (Wire.available ()) {data = Wire.read (); saya ++; } pres_raw = (data [0] << 12) | (data [1] 4); temp_raw = (data [3] << 12) | (data [4] 4); hum_raw = (data [6] 3) - ((ditandatangani int panjang) dig_T1 11; var2 = (((((adc_T >> 4) - ((ditandatangani int panjang) dig_T1)) * ((adc_T >> 4) - ((ditandatangani int panjang) dig_T1))) >> 12) * ((ditandatangani int panjang) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; kembali T; } kalibrasi int panjang tidak ditandatangani_P (ditandatangani panjang int adc_P) {ditandatangani panjang int var1, var2; int panjang tidak ditandatangani P; var1 = (((ditandatangani panjang int) t_fine) >> 1) - (ditandatangani int panjang) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((ditandatangani int panjang) dig_P6); var2 = var2 + ((var1 * ((ditandatangani int panjang) dig_P5)) 2) + (((ditandatangani int panjang) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((ditandatangani int panjang) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768 + var1)) * ((ditandatangani int panjang) dig_P1)) >> 15); jika (var1 == 0) {pulangkan 0; } P = (((int panjang tidak ditandatangani) (((int panjang ditandatangani) 1048576) -adc_P) - (var2 >> 12))) * 3125; jika (P <0x80000000) {P = (P << 1) / ((int tidak bertanda panjang) var1); } lain {P = (P / (int panjang tidak ditandatangani) var1) * 2; } var1 = (((ditandatangani int panjang) dig_P9) * ((ditandatangani int panjang) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((ditandatangani int panjang) (P >> 2)) * ((ditandatangani int panjang) dig_P8)) >> 13; P = (int panjang tidak ditandatangani) ((int panjang ditandatangani) P + ((var1 + var2 + dig_P7) >> 4)); pulangan P; } penentukuran int panjang yang tidak ditandatangani_H (int panjang yang ditandatangani adc_H) {int panjang yang ditandatangani v_x1; v_x1 = (t_fine - ((ditandatangani int panjang) 76800)); v_x1 = (((((adc_H << 14) - (((ditandatangani int panjang) dig_H4) 15) * (((((((v_x1 * ((ditandatangani int panjang) dig_H6)) >> 10) * (((v_x1 * ((ditandatangani int panjang) dig_H3)) >> 11) + ((ditandatangani int panjang) 32768))) >> 10) + ((ditandatangani int panjang) 2097152)) * ((ditandatangani int panjang) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - ((((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((ditandatangani int panjang) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); kembali (int panjang yang tidak ditandatangani) (v_x1 >> 12);

Langkah 6: Penyederhanaan Utama: Kod MakeCode / JavaScript

Penyederhanaan Utama: Kod MakeCode / JavaScript
Penyederhanaan Utama: Kod MakeCode / JavaScript
Penyederhanaan Utama: Kod MakeCode / JavaScript
Penyederhanaan Utama: Kod MakeCode / JavaScript

Pada bulan Mei 2018, Pimoroni telah melancarkan enviro: bit, yang dilengkapi dengan sensor tekanan / kelembapan / suhu BME280, sensor cahaya dan warna TCS3472 dan mikrofon MEMS. Selain itu mereka menawarkan perpustakaan JavaScript untuk editor MakeCode dan perpustakaan MicroPython untuk sensor ini.

Saya telah menggunakan pustaka MakeCode mereka untuk mengembangkan skrip untuk peranti saya. Dilampirkan anda menemui fail hex yang sesuai, yang boleh anda salin terus ke mikro: bit anda.

Di bawah ini anda dapati kod JavaScript yang sesuai. Pengujian di kolam renang berjalan dengan baik dengan versi skrip sebelumnya, jadi saya menganggap mereka akan berfungsi juga. Sebagai tambahan kepada versi dasar, bargraph, ada juga versi crosshair (X) dan versi L, yang bertujuan untuk mempermudah membaca, terutama dalam keadaan cahaya rendah. Pilih yang anda mahu.

biarkan Lajur = 0

biarkan Meter = 0 biarkan tetap = 0 biarkan Row = 0 biarkan Delta = 0 biarkan 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)} lain jika (input.buttonIsPressed (Button. B)) {basic.showString ("" + Row + "." + tetap + "m") basic.pause (200) basic.clearScreen ()} other {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Delta) if (Meter> = 400) {Row = 4} lain jika (Meter> = 300) {Row = 3} lain jika (Meter> = 200) {Row = 2} lain jika (Meter> = 100) {Row = 1} else {Row = 0} tetap = Meter - Baris * 100 if (tetap> = 80) {Column = 4} lain jika (tetap> = 60) {Column = 3} lain jika (tetap> = 40) {Column = 2} lain jika (tetap> = 20) {Column = 1} else {Column = 0} for (let ColA = 0; ColA <= Column; ColA ++) {led.plot (C olA, Row)} basic.pause (500)}})

Langkah 7: Versi Enviro: bit

Versi Enviro: bit
Versi Enviro: bit
Versi Enviro: bit
Versi Enviro: bit
Versi Enviro: bit
Versi Enviro: bit

Sementara itu saya menerima enviro: bit (20 GBP) dan power: bit (6 GBP), kedua-duanya dari Pimoroni.

Seperti disebutkan sebelumnya, enviro: bit dilengkapi dengan sensor tekanan, kelembapan dan suhu BME280, tetapi juga sensor cahaya dan warna (lihat aplikasi di sini) dan mikrofon MEMS.

Power: bit adalah penyelesaian yang baik untuk menghidupkan mikro: bit dan dilengkapi dengan suis hidup / mati.

Perkara yang hebat ialah kedua-duanya hanya klik dan gunakan, tanpa pematerian, kabel, papan roti. Tambahkan enviro: bit ke mikro: bit, muatkan kod anda ke mikro: bit, gunakannya.

Dalam kes ini, saya menggunakan mikro, kuasa dan enviro: bit, meletakkannya di dalam beg Ziploc, meletakkannya di dalam beg plastik kedap air yang jernih untuk telefon bimbit, siap. Penyelesaian yang sangat cepat dan kemas. Lihat gambarnya. Suisnya cukup besar untuk menggunakannya melalui lapisan perlindungan.

Telah diuji di dalam air, berfungsi dengan baik. Pada kedalaman sekitar 1.8 m, nilai yang diukur adalah sekitar 1.7 m. Tidak terlalu buruk untuk penyelesaian yang cepat & murah, tetapi jauh dari sempurna. Perlu sedikit masa untuk menyesuaikan diri, jadi anda mungkin perlu berada pada kedalaman tertentu selama sekitar 10-15 saat.

Langkah 8: Versi Probe Kabel dan Sensor

Versi Probe Kabel dan Sensor
Versi Probe Kabel dan Sensor
Versi Probe Kabel dan Sensor
Versi Probe Kabel dan Sensor

Ini sebenarnya adalah idea pertama yang dimiliki mikro: meter kedalaman bit, yang terakhir dibina.

Di sini saya memasangkan sensor BMP280 hingga 5m kabel 4-wayar dan meletakkan pelompat wanita di hujung yang lain. Untuk melindungi sensor dari air, kabel dijalankan melalui gabus anggur terpakai. Hujung gabus ditutup dengan gam panas. Sebelum saya memotong dua takik ke dalam gabus, kedua-duanya mengelilinginya. Kemudian saya memasukkan sensor ke dalam bola span, meletakkan balon di sekelilingnya dan meletakkan hujung balon di gabus (takik bawah). kemudian saya meletakkan 3 40 g kepingan timbal ke dalam balon kedua, membungkusnya dengan yang pertama, berat yang diletakkan di bahagian luar, dan membetulkan hujung belon pada takik kedua. Udara dikeluarkan dari belon kedua, kemudian semuanya dipasang dengan pita saluran. Lihat gambar, gambar yang lebih terperinci mungkin diikuti.

Pelompat disambungkan ke mikro: bit melalui penyambung tepi, peranti dihidupkan dan tekanan rujukan ditetapkan. Kemudian kepala sensor dilepaskan perlahan ke dasar kolam (menara lompat 10 m, kedalaman sekitar 4.5 m).

Keputusan:

Yang mengejutkan saya, ia berfungsi walaupun dengan kabel panjang ini. Sebaliknya, tetapi tidak menghairankan, kesalahan pengukuran nampaknya semakin besar pada tekanan yang lebih tinggi, dan kedalaman anggaran 4 m dilaporkan sekitar 3 m.

Aplikasi berpotensi:

Dengan beberapa pembetulan ralat, peranti mungkin digunakan untuk mengukur kedalaman hingga sekitar 4 m.

Bersama dengan Arduino atau Raspberry Pi, ini dapat digunakan untuk mengukur dan mengendalikan titik pengisian kolam atau tangki air, e, g. untuk mengeluarkan amaran sekiranya paras air berada di atas atau di bawah ambang tertentu.

Cabaran Kecergasan Luar
Cabaran Kecergasan Luar
Cabaran Kecergasan Luar
Cabaran Kecergasan Luar

Naib Johan dalam Cabaran Kecergasan Luar

Disyorkan: