Mục lục:

A Micro: bit Dive-O-Meter: 8 bước (có hình ảnh)
A Micro: bit Dive-O-Meter: 8 bước (có hình ảnh)

Video: A Micro: bit Dive-O-Meter: 8 bước (có hình ảnh)

Video: A Micro: bit Dive-O-Meter: 8 bước (có hình ảnh)
Video: Cảm ơn - Ngài ft Rush 2024, Tháng mười một
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

Mùa hè đến rồi, thời gian bơi lội của nó!

Một cơ hội tốt để đưa bạn và vi mô của bạn: ra ngoài và trong trường hợp này là thậm chí vào bể bơi.

Máy đo độ sâu vi mô: bit lặn được mô tả ở đây là một máy đo độ sâu tự làm đơn giản cho phép bạn đo độ sâu của bạn đang hoặc đã lặn. Nó chỉ bao gồm một micro: bit, một bộ pin hoặc LiPo, một đầu nối cạnh cho micro: bit, một cảm biến áp suất khí quyển BMP280 hoặc BME280 và một số cáp jumper. Sử dụng Pimoroni enviro: bit làm cho mọi thứ trở nên đơn giản hơn bao giờ hết. Tất cả những thứ này được đóng gói vào hai lớp túi silicon hoặc nhựa trong suốt, kín nước, với một số trọng lượng được thêm vào để bù lại lực nổi.

Nó là một ứng dụng của thiết bị cảm biến áp suất micro: bit mà tôi đã mô tả trong một tài liệu hướng dẫn trước đây.

Bạn có thể sử dụng thiết bị e. NS. cho các cuộc thi lặn với bạn bè và gia đình, hoặc để tìm hiểu độ sâu của cái ao đó. Tôi đã thử nghiệm nó bằng cách sử dụng hồ bơi sâu nhất trong khu vực của tôi và thấy rằng nó hoạt động ít nhất ở độ sâu 3,2 mét. Khoảng năm mét là mức tối đa lý thuyết. Cho đến nay tôi vẫn chưa kiểm tra độ chính xác của nó ở bất kỳ chi tiết nào, nhưng các con số được báo cáo ít nhất là trong phạm vi mong đợi.

Một số nhận xét: Đây không phải là một công cụ dành cho những thợ lặn thực thụ. Micro: bit của bạn sẽ bị hỏng nếu nó bị ướt. Bạn sử dụng hướng dẫn này với rủi ro của riêng bạn.

Cập nhật ngày 27 tháng 5: Bây giờ bạn có thể tìm thấy tập lệnh MakeCode HEX mà bạn có thể tải trực tiếp vào micro: bit của mình. Xem bước 6. Cập nhật ngày 13 tháng 6: Đã thêm phiên bản Enviro: bit và cáp. Xem bước 7 & 8

Bước 1: Lý thuyết đằng sau thiết bị

Chúng ta đang sống dưới đáy đại dương không khí. Áp suất ở đây là khoảng 1020 hPa (hectoPascal) vì trọng lượng của cột không khí ở đây đối với không gian là khoảng 1 kg trên một cm vuông.

Tỷ trọng của nước cao hơn nhiều, vì một lít không khí nặng khoảng 1,2 g và một lít nước nặng 1 kg, tức là khoảng 800 lần. Vì vậy, khi áp suất khí quyển giảm khoảng 1 hPa cho mỗi 8 mét độ cao, thì độ tăng áp suất là 1 hPa cho mỗi cm dưới mặt nước. Ở độ sâu khoảng 10 m, áp suất là 2000 hPa, hay hai atm.

Cảm biến áp suất được sử dụng ở đây có phạm vi đo từ 750 đến 1500 hPa ở độ phân giải khoảng một hPa. Điều này có nghĩa là chúng ta có thể đo độ sâu lên đến 5 mét ở độ phân giải khoảng 1 cm.

Thiết bị sẽ là một máy đo độ sâu loại Boyle Marriotte. Việc lắp ráp nó khá đơn giản và được mô tả ở bước sau. Cảm biến sử dụng giao thức I2C, do đó, một đầu nối cạnh cho micro: bit rất tiện dụng. Phần quan trọng nhất là các túi kín nước, vì bất kỳ độ ẩm nào cũng sẽ làm hỏng vi: bit, cảm biến hoặc pin. Vì một số không khí sẽ bị giữ lại bên trong túi, việc bổ sung trọng lượng sẽ giúp bù lại lực nổi.

Bước 2: Sử dụng thiết bị

Sử dụng thiết bị
Sử dụng thiết bị
Sử dụng thiết bị
Sử dụng thiết bị
Sử dụng thiết bị
Sử dụng thiết bị
Sử dụng thiết bị
Sử dụng thiết bị

Tập lệnh, như được trình bày chi tiết ở bước sau, là một biến thể của tập lệnh mà tôi đã phát triển trước đó cho đồng hồ đo áp suất. Để kiểm tra thiết bị, bạn có thể sử dụng buồng áp suất đơn giản được mô tả ở đó.

Đối với mục đích lặn, nó hiển thị độ sâu bằng mét, được tính toán từ các phép đo áp suất, dưới dạng biểu đồ thanh theo các bước 20 cm hoặc, theo yêu cầu, bằng số.

Sử dụng nút A trên micro: bit, bạn sẽ đặt áp suất hiện tại làm giá trị áp suất tham chiếu. Để xác nhận mục nhập, ma trận nhấp nháy một lần.

Bạn có thể sử dụng tính năng này để xem bạn đang lặn sâu bao nhiêu hoặc để ghi lại độ sâu bạn đã lặn.

Trong trường hợp đầu tiên, hãy đặt áp suất không khí bên ngoài hiện tại làm tài liệu tham khảo. Trong trường hợp thứ hai, hãy đặt áp suất tại điểm sâu nhất mà bạn lấy làm tham chiếu áp suất, sau đó cho phép bạn hiển thị mức độ sâu của bạn khi bạn trở lại bề mặt. Nút B hiển thị độ sâu, được tính từ chênh lệch áp suất, dưới dạng giá trị số tính bằng mét.

Bước 3: Vật liệu cần thiết

Vật liệu thiết yếu
Vật liệu thiết yếu
Vật liệu thiết yếu
Vật liệu thiết yếu
Vật liệu thiết yếu
Vật liệu thiết yếu

Một vi mô: bit. Ví dụ. ở mức 13 GBP / 16 Euro tại Pimoroni UK / DE.

Một đầu nối cạnh (Kitronic hoặc Pimoroni), 5 GBP. Tôi đã sử dụng phiên bản Kitronic.

Một cảm biến BMP / BME280. Tôi đã sử dụng cảm biến BMP280 của Banggood, 4,33 Euro cho ba chiếc.

Cáp nhảy để kết nối cảm biến và đầu nối cạnh.

Một giải pháp thay thế tuyệt vời cho kết hợp cảm biến / đầu nối cạnh ở trên có thể là Pimoroni enviro: bit (hiện chưa được kiểm tra, hãy xem bước cuối cùng).

Một bộ pin hoặc LiPo cho micro: bit.

Cáp nguồn có công tắc (tùy chọn nhưng hữu ích). Tôi đã sử dụng một túi silicon cho điện thoại di động và một hoặc hai túi ziploc nhỏ. Hãy đảm bảo rằng chất liệu này đủ dày để các chốt trên đầu nối cạnh sẽ không làm hỏng túi.

Một số trọng lượng. Tôi đã dùng những miếng chì nặng dùng để câu cá.

Arduino IDE và một số thư viện.

Bước 4: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp
cuộc họp

Cài đặt Arduino IDE và các thư viện bắt buộc. Thông tin chi tiết được mô tả tại đây.

(Không bắt buộc đối với tập lệnh MakeCode.) Với việc bạn sử dụng đầu nối cạnh Kitronik, hàn các chân vào cổng I2C 19 & 20. Điều này không bắt buộc đối với đầu nối cạnh Pimoroni. Hàn đầu cắm vào cảm biến đứt ra và kết nối cảm biến và đầu nối cạnh bằng cáp jumper. Kết nối VCC với 3V, GND đến 0 V, SCL với cổng 19 và SDA với cổng 20. Hoặc hàn cáp trực tiếp vào điểm ngắt. Kết nối micro: bit với máy tính của chúng tôi bằng cáp USB. Mở tập lệnh được cung cấp và flash nó vào micro: bit. Sử dụng màn hình nối tiếp hoặc máy vẽ, kiểm tra xem cảm biến có cung cấp dữ liệu hợp lý hay không. Ngắt kết nối micro: bit khỏi máy tính của bạn. Kết nối pin hoặc LiPo với micro: bit. Nhấn nút B, đọc giá trị Nhấn nút A. Nhấn nút B, đọc giá trị. Đặt thiết bị trong hai lớp túi kín khí, chỉ để lại rất ít không khí trong túi. Trong trường hợp, đặt một quả nặng để bù lực nổi. Kiểm tra xem mọi thứ có kín nước không. Đi đến hồ bơi và chơi.

Bước 5: Tập lệnh MicroPython

Tập lệnh chỉ lấy giá trị áp suất từ cảm biến, so sánh với giá trị tham chiếu, sau đó tính toán độ sâu từ sự khác biệt. Để hiển thị các giá trị dưới dạng biểu đồ thanh, phần nguyên và phần còn lại của giá trị độ sâu được lấy. Đầu tiên xác định chiều cao của dòng. Phần còn lại được chia thành năm thùng, xác định chiều dài của các thanh. Mức cao nhất là 0 - 1 m, thấp nhất 4 - 5 m Như đã đề cập trước đó, nhấn nút A đặt áp suất tham chiếu, nút B hiển thị "độ sâu tương đối" tính bằng mét, hiển thị dưới dạng giá trị số. Hiện tại, các giá trị âm và dương được trình bày dưới dạng vạch trên ma trận LED theo cùng một cách. Bạn có thể bật tiếng một số dòng nhất định để hiển thị các giá trị trên màn hình nối tiếp hoặc máy vẽ của Arduino IDE. Để mô phỏng chức năng, bạn có thể tạo thiết bị mà tôi đã mô tả trong phần hướng dẫn trước.

Tôi chưa viết phần script đọc cảm biến. Tôi không chắc chắn về nguồn, nhưng tôi muốn cảm ơn những người tự động. Mọi chỉnh sửa hoặc gợi ý để tối ưu hóa đều được hoan nghênh.

#bao gồm

#include Adafruit_Microbit_Matrix microbit; #define BME280_ADDRESS 0x76 long int hum_raw, temp_raw, pres_raw; ký dài 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; nhấn đúp = 1015; // giá trị bắt đầu double depth; // độ sâu được tính toán // -------------------------------------------- -------------------------------------------------- ---------------------- void setup () {uint8_t osrs_t = 1; // Lấy mẫu quá nhiệt độ x 1 uint8_t osrs_p = 1; // Lấy mẫu quá áp x 1 uint8_t osrs_h = 1; // Lấy mẫu quá mức độ ẩm x 1 uint8_t mode = 3; // Chế độ bình thường uint8_t t_sb = 5; // Chuẩn 1000ms uint8_t filter = 0; // Lọc bỏ uint8_t spi3w_en = 0; // SPI 3 dây Vô hiệu hóa uint8_t ctrl_meas_reg = (osrs_t << 5) | (osrs_p << 2) | chế độ; uint8_t config_reg = (t_sb << 5) | (bộ lọc << 2) | spi3w_en; uint8_t ctrl_hum_reg = osrs_h; pinMode (PIN_BUTTON_A, INPUT); pinMode (PIN_BUTTON_B, INPUT); Serial.begin (9600); // thiết lập tốc độ cổng nối tiếp Serial.print ("Pressure [hPa]"); // tiêu đề cho đầu ra nối tiếp Wire.begin (); writeReg (0xF2, ctrl_hum_reg); writeReg (0xF4, ctrl_meas_reg); writeReg (0xF5, config_reg); readTrim (); // microbit.begin (); // microbit.print ("x"); chậm trễ (1000); } // ----------------------------------------------- ---------------------------------------------- void loop () {double temp_act = 0.0, press_act = 0.0, hum_act = 0.0; đã ký dài int temp_cal; unsigned long int press_cal, hum_cal; int N; int M; nhấn đúp vào_delta; // áp suất tương đối int depth_m; // độ sâu tính bằng mét, phần nguyên double depth_cm; // phần còn lại trong cm readData (); // temp_cal = calibration_T (temp_raw); press_cal = calibration_P (pres_raw); // hum_cal = hiệu chỉnh_H (hum_raw); // temp_act = (double) temp_cal / 100.0; press_act = (double) press_cal / 100.0; // hum_act = (double) hum_cal / 1024.0; microbit.clear (); // đặt lại ma trận LED // Nút A đặt giá trị thực làm tham chiếu (P không) // Nút B hiển thị giá trị hiện tại dưới dạng độ sâu tính bằng mét (tính từ chênh lệch áp suất) if (! digitalRead (PIN_BUTTON_A)) {// đặt áp suất không khí bình thường as zero press_norm = press_act; // microbit.print ("P0:"); // microbit.print (press_norm, 0); // microbit.print ("hPa"); microbit.fillScreen (LED_ON); // nháy một lần để xác nhận delay (100); } else if (! digitalRead (PIN_BUTTON_B)) {// hiển thị độ sâu tính bằng mét microbit.print (depth, 2); microbit.print ("m"); // Serial.println (""); } else {// tính toán độ sâu từ chênh lệch áp suất press_delta = (press_act - press_norm); // tính toán độ sâu áp suất tương đối = (press_delta / 100); // độ sâu tính bằng mét deep_m = int (abs (độ sâu)); // độ sâu im mét depth_cm = (abs (chiều sâu) - depth_m); // phần còn lại / * // dùng để phát triển Serial.println (depth); Serial.println (depth_m); Serial.println (độ sâu_cm); * / // Các bước cho thanh biểu đồ if (depth_cm> 0.8) {// thiết lập độ dài của thanh (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); } else {(N = 0); }

if (depth_m == 4) {// đặt mức == mét

(M = 4); } else if (depth_m == 3) {(M = 3); } else if (depth_m == 2) {(M = 2); } else if (depth_m == 1) {(M = 1); } else {(M = 0); // hàng trên} / * // dùng cho mục đích phát triển Serial.print ("m:"); Serial.println (depth_m); Serial.print ("cm:"); Serial.println (độ sâu_cm); Serial.print ("M:"); Serial.println (M); // cho mục đích phát triển Serial.print ("N:"); Serial.println (N); // cho mục đích phát triển delay (500); * / // vẽ bargraph microbit.drawLine (0, M, N, M, LED_ON); }

// gửi giá trị đến cổng nối tiếp cho máy vẽ

Serial.print (press_delta); // vẽ các đường chỉ báo và sửa phạm vi hiển thị Serial.print ("\ t"); Serial.print (0); Serial.print ("\ t"); Serial.print (-500); Serial.print ("\ t"); Serial.println (500); chậm trễ (500); // Đo hai lần một giây} // ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------- // thông tin sau là bắt buộc đối với cảm biến bmp / bme280, giữ nguyên vì nó là void readTrim () {uint8_t data [32], i = 0; // Sửa lỗi 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0x88); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 24); // Sửa lỗi 2014 / while (Wire.available ()) {data = Wire.read (); i ++; } Wire.beginTransmission (BME280_ADDRESS); // Thêm 2014 / Wire.write (0xA1); // Thêm 2014 / Wire.endTransmission (); // Thêm 2014 / Wire.requestFrom (BME280_ADDRESS, 1); // Thêm 2014 / data = Wire.read (); // Thêm 2014 / i ++; // Thêm 2014 / Wire.beginTransmission (BME280_ADDRESS); Wire.write (0xE1); Wire.endTransmission (); Wire.requestFrom (BME280_ADDRESS, 7); // Sửa lỗi 2014 / while (Wire.available ()) {data = Wire.read (); i ++; } dig_T1 = (dữ liệu [1] << 8) | dữ liệu [0]; dig_P1 = (dữ liệu [7] << 8) | dữ liệu [6]; dig_P2 = (dữ liệu [9] << 8) | dữ liệu [8]; dig_P3 = (dữ liệu [11] << 8) | dữ liệu [10]; dig_P4 = (dữ liệu [13] << 8) | dữ liệu [12]; dig_P5 = (dữ liệu [15] << 8) | dữ liệu [14]; dig_P6 = (dữ liệu [17] << 8) | dữ liệu [16]; dig_P7 = (dữ liệu [19] << 8) | dữ liệu [18]; dig_T2 = (dữ liệu [3] << 8) | dữ liệu [2]; dig_T3 = (dữ liệu [5] << 8) | dữ liệu [4]; dig_P8 = (dữ liệu [21] << 8) | dữ liệu [20]; dig_P9 = (dữ liệu [23] << 8) | dữ liệu [22]; dig_H1 = data [24]; dig_H2 = (dữ liệu [26] << 8) | dữ liệu [25]; dig_H3 = data [27]; dig_H4 = (dữ liệu [28] << 4) | (0x0F & dữ liệu [29]); dig_H5 = (dữ liệu [30] 4) & 0x0F); // Sửa lỗi 2014 / dig_H6 = data [31]; // Sửa lỗi 2014 /} void writeReg (uint8_t reg_address, uint8_t data) {Wire.beginTransmission (BME280_ADDRESS); Wire.write (reg_address); Wire.write (dữ liệu); Wire.endTransmission (); } void readData () {int i = 0; dữ liệu uint32_t [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) | (dữ liệu [1] 4); temp_raw = (data [3] << 12) | (dữ liệu [4] 4); hum_raw = (data [6] 3) - ((int dài đã ký) dig_T1 11; var2 = (((((adc_T >> 4) - ((int dài đã ký) dig_T1)) * ((adc_T >> 4) - ((int dài đã ký) dig_T1))) >> 12) * ((int dài đã ký) dig_T3)) >> 14; t_fine = var1 + var2; T = (t_fine * 5 + 128) >> 8; return T; } unsigned long int calibration_P (sign long int adc_P) {sign long int var1, var2; unsigned long int P; var1 = (((int long đã ký) t_fine) >> 1) - (int long đã ký) 64000; var2 = (((var1 >> 2) * (var1 >> 2)) >> 11) * ((int dài có dấu) dig_P6); var2 = var2 + ((var1 * ((int dài đã ký) dig_P5)) 2) + (((ký dài int) dig_P4) 2) * (var1 >> 2)) >> 13)) >> 3) + ((((ký dài int) dig_P2) * var1) >> 1)) >> 18; var1 = ((((32768 + var1)) * ((int dài đã ký) dig_P1)) >> 15); if (var1 == 0) {return 0; } P = (((unsigned long int) (((unsigned 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 = (((int dài đã ký) dig_P9) * ((int dài đã ký) (((P >> 3) * (P >> 3)) >> 13))) >> 12; var2 = (((int dài đã ký) (P >> 2)) * ((int dài đã ký) dig_P8)) >> 13; P = (unsigned long int) ((int dài có dấu) P + ((var1 + var2 + dig_P7) >> 4)); trả về P; } unsigned long int calibration_H (sign long int adc_H) {đã ký long int v_x1; v_x1 = (t_fine - ((long int) 76800)); v_x1 = (((((adc_H << 14) - (((int long đã ký) dig_H4) 15) * ((((((((v_x1) * ((int dài có ký) dig_H6)) >> 10) * (((v_x1 * ((ký dài int) dig_H3)) >> 11) + ((ký dài đã ký) 32768))) >> 10) + ((ký dài đã ký) 2097152)) * ((ký dài int) dig_H2) + 8192) >> 14)); v_x1 = (v_x1 - (((((v_x1 >> 15) * (v_x1 >> 15)) >> 7) * ((ký dài int) dig_H1)) >> 4)); v_x1 = (v_x1 419430400? 419430400: v_x1); return (unsigned long int) (v_x1 >> 12);

Bước 6: Đơn giản hóa chính: Mã MakeCode / JavaScript

Đơn giản hóa chính: Mã MakeCode / JavaScript
Đơn giản hóa chính: Mã MakeCode / JavaScript
Đơn giản hóa chính: Mã MakeCode / JavaScript
Đơn giản hóa chính: Mã MakeCode / JavaScript

Vào tháng 5 năm 2018, Pimoroni đã phát hành enviro: bit, đi kèm với cảm biến áp suất / độ ẩm / nhiệt độ BME280, cảm biến màu và ánh sáng TCS3472 và micrô MEMS. Ngoài ra, họ đang cung cấp một thư viện JavaScript cho trình soạn thảo MakeCode và một thư viện MicroPython cho các cảm biến này.

Tôi đã và đang sử dụng thư viện MakeCode của họ để phát triển các tập lệnh cho thiết bị của mình. Đính kèm, bạn tìm thấy các tệp hex, bạn có thể sao chép trực tiếp vào micro: bit của mình.

Dưới đây, bạn tìm thấy mã JavaScript tương ứng. Thử nghiệm trong nhóm hoạt động tốt với phiên bản trước của tập lệnh, vì vậy tôi cho rằng chúng cũng sẽ hoạt động. Ngoài phiên bản vạch số cơ bản, còn có phiên bản chữ thập (X) và phiên bản chữ L, nhằm giúp việc đọc dễ dàng hơn, đặc biệt là trong điều kiện ánh sáng yếu. Chọn một trong những bạn thích.

để cho Cột = 0

let Meter = 0 let left = 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 ("" + Row + "." + còn lại + "m") basic.pause (200) basic.clearScreen ()} else {Is = envirobit.getPressure () Delta = Is - Ref Meter = Math.abs (Đồng bằng) if (Mét> = 400) {Hàng = 4} else if (Mét> = 300) {Hàng = 3} else if (Mét> = 200) {Hàng = 2} else if (Mét> = 100) {Hàng = 1} else {Hàng = 0} còn lại = Mét - Hàng * 100 if (còn lại> = 80) {Cột = 4} else if (còn> = 60) {Cột = 3} else if (còn> = 40) {Column = 2} else if (còn> = 20) {Column = 1} else {Column = 0} for (let ColA = 0; ColA <= Column; ColA ++) {led.plot (C olA, Row)} basic.pause (500)}})

Bước 7: Phiên bản Enviro: bit

Phiên bản Enviro: bit
Phiên bản Enviro: bit
Phiên bản Enviro: bit
Phiên bản Enviro: bit
Phiên bản Enviro: bit
Phiên bản Enviro: bit

Trong thời gian chờ đợi, tôi đã nhận được enviro: bit (20 GBP) và power: bit (6 GBP), cả hai đều từ Pimoroni.

Như đã đề cập trước đây, enviro: bit đi kèm với cảm biến áp suất, độ ẩm và nhiệt độ BME280, ngoài ra còn có cảm biến ánh sáng và màu sắc (xem ứng dụng tại đây) và micrô MEMS.

Power: bit là một giải pháp hay để cấp nguồn cho micro: bit và đi kèm với công tắc bật / tắt.

Điều tuyệt vời là nó chỉ là bấm và sử dụng, không có hàn, cáp, breadboard. Thêm enviro: bit vào micro: bit, tải mã của bạn vào micro: bit, sử dụng nó.

Trong trường hợp này, tôi đã sử dụng micro, power và enviro: bit, đặt chúng trong một túi Ziploc, đặt nó trong một túi nhựa kín nước trong cho điện thoại di động, đã sẵn sàng. Một giải pháp rất nhanh chóng và gọn gàng. Nhìn những bức tranh. Công tắc đủ lớn để sử dụng nó qua các lớp bảo vệ.

Nó đã được thử nghiệm trong nước, hoạt động tốt. Ở độ sâu khoảng 1,8 m, giá trị đo được là khoảng 1,7 m. Không quá tệ đối với một giải pháp nhanh và rẻ, nhưng còn lâu mới trở nên hoàn hảo. Phải mất một lúc để điều chỉnh, vì vậy bạn có thể cần phải ở độ sâu nhất định trong khoảng 10-15 giây.

Bước 8: Phiên bản đầu dò cáp và cảm biến

Phiên bản đầu dò cáp và cảm biến
Phiên bản đầu dò cáp và cảm biến
Phiên bản đầu dò cáp và cảm biến
Phiên bản đầu dò cáp và cảm biến

Đây thực sự là ý tưởng đầu tiên mà người ta có đối với máy đo độ sâu micro: bit, thiết bị cuối cùng được chế tạo.

Ở đây, tôi đã hàn cảm biến BMP280 vào 5m của cáp 4 dây và đặt jumper cái ở đầu còn lại. Để bảo vệ cảm biến khỏi nước, cáp đã được chạy qua một nút chai rượu đã qua sử dụng. Các đầu của nút chai được dán kín bằng keo nóng. Trước khi tôi cắt hai khía vào nút chai, cả hai đều đi xung quanh nó. Sau đó, tôi gói cảm biến vào một quả bóng bọt biển, đặt một quả bóng bay xung quanh nó và cố định phần cuối của quả bóng bay trên nút chai (khía dưới). sau đó tôi đặt 3 miếng chì nặng 40 g vào một quả bóng bay thứ hai, quấn nó xung quanh quả bóng thứ nhất, các quả nặng đặt ở mặt ngoài và cố định đầu quả bóng ở rãnh thứ hai. Không khí được lấy ra từ quả bóng bay thứ hai, sau đó mọi thứ được cố định bằng băng keo. Xem hình ảnh, những cái chi tiết hơn có thể làm theo.

Các jumper được kết nối với micro: bit thông qua một đầu nối cạnh, thiết bị được bật và áp suất tham chiếu được đặt. Sau đó đầu cảm biến được thả từ từ xuống đáy bể bơi (tháp nhảy 10 m, sâu khoảng 4,5 m).

Kết quả:

Trước sự ngạc nhiên của tôi, nó hoạt động ngay cả với sợi cáp dài này. Mặt khác, nhưng không có gì đáng ngạc nhiên, sai số đo dường như trở nên lớn hơn ở áp suất cao hơn, và độ sâu ước tính 4 m được báo cáo là khoảng 3 m.

Ứng dụng tiềm năng:

Với một số sửa lỗi, thiết bị có thể được sử dụng để đo độ sâu khoảng 4 m.

Kết hợp với Arduino hoặc Raspberry Pi, điều này có thể được sử dụng để đo và kiểm soát điểm lấp đầy của hồ bơi hoặc bể chứa nước, e, g. để đưa ra cảnh báo nếu mực nước vượt quá hoặc dưới ngưỡng nhất định.

Thử thách thể dục ngoài trời
Thử thách thể dục ngoài trời
Thử thách thể dục ngoài trời
Thử thách thể dục ngoài trời

Về nhì trong Thử thách thể dục ngoài trời

Đề xuất: