Để 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
Trong các bài thí nghiệm dưới đây chúng ta có sử dụng cảm biến DHT22 để thu thập giá trị nhiệt độ, độ ẩm của môi trường. Tuy nhiên thư viện dành cho bộ cảm biến này lại không được cài đặt sẵn trong Raspberry Pi. Vì vậy, để có thể sử dụng được bộ thư viện dành cho cảm biến DHT22 thì việc đầu tiên là phải tiến hành cài đặt bộ thư viện này vào Raspberry Pi chạy hệ điều hành Raspbian. Các bước để cài đặt thư viện của Adafruit hỗ trợ cho cảm biến DHT22, tại Terminal nhập lệnh như sau:
Trong bài thí nghiệm này chúng ta sẽ tìm hiểu cách thức mà Raspberry Pi xuất dữ liệu để điều khiển các thiết bị ngoại vi thông qua chân GPIO cơ bản.
Yêu cầu thí nghiệm: Điều khiển 1 LED đơn sáng tắt liên tục, thời gian thay đổi trạng thái là 1 giây.
Sơ đồ kết nối
Thực hiện kết nối LED đơn với Raspberry Pi theo sơ đồ như sau:
Hình 3.1. Sơ đồ kết nối LED đơn với Raspberry Pi.
Chân GPIO17/Pin-11 của Raspberry Pi được nối với một chân của điện trở 330, chân còn lại của điện trở này được nối với chân Anode của LED đơn. Cuối cùng, chân Cathode của LED đơn đượ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.1.
Lưu đồ giải thuật
Giải thuật điều khiển như sau:
Hình 3.2. Lưu đồ giải thuật của bài thí nghiệm 1.
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 LED # Khai bao su dung ham trong thu vien
fromtimeimport sleep
red = LED(17) # Khai bao chan noi LED
whileTrue:
red.on() # LED sang
sleep(1) # Delay 1s
red.off() # LED tat
sleep(1)
Ngoài ra, ta cũng có thể viết theo một cách khác như sau:
fromgpiozeroimport LED # Khai bao su dung ham trong thu vien
fromsignalimport pause
red = LED(17) # Khai bao chan noi LED
red.blink() # LED sang tat lien tuc
pause() # Sleep Mode
Bài thí nghiệm 2
Trong bài thí nghiệm này chúng ta sẽ tìm hiểu cách thức mà Raspberry Pi xuất dữ liệu để điều khiển các thiết bị ngoại vi thông qua chân GPIO (sử dụng tính năng đặc biệt PWM).
Yêu cầu thí nghiệm: Điều khiển độ sáng của 1 LED đơn bằng phương pháp điều rộng xung (PWM), LED đơn sẽ thay đổi độ sáng liên tục theo 3 mức độ sáng khác nhau lần lượt là 0% (tắt LED), 50% và 100%.
Sơ đồ kết nối
Thực hiện kết nối LED đơn với Raspberry Pi tương tự như đã mô tả chi tiết trong mục “3.2.1. Sơ đồ kết nối” bên trên.
Lưu đồ giải thuật
Giải thuật điều khiển như sau:
Hình 3.3. Lưu đồ giải thuật của bài thí nghiệm 2.
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 PWMLED # Khai bao su dung ham trong thu vien
fromtimeimport sleep
led = PWMLED(17) # Khai bao chan noi LED
whileTrue:
led.value = 0 # LED tat (0%)
sleep(1) # Delay 1s
led.value = 0.5 # Do sang cua LED = 50%
sleep(1)
led.value = 1 # Do sang cua LED = 100%
sleep(1)
Ngoài ra, chúng ta cũng có thể thay đổi liên tục độ sáng của LED (LED sẽ mờ dần và tắt), chương trình điều khiển bằng ngôn ngữ Python như sau:
fromgpiozeroimport PWMLED # Khai bao su dung ham trong thu vien