Lập trình đọc cảm biến siêu âm HC-SR04 với Raspberry Pi
Chuẩn bị các phần cứng và phần mềm cần thiết
Để giúp cho việc viết mã nguồn sử dụng ngôn ngữ Python cho Raspberry Pi được đơn giản và nhanh chóng, thì trong phạm vi các bài thực hành sau đây chúng ta sẽ nhận sự hỗ trợ từ một số thư viện được cài đặt mặc định trong hệ điều hành hoặc phải cài đặt bổ sung vào thêm trong quá trình sử dụng Raspberry Pi. Chẳng hạn như: thư viện GPIOZero (thư viện mặc định có sẵn), các thư viện hỗ trợ riêng cho từng loại cảm biến (thư viện phải cài đặt bổ sung).
Những phần cứng cần phải chuẩn bị cho các bài thí nghiệm dưới đây:
Raspberry Pi 4B
USB-TTL
Test board
Thẻ nhớ
Điện trở 470, 330
Nút nhấn
LED
Cảm biến HC-SR04
Cảm biến DHT22
Mô-đun 4 relay
Yêu cầu thí nghiệm:
Sử sụng cảm biến siêu âm HC-SR04 để xác định khoảng cách từ cảm biến đến vật thể gần nhất và hiển thị các giá trị này lên màn hình Console.
Sơ đồ kết nối
Thực hiện kết nối cảm biến siêu âm HC-SR04 với Raspberry Pi theo sơ đồ như sau:
Hình 3.8. Sơ đồ kết nối cảm biến siêu âm HC-SR04 với Raspberry Pi.
Chân VCC/Pin-1 của cảm biến HC-SR04 được nối với chân 5V/Pin-2 của Raspberry Pi, chân TRIG/Pin-2 của cảm biến HC-SR04 được nối với chân GPIO24/Pin-18 của Raspberry Pi, chân ECHO/Pin-3 của cảm biến HC-SR04 được nối với một đầu của điện trở 330, chân GND/Pin-4 của cảm biến HC-SR04 được nối với chân GND/Pin-6 của Raspberry Pi. Đầu còn lại của điện trở 330 được nối chung với chân GPIO23/Pin-16 của Raspberry Pi và một đầu của điện trở 470. Đầu còn lại của điện trở 470 được nối với chân GND/Pin-6 của Raspberry Pi. Chi tiết được minh họa trong Hình 3.8.
Lưu đồ giải thuật
Giải thuật điều khiển như sau:
Hình 3.9. Lưu đồ giải thuật của bài thí nghiệm 5.
Mã nguồn
Dựa vào lưu đồ giải thuật để viết chương trình điều khiển bằng ngôn ngữ Python như sau:
fromgpiozeroimport DistanceSensor # Khai bao su dung ham trong thu vien
fromtimeimport sleep
sensor = DistanceSensor(echo=23, trigger=24) # Khai bao chan noi cam bien HC-SR04
whileTrue:
print(‘Distance to nearest object is’, sensor.distance, ‘m’) # Hien thi gia tri khoang cach
sleep(1) # Delay 1s
Để hiểu rõ hơn ta thực hiện thêm ví dụ khác, giả sử nếu vật thể nằm trong ngưỡng khoảng cách thì điều khiển LED sáng và ngược lại thì điều khiển LED tắt, chương trình điều khiển bằng ngôn ngữ Python như sau:
fromgpiozeroimport DistanceSensor, LED # Khai bao su dung ham trong thu vien
fromsignalimport pause
# Khai bao chan noi LED, cam bien HC-SR04 va cac nguong gia tri