Dự án 08: Tưới cây tự động - MakerEdu Inventor Kit for Micro:bit

From MakerLab Wiki
Jump to navigation Jump to search

Mức độ: Trung bình ★★★★★☆☆☆☆

Danh sách thiết bị

Sơ đồ kết nối

MakerEDU Shield Thiết bị
Port P0 [MKE-S13] - Độ ẩm đất
Motor_A Động cơ DC bơm nước

Mô tả dự án

Trong dự án này, bạn sẽ học cách làm một chậu tưới cây tự động.

Bên cạnh, micro:bit có hiển thị biểu cảm gương mặt của cây trồng theo (%) độ ẩm đất lên trên Led Matrix.

Nếu muốn, bạn cũng có thể không cần lắp đặt bơm nước, biểu cảm của cây trồng sẽ nhắc cho bạn tưới cây đấy ^ ^.

Icon-Attention-White.png Chú ý:
Để sử dụng được tính năng Driver tích hợp trên MakerEDU Shield, bạn cần cài đặt thêm Extension "MakerEdu_Hardware" vào dự án của mình (nếu chưa có) theo bài hướng dẫn này.

Bên cạnh, để Motor hoạt động ổn định, các bạn cần cấp nguồn riêng 5V qua cổng microUSB trên Shield.

Các bước thực hiện

Tạo code

  1. Tạo biến có tên "value".
    → Biến này để bạn lưu trữ giá trị Analog đọc từ cảm biến.
  2. Tạo biến có tên "percent".
    → Biến này để bạn lưu trữ giá trị (%) tương ứng từ giá trị Analog.
  3. Tạo biến có tên "pump".
    → Biến này để micro:bit biết có bật bơm hay không.
  4. Tạo biến có tên "speed".
    → Biến này để điều chỉnh tốc độ của bơm.
  5. Tạo 1 khối forever như hình dưới.
    → Khối này thực hiện các công việc theo trình tự:
    • Đọc và lưu giá trị Analog đọc từ cảm biến vào trong biến "value".
    • Đổi sang đơn vị (%) tương ứng lưu vào biến "percent".
    • Cho hiển thị biểu cảm lên Led Matrix tương ứng theo (%) độ ẩm đất.
    • Kiểm tra có bật hay tắt bơm không. Nếu có bật bơm, thì điều khiển tốc độ bơm theo (%) nữa.
Icon-Done-White.png Giải thích:
Điểm khó của dự án này nằm ở chỗ bạn cần căn chỉnh các thông số trong code cho phù hợp với bộ tưới cây của các bạn.

Trường hợp của mình, sau khi đo đạc thực tế, mình tìm ra được khoảng giá trị Analog phù hợp để sử dụng. Với giá trị Analog từ 700 đến 450 sẽ tương ứng độ ẩm của đất từ 0% đến 100%.

Khi đó dựa theo giá trị (%), micro:bit sẽ có biểu cảm tương ứng. Bên cạnh nếu độ ẩm đất dưới 25%, biến "pump" đặt thành 1 để cho phép bật bơm nước. Khi cây được tưới nước, độ ẩm đất tăng dần đến khi qua 75%, biến "pump" đặt thành 0 để tắt bơm nước.

Trong quá trình bơm nước hoạt động, tốc độ bơm thay đổi theo độ ẩm đất. Khi độ ẩm đất càng tăng cao trở lại, tốc độ bơm càng giảm dần.

Cụ thể ở đây, mình cài đặt với độ ẩm đất trong khoảng từ 25% đến 75%, tốc độ bơm tương ứng từ 30% đến 10%.

Blocks

MakeCode Kit 8.png

Javascript

let value = 0
let percent = 0
let pump = 0
let speed = 0

basic.forever(function () {
    value = pins.analogReadPin(AnalogPin.P0)
    percent = Math.round(Math.map(value, 450, 700, 100, 0))
    if (percent <= 25) {
        basic.showIcon(IconNames.Sad)
        pump = 1
    } else if (percent <= 50) {
        basic.showIcon(IconNames.Silly)
    } else if (percent <= 75) {
        basic.showIcon(IconNames.Asleep)
    } else {
        basic.showIcon(IconNames.Happy)
        pump = 0
    }
    if (pump) {
        speed = Math.round(Math.map(percent, 25, 75, 30, 10))
        l9110.controlMotor(l9110.Motor.MotorA, l9110.Rotate.Forward, speed)
    } else {
        l9110.pauseMotor(l9110.Motor.MotorA)
    }
})

Nạp code

  1. Kết nối [MKE-S13] - Độ ẩm đất đến Port P0 của MakerEdu Shield.
  2. Kết nối Động cơ DC bơm nước đến Motor_A của MakerEdu Shield.
  3. Nhấp vào Download để nạp code của bạn sang micro:bit.
  4. Cắm cảm biến vào đất cây trồng và xem code có hoạt động như mong đợi không.

Kết quả

... hình dự án