Một chương trình đơn giản để đọc giá trị từ cảm biến và điều khiển Relay đóng ngắt được trình bày ở hình bên dưới. Các câu lệnh được lấy trong thư viện NPNBitKit. Ở đây, khi độ ẩm đất nhỏ hơn 30 đơn vị, chúng ta giả sử trạng thái đó là đất đang khô, và cho bật máy bơm. Ngược lại, khi đất đã đủ độ ẩm, chúng ta tắt máy bơm bằng câu lệnh Bật rờ le tại chân P2. Chức năng này được hiện thực trong khốiforever.
Hình 8.6:Đọc độ ẩm đất và điều khiển máy bơm
Đối với các ứng dụng thực tế, việc lựa chọn ngưỡng để bơm và tắt máy bơm thực sự sẽ rất phức tạp và cần phải thống kê nhiều. Các loại cây, loại đất hay như độ sâu của cảm biến cũng sẽ đều ảnh hưởng đến việc chọn ngưỡng. Đôi lúc chúng ta sẽ chọn nhiều ngưỡng: 1 ngưỡng để bắt đầu bơm và 1 ngưỡng để bắt đầu tắt. Trong ví dụ của chương trình này, chúng ta chỉ đơn giản là chọn 1 ngưỡng ở mức 30 đơn vị. Một lưu ý được nhắc lại ở bài này, là chúng ta không được phép sử dụng các câu lệnh lặp làm chương bị kẹt và ảnh hưởng đến các chương trình đã viết, bao gồm pause, while hay repeat. Chương trình trên được chia sẻ ở đường dẫn sau đây:
https://makecode.microbit.org/_dwhMcteKqJXJ
5 Cải tiến chương trình
Cũng như các bài trước đó, sau khi đã hiện thực và kiểm tra đầy đủ chức năng đọc cảm biến độ ẩm đất và điều khiển máy bơm, chúng ta tách nó ra thành 1 hàm mới và gọi lại trong forever. Hàm mới được tạo ra có tên làMOISTURE_AND_PUMP,
như trình bày ở Hình 8.7.
Hình 8.7:Cấu trúc lại chương trình với chức năng mới
Một lần nữa, khối forever vẫn rất gọn và cho phép chúng ta tích hợp thêm nhiều tính năng khác. Chương trình trên được chia sẻ ở đường dẫn sau đây:
https://makecode.microbit.org/_cDLT4oFwi4VY
Một số yêu cầu thêm để phát triển cho ứng dụng này có thể kể ra như nếu mở cửa quá 10s mà độ ẩm đất vẫn không đạt được ngưỡng mong muốn thì chúng ta phải dừng máy bơm. Đây là một xử lý ngoại lệ cho một số trường hợp lỗi có thể xảy ra như cảm biến bị hư hay dây nối giữa mạch và cảm biến độ ẩm không được kết nối tốt.
Ứng dụng này cũng có thể nâng cấp hơn bằng cách chọn nhiều ngưỡng cho việc tưới được thông minh hơn: khi độ ẩm dưới 30 mới bắt đầu tưới, khi độ ẩm lớn hơn 50 mới được phép dừng.
Ngoài ra, chúng ta cũng có thể cho hiển thị độ ẩm đất lên màn hình LCD. Tuy nhiên, chúng ta cần phải chọn vị trí cho phù hợp để không trùng với phần hiển thị của nhiệt độ và độ ẩm không khí.
6 Câu hỏi ôn tập
1. Cảm biến độ ẩm đất được dựa trên nguyên lý gì? A. Lượng nước có trong đất
B. Tính dẫn điện giữa 2 điện cực C. Khả năng thay đổi điện áp đầu ra D. Tất cả đều đúng
2. Giá trị trả về của cảm biến độ ẩm đất là dữ liệu dạng gì? A. digital
B. analog C. uart D. i2c
3. Câu lệnh nào hỗ trợ tốt nhất cho việc độ dữ liệu từ cảm biến độ ẩm đất? A. Độ ẩm đất trong NPNBitKit
B. analog read trong Pins C. Cả 2 câu trên đều đúng D. Tất cả đều sai
4. Thiết bị để bật/tắt máy bơm gọi là gì? A. Công tắc điện tử
B. Relay C. Rờ le
D. Tất cả đều đúng
5. Để bình thường máy bơm không hoạt động, 2 chân nào của Relay sẽ được kết nối?
A. COM và NO B. COM và NC C. NO và NC D. Tất cả đều đúng
6. Các câu lệnh được phép dùng khi hiện thực chức năng mới trong hệ thống là gì?
A. pause B. repeat C. if
D. Tất cả các câu lệnh trên
7. Thứ tự gọi hàm trong khối forever có ảnh hưởng như thế nào đến chức năng của chương trình?
A. Không có ảnh hưởng gì cả
B. Làm cho chương trình thực thi sai tính năng C. Làm cho chương trình chạy chậm hơn D. Làm cho chương trình chạy không ổn định
Đáp án 1. B 2. B 3. C 4. D 5. A 6. C 7. A
CHƯƠNG 9
1 Giới thiệu
Trong bài trước, chúng ta đã có cơ hội làm việc với công tắc điện tử, hay còn được gọi là Relay. Với công tắc điện tử, dòng điện sẽ chỉ qua thiết bị theo một chiều cố định (khi công tắc đống), và động cơ chỉ có thể quay theo một chiều mà thôi. Thêm nữa, công tắc điện tử ở bài trước sẽ làm cho động cơ quay với tốc độ tối đa, khi toàn bộ điện áp từ nguồn cấp sẽ chảy qua thiết bị.
Trong bài này, chúng ta sẽ làm việc với một thiết bị, cũng được dùng để điều khiển động cơ, gọi là mạch công suất cho động cơ (motor driver). Với mạch này, chúng ta có thể điều khiển cả chiều quay lẫn tốc độ của động cơ nếu muốn. Mạch này có tên gọi là mạch motor DRV, tương thích hoàn toàn với ChiPi Base Shield, có hình ảnh thiết bị như sau:
Hình 9.1:Mạch điều khiển động cơ DRV
Bên cạnh đó, một cảm biến âm thanh sẽ được sử dụng để xây dựng một ứng dụng mới trong nhà thông minh: mỗi khi vỗ tay, chúng ta sẽ sử dụng động cơ để điều khiển một động cơ, mô phỏng cho máy quạt quay. Tuy nhiên, khi quạt đang quay, vỗ tay thêm lần nữa quạt sẽ dừng. Cảm biến âm thanh sử dụng trong bài này có hình ảnh như sau:
Hình 9.2:Cảm biến âm thanh
Các mục tiêu trong bài hướng dẫn trong bài này như sau:
• Làm quen với cảm biến âm thanh và náy quạt.
• Lấy được dữ liệu từ cảm biến và xuất tín hiệu ra máy quạt.
• Xây dựng được ứng dụng “Máy quạt thông minh”.
• Sử dụng được chương trình cũ và tích hợp chức năng mới.