Daftar Isi:

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

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

Video: A Micro:bit Dive-O-Meter: 8 Langkah (dengan Gambar)
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Juli
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 telah tiba, waktunya berenang!

Kesempatan bagus untuk membawa diri Anda dan mikro Anda ke luar, dan dalam hal ini bahkan ke dalam, kolam renang.

Micro:bit dive-o-meter yang dijelaskan di sini adalah pengukur kedalaman DIY sederhana yang memungkinkan Anda mengukur seberapa dalam Anda, atau sedang, menyelam. Ini hanya terdiri dari mikro:bit, paket baterai atau LiPo, konektor tepi untuk mikro:bit, sensor tekanan barometrik BMP280 atau BME280 dan beberapa kabel jumper. Menggunakan enviro Pimoroni:bit memang membuat segalanya lebih sederhana. Semua ini dikemas ke dalam dua lapisan kantong plastik atau silikon bening kedap air, dengan beberapa bobot ditambahkan untuk mengimbangi gaya apung.

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

Anda dapat menggunakan perangkat e. G. untuk kompetisi menyelam bersama teman dan keluarga, atau untuk mengetahui seberapa dalam sebenarnya kolam itu. Saya mengujinya menggunakan kolam terdalam di lingkungan saya, dan ternyata berfungsi setidaknya hingga kedalaman 3,2 meter. Sekitar lima meter adalah maksimum teoritis. Sejauh ini saya belum menguji presisinya secara detail, tetapi angka yang dilaporkan setidaknya berada dalam kisaran yang diharapkan.

Beberapa komentar: Ini tidak dimaksudkan untuk menjadi alat bagi penyelam sejati. Mikro:bit Anda akan rusak jika basah. Anda menggunakan instruksi ini dengan risiko Anda sendiri.

Pembaruan 27 Mei: Sekarang Anda dapat menemukan skrip HEX MakeCode yang dapat Anda muat langsung ke mikro:bit Anda. Lihat langkah 6. Perbarui 13 Juni: Enviro:bit dan versi kabel ditambahkan. Lihat langkah 7 & 8

Langkah 1: Teori Dibalik Perangkat

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

Kepadatan air jauh lebih tinggi, karena satu liter berat udara sekitar 1,2 g dan satu liter air 1 kg, yaitu sekitar 800 kali lipat. Jadi penurunan tekanan barometrik 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 atmosfer.

Sensor tekanan yang digunakan di sini memiliki rentang pengukuran antara 750 dan 1500 hPa pada resolusi sekitar satu hPa. Artinya kita bisa mengukur kedalaman hingga 5 meter pada resolusi sekitar 1 cm.

Perangkat itu akan menjadi pengukur kedalaman tipe Boyle Marriotte. Perakitannya cukup sederhana dan dijelaskan pada langkah selanjutnya. Sensor menggunakan protokol I2C, jadi konektor tepi untuk mikro:bit sangat berguna. Bagian yang paling penting adalah kantong kedap air, karena kelembaban apa pun akan merusak mikro:bit, sensor, atau baterai. Karena sebagian udara akan terperangkap di dalam kantong, penambahan beban membantu mengimbangi gaya apung.

Langkah 2: Menggunakan Perangkat

Menggunakan Perangkat
Menggunakan Perangkat
Menggunakan Perangkat
Menggunakan Perangkat
Menggunakan Perangkat
Menggunakan Perangkat
Menggunakan Perangkat
Menggunakan Perangkat

Skrip, seperti yang ditunjukkan secara rinci pada langkah selanjutnya, adalah variasi dari skrip yang saya kembangkan sebelumnya untuk pengukur tekanan. Untuk menguji perangkat, Anda dapat menggunakan ruang tekanan sederhana yang dijelaskan di sana.

Untuk tujuan menyelam, ini menunjukkan kedalaman dalam meter, yang dihitung dari pengukuran tekanan, baik sebagai grafik batang dalam langkah 20 cm atau, atas permintaan, dalam angka.

Menggunakan tombol A pada mikro:bit, Anda akan mengatur tekanan saat ini sebagai nilai tekanan referensi. Untuk mengonfirmasi entri, matriks berkedip sekali.

Anda dapat menggunakan ini untuk melihat seberapa dalam Anda menyelam, atau untuk merekam seberapa dalam Anda menyelam.

Dalam kasus pertama, atur tekanan udara luar saat ini sebagai referensi. Dalam kasus kedua, atur tekanan pada titik terdalam Anda di mana sebagai referensi tekanan, yang kemudian memungkinkan Anda untuk menunjukkan seberapa dalam Anda ketika Anda kembali ke permukaan. Tombol B menampilkan kedalaman, dihitung dari perbedaan tekanan, sebagai nilai numerik dalam meter.

Langkah 3: Bahan yang Dibutuhkan

Bahan yang Dibutuhkan
Bahan yang Dibutuhkan
Bahan yang Dibutuhkan
Bahan yang Dibutuhkan
Bahan yang Dibutuhkan
Bahan yang Dibutuhkan

Sebuah mikro: sedikit. Misalnya. pada 13 GBP/16 Euro di Pimoroni UK/DE.

Konektor 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 jumper untuk menghubungkan sensor dan konektor tepi.

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

Paket baterai atau LiPo untuk mikro:bit.

Kabel daya dengan sakelar (opsional tetapi berguna). Kantong kedap air yang bening. Saya menggunakan kantong silikon untuk ponsel dan satu atau dua tas ziploc kecil. Pastikan bahannya cukup tebal, sehingga pin pada konektor tepi tidak merusak tas.

Beberapa bobot. Saya menggunakan potongan berat timbal yang digunakan untuk memancing.

Arduino IDE, dan beberapa library.

Langkah 4: Perakitan

perakitan
perakitan
perakitan
perakitan
perakitan
perakitan
perakitan
perakitan

Instal Arduino IDE dan library yang diperlukan. Rincian dijelaskan di sini.

(Tidak diperlukan untuk skrip MakeCode.) Karena Anda menggunakan konektor tepi Kitronik, pin solder ke port I2C 19 & 20. Ini tidak diperlukan untuk konektor tepi Pimoroni. Solder header ke break out sensor dan sambungkan sensor dan konektor tepi menggunakan kabel jumper. Hubungkan VCC ke 3V, GND ke 0 V, SCL ke port 19 dan SDA ke port 20. Atau solder kabel langsung ke breakout. Hubungkan micro:bit ke komputer kita dengan kabel USB. Buka skrip yang disediakan dan flash ke micro:bit. Gunakan monitor serial atau plotter, periksa apakah sensor memberikan data yang masuk akal. Putuskan sambungan mikro:bit dari komputer Anda. Hubungkan baterai atau LiPo ke mikro:bit. Tekan tombol B, baca nilainya Tekan tombol A. Tekan tombol B, baca nilainya. Tempatkan perangkat dalam dua lapis kantong kedap udara, hanya menyisakan sedikit udara di dalam kantong. Dalam hal ini, tempatkan beban untuk mengkompensasi gaya apung. Periksa apakah semuanya kedap air. Pergi ke kolam renang dan bermain.

Langkah 5: Skrip MicroPython

Script hanya mengambil nilai tekanan dari sensor, membandingkannya dengan nilai referensi, dan kemudian menghitung kedalaman dari perbedaannya. Untuk menampilkan nilai sebagai grafik batang, bagian bilangan bulat dan sisa dari nilai kedalaman diambil. Yang pertama tidak menentukan ketinggian garis. Sisanya dipecah menjadi lima tempat sampah, yang menentukan panjang jeruji. Tingkat atas adalah 0 - 1 m, terendah 4 - 5 m. Seperti yang disebutkan sebelumnya, menekan tombol A mengatur tekanan referensi, tombol B menampilkan "kedalaman relatif" dalam meter, ditampilkan sebagai nilai numerik. Sekarang, nilai negatif dan positif disajikan sebagai grafik batang pada matriks LED dengan cara yang sama. Jangan ragu untuk mengoptimalkan skrip untuk kebutuhan Anda. Anda dapat membunyikan baris tertentu untuk menampilkan nilai pada monitor serial atau plotter Arduino IDE. Untuk meniru fungsi, Anda dapat membangun perangkat yang saya jelaskan dalam instruksi sebelumnya.

Saya belum menulis bagian skrip yang membaca sensor. Saya tidak yakin tentang sumbernya, tetapi saya ingin berterima kasih kepada para penulisnya. Setiap koreksi atau petunjuk untuk pengoptimalan dipersilakan.

#termasuk

#sertakan mikrobit Adafruit_Microbit_Matrix; #define BME280_ADDRESS 0x76 unsigned long int hum_raw, temp_raw, pres_raw; menandatangani int panjang t_fine; uint16_t dig_T1; int16_t menggali_T2; int16_t menggali_T3; uint16_t dig_P1; int16_t menggali_P2; int16_t dig_P3; int16_t dig_P4; int16_t dig_P5; int16_t menggali_P6; int16_t dig_P7; int16_t dig_P8; int16_t dig_P9; int8_t dig_H1; int16_t menggali_H2; int8_t menggali_H3; int16_t menggali_H4; int16_t dig_H5; int8_t menggali_H6; tekan ganda_norm = 1015; // nilai awal kedalaman ganda; // kedalaman yang dihitung //-------------------------------------------- -------------------------------------------------- ---------------------- void setup() { uint8_t osrs_t = 1; // Oversampling suhu x 1 uint8_t osrs_p = 1; //Tekanan oversampling x 1 uint8_t osrs_h = 1; // Kelembaban oversampling x 1 mode uint8_t = 3; //Mode normal uint8_t t_sb = 5; //Tstandby 1000ms uint8_t filter = 0; //Filter uint8_t spi3w_en = 0; //3-wire SPI Nonaktifkan uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | mode; uint8_t config_reg = (t_sb << 5) | (filter <<2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode(PIN_BUTTON_A, INPUT); pinMode(PIN_BUTTON_B, INPUT); Serial.begin(9600); // mengatur kecepatan port serial Serial.print("Tekanan [hPa] "); // header untuk keluaran serial Wire.begin(); writeReg(0xF2, ctrl_hum_reg); writeReg(0xF4, ctrl_meas_reg); writeReg(0xF5, config_reg); bacaTrim(); // mikrobit.mulai(); // mikrobit.print("x"); penundaan (1000); } //----------------------------------------------- ---------------------------------------------- void loop() { double temp_act = 0.0, press_act = 0.0, hum_act=0.0; menandatangani temp_cal int panjang; unsigned long int press_cal, hum_cal; int N; int M; tekan ganda_delta; // tekanan relatif int depth_m; // kedalaman dalam meter, bagian integer ganda depth_cm; // sisa dalam cm readData(); // temp_cal = kalibrasi_T(temp_raw); press_cal = kalibrasi_P(pres_raw); // hum_cal = kalibrasi_H(hum_raw); // temp_act = (ganda)temp_cal / 100.0; press_act = (ganda)press_cal / 100.0; // hum_act = (ganda)hum_cal / 1024.0; microbit.clear(); //reset matriks LED // Tombol A menetapkan nilai aktual sebagai referensi (P nol) // Tombol B menampilkan nilai arus sebagai kedalaman dalam meter (dihitung dari perbedaan tekanan) if (! digitalRead(PIN_BUTTON_A)) { // setel tekanan udara normal sebagai nol press_norm = press_act; // mikrobit.print("P0: "); // mikrobit.print(tekan_norma, 0); // mikrobit.print("hPa"); microbit.fillScreen(LED_ON); // berkedip sekali untuk mengkonfirmasi penundaan (100); }else if (! digitalRead(PIN_BUTTON_B)) { // menampilkan kedalaman dalam meter microbit.print(depth, 2); microbit.print("m"); // Serial.println(""); }else{ // menghitung kedalaman dari perbedaan tekanan press_delta = (press_act - press_norm); // menghitung kedalaman tekanan relatif = (tekan_delta/100); // kedalaman dalam meter depth_m = int(abs(kedalaman)); // kedalaman im meter depth_cm = (abs(kedalaman) - depth_m); // sisa /* // digunakan untuk pengembangan Serial.println(kedalaman); Serial.println(kedalaman_m); Serial.println(kedalaman_cm); */ // Langkah-langkah untuk grafik batang jika (kedalaman_cm> 0.8){ // mengatur panjang batang (N=4); } else if (kedalaman_cm > 0.6){ (N=3); } else if (kedalaman_cm > 0.4){ (N=2); } else if (kedalaman_cm > 0.2){ (N=1); } else { (N=0); }

if (kedalaman_m == 4){ // setel level == meter

(M=4); } else if (kedalaman_m == 3){ (M=3); } else if (kedalaman_m == 2){ (M=2); } else if (kedalaman_m == 1){ (M=1); } else { (M=0); // baris atas } /* // digunakan untuk tujuan pengembangan Serial.print("m: "); Serial.println(kedalaman_m); Serial.print("cm: "); Serial.println(kedalaman_cm); Serial.print("L: "); Serial.println(M); // untuk tujuan pengembangan Serial.print("N: "); Serial.println(N); // untuk tujuan pengembangan delay(500); */ // menggambar bargraph microbit.drawLine(0, M, N, M, LED_ON); }

// kirim nilai ke port serial untuk plotter

Serial.print(tekan_delta); // menggambar garis indikator dan memperbaiki rentang yang ditampilkan Serial.print("\t"); Serial.print(0); Serial.print("\t"); Serial.print(-500); Serial.print("\t"); Serial.println(500); penundaan (500); // Mengukur dua kali per detik } //----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // berikut ini diperlukan untuk sensor bmp/bme280, tetap seperti void readTrim() { uint8_t data[32], i=0; // Perbaiki 2014/Wire.beginTransmission(BME280_ADDRESS); Kawat.tulis (0x88); Kawat.endTransmisi(); Wire.requestFrom(BME280_ADDRESS, 24); // Perbaiki 2014/sementara(Wire.available()){ data = Wire.read(); saya++; } Wire.beginTransmission(BME280_ADDRESS); // Tambahkan 2014/Wire.write(0xA1); // Tambahkan 2014/Wire.endTransmission(); // Tambahkan 2014/Wire.requestFrom(BME280_ADDRESS, 1); // Tambahkan 2014/data = Wire.read(); // Tambahkan 2014/i++; // Tambahkan 2014/Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xE1); Kawat.endTransmisi(); Wire.requestFrom(BME280_ADDRESS, 7); // Perbaiki 2014/sementara(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); // Perbaiki 2014/dig_H6 = data[31]; // Perbaiki 2014/} void writeReg(uint8_t reg_address, uint8_t data) { Wire.beginTransmission(BME280_ADDRESS); Wire.write(reg_address); Kawat.tulis(data); Kawat.endTransmisi(); } void readData() { int i = 0; data uint32_t[8]; Wire.beginTransmission(BME280_ADDRESS); Wire.write(0xF7); Kawat.endTransmisi(); 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) - ((signed long int)dig_T1 11; var2 = ((((((adc_T >> 4) - ((signed long int)dig_T1)) * ((adc_T>>4) - ((int panjang bertanda)dig_T1)))) >> 12) * ((int panjang bertanda)dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T; } unsigned long int kalibrasi_P(signed long int adc_P) { ditandatangani 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) * ((bertanda int panjang)dig_P6); var2 = var2 + ((var1*((bertanda int panjang)dig_P5))2)+(((int panjang bertanda)dig_P4)2)*(var1>>2)) >> 13)) >>3) + ((((int panjang bertanda)dig_P2) * var1)>>1))>>18; var1 = ((((32768+var1))*((ditandatangani int panjang)dig_P1))>>15); if (var1 == 0) { kembali 0; } P = (((unsigned long int)(((signed long int)1048576)-adc_P)-(var2>>12)))*3125; if(P<0x80000000) { P = (P <<1) / ((unsigned long int) var1); } else { P = (P / (unsigned long int)var1) * 2; } var1 = (((ditandatangani int panjang)dig_P9) * ((bertanda int panjang)(((P>>3) * (P>>3))>>13)))>>12; var2 = (((bertanda int panjang)(P>>2)) * ((bertanda int panjang)dig_P8))>>13; P = (int panjang tidak bertanda)((int panjang bertanda)P + ((var1 + var2 + dig_P7) >> 4)); kembali P; } unsigned long int kalibrasi_H(signed long int adc_H) { ditandatangani long int v_x1; v_x1 = (t_fine - ((ditandatangani int panjang)76800)); v_x1 = (((((adc_H << 14) -(((bertanda int panjang)dig_H4) 15) * (((((((v_x1 * ((bertanda int panjang)dig_H6))) >> 10) * (((v_x1 * ((int panjang bertanda)dig_H3)) >> 11) + ((int panjang bertanda) 32768))) >> 10) + ((int panjang bertanda)2097152)) * ((int panjang bertanda) 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); return (unsigned long int)(v_x1 >> 12);

Langkah 6: Penyederhanaan Utama: Kode MakeCode/JavaScript

Penyederhanaan Utama: Kode MakeCode/JavaScript
Penyederhanaan Utama: Kode MakeCode/JavaScript
Penyederhanaan Utama: Kode MakeCode/JavaScript
Penyederhanaan Utama: Kode MakeCode/JavaScript

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

Saya telah menggunakan perpustakaan MakeCode mereka untuk mengembangkan skrip untuk perangkat saya. Terlampir Anda menemukan file hex yang sesuai, yang dapat Anda salin langsung ke micro:bit Anda.

Di bawah ini Anda menemukan kode JavaScript yang sesuai. Pengujian di kumpulan bekerja dengan baik dengan versi skrip sebelumnya, jadi saya berasumsi mereka akan bekerja juga. Selain versi dasar, bargraph, ada juga versi crosshair (X) dan versi L, yang dimaksudkan untuk memudahkan membaca, terutama dalam kondisi kurang cahaya. Pilih salah satu yang Anda sukai.

misalkan Kolom = 0

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

Langkah 7: Enviro: Versi bit

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

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

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

Power:bit adalah solusi yang bagus untuk menyalakan mikro:bit dan dilengkapi dengan tombol on/off.

Hal yang hebat adalah keduanya cukup klik dan gunakan, tanpa penyolderan, kabel, papan tempat memotong roti. Tambahkan enviro:bit ke mikro:bit, muat kode Anda ke mikro:bit, gunakan.

Dalam hal ini saya menggunakan mikro, daya dan enviro:bit, menempatkannya dalam kantong Ziploc, menempatkannya dalam kantong plastik kedap air bening untuk ponsel, siap. Solusi yang sangat cepat dan rapi. Lihat gambar. Sakelar cukup besar untuk digunakan melalui lapisan pelindung.

Sudah dicoba di air, berfungsi dengan baik. Pada kedalaman sekitar 1,8 m nilai terukur sekitar 1,7 m. Tidak terlalu buruk untuk solusi cepat & murah, tetapi jauh dari kesempurnaan. Butuh beberapa saat untuk menyesuaikan, jadi Anda mungkin perlu bertahan pada kedalaman tertentu selama sekitar 10-15 detik.

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 ide pertama yang dimiliki untuk pengukur kedalaman mikro:bit, yang terakhir dibuat.

Di sini saya menyolder sensor BMP280 ke 5m dari kabel 4-kawat dan menempatkan jumper perempuan di ujung lainnya. Untuk melindungi sensor dari air, kabel dijalankan melalui gabus anggur bekas. Ujung gabus ditutup dengan lem panas. Sebelumnya saya telah memotong dua takik ke dalam gabus, keduanya mengelilinginya. Kemudian saya mengemas sensor ke dalam bola spons, meletakkan balon di sekitarnya dan memperbaiki ujung balon di gabus (takik bawah). kemudian saya menempatkan 3 40 g pemberat timah ke dalam balon kedua, membungkusnya di sekitar yang pertama, pemberat ditempatkan di sisi luar, dan memperbaiki ujung balon di takik kedua. Udara dikeluarkan dari balon kedua, lalu semuanya diperbaiki dengan lakban. Lihat gambar, yang lebih detail mungkin menyusul.

Jumper dihubungkan ke mikro:bit melalui konektor tepi, perangkat dihidupkan dan tekanan referensi disetel. Kemudian kepala sensor dilepaskan perlahan ke dasar kolam (menara lompat 10 m, kedalaman sekitar 4,5 m).

Hasil:

Saya heran, itu bekerja bahkan dengan kabel panjang ini. Di sisi lain, tetapi tidak mengherankan, kesalahan pengukuran tampaknya menjadi lebih besar pada tekanan yang lebih tinggi, dan perkiraan kedalaman 4 m dilaporkan sekitar 3 m.

Aplikasi potensial:

Dengan beberapa koreksi kesalahan, perangkat dapat digunakan untuk mengukur kedalaman hingga sekitar 4 m.

Dalam hubungannya dengan Arduino atau Raspberry Pi, ini dapat digunakan untuk mengukur dan mengontrol titik pengisian kolam atau tangki air, e, g. untuk membangkitkan peringatan jika ketinggian air melebihi atau di bawah ambang batas tertentu.

Tantangan Kebugaran Luar Ruangan
Tantangan Kebugaran Luar Ruangan
Tantangan Kebugaran Luar Ruangan
Tantangan Kebugaran Luar Ruangan

Runner Up dalam Tantangan Kebugaran Luar Ruangan

Direkomendasikan: