Điều Khiển GPIO Orange Pi Bằng Python: Lập Trình Nháy LED Đơn Giản
Orange Pi là một nền tảng máy tính nhúng mạnh mẽ, lý tưởng cho các dự án điện tử và IoT. Một trong những tính năng cốt lõi của nó là các chân GPIO (General Purpose Input/Output), cho phép bạn tương tác với thế giới vật lý. Trong hướng dẫn này, chúng ta sẽ khám phá cách điều khiển GPIO trên Orange Pi bằng ngôn ngữ lập trình Python, thông qua ví dụ kinh điển “Hello World” của phần cứng: làm cho một đèn LED nhấp nháy.
Tại Sao Chọn Python Để Lập Trình GPIO?
Có hai phương pháp chính để điều khiển các chân GPIO trên Orange Pi: sử dụng ngôn ngữ C (với thư viện như WiringOP) hoặc Python. Với Python, bạn có thể tận hưởng sự đơn giản, cú pháp dễ đọc và khả năng phát triển nhanh chóng, đặc biệt phù hợp cho người mới bắt đầu hoặc các dự án yêu cầu tốc độ triển khai. Thư viện pyA20.gpio cung cấp một giao diện trực quan để truy cập và quản lý các chân GPIO của Orange Pi.
Bắt Đầu Với Dự Án Nháy LED (Blink)
Để thực hiện ví dụ này, bạn cần một bo mạch Orange Pi, một đèn LED và một điện trở giới hạn dòng điện (thường là 220 Ohm). Đảm bảo rằng đèn LED được kết nối đúng cách với một chân GPIO đầu ra và chân GND của Orange Pi.
Bước 1: Tạo Tệp Mã Nguồn Python
Mở terminal trên Orange Pi của bạn và tạo một tệp mới có tên testgpio.py bằng trình soạn thảo văn bản như nano:
sudo nano testgpio.py
Bước 2: Viết Mã Nguồn Python Cho Chức Năng Nháy LED
Sao chép đoạn mã Python dưới đây và dán vào tệp testgpio.py. Đoạn mã này sẽ cấu hình một chân GPIO cụ thể làm đầu ra và sau đó bật/tắt đèn LED theo một chu kỳ nhất định.
# -*- coding: utf-8 -*-
##############################
# Import các thư viện cần thiết
import os
import sys
from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port
##############################
# Kiểm tra xem script có đang chạy với quyền root không
if not os.getegid() == 0:
sys.exit('Script cần được chạy với quyền quản trị (sudo).')
# Định nghĩa chân GPIO cho đèn LED trạng thái
# Bạn có thể tham khảo https://github.com/duxingkei33/orangepi_PC_gpio_pyH3/blob/master/pyA20/gpio/mapping.h
# để tìm tên chân phù hợp với bo mạch của bạn.
led = port.STATUS_LED # Sử dụng chân LED trạng thái tích hợp hoặc thay bằng chân GPIO khác
# Khởi tạo thư viện GPIO
gpio.init()
# Thiết lập chân LED là đầu ra kỹ thuật số
gpio.setcfg(led, gpio.OUTPUT)
# Thực hiện nháy LED cho đến khi nhận được tín hiệu Ctrl+C từ hệ thống
try:
print("Nhấn CTRL+C để thoát chương trình.")
# Vòng lặp vô hạn để nháy LED
while True:
gpio.output(led, 1) # Bật LED
sleep(0.25) # Chờ 250ms
gpio.output(led, 0) # Tắt LED
sleep(0.25) # Chờ 250ms
gpio.output(led, 1) # Bật LED lần nữa
sleep(0.25) # Chờ 250ms
gpio.output(led, 0) # Tắt LED
sleep(0.25) # Chờ 250ms
sleep(1) # Chờ 1 giây trước khi lặp lại chu kỳ nháy
except KeyboardInterrupt:
# Xử lý khi người dùng nhấn Ctrl+C
print("nKết thúc chương trình.")
Lưu ý về chân GPIO: Trong ví dụ trên, chúng ta sử dụng port.STATUS_LED, đây thường là chân đèn LED trạng thái tích hợp trên một số mẫu Orange Pi. Nếu bạn muốn điều khiển một đèn LED bên ngoài kết nối với một chân GPIO khác (ví dụ: PA12, PG7), bạn cần thay thế port.STATUS_LED bằng tên chân GPIO tương ứng (ví dụ: port.PA12 hoặc port.PG7).
Bước 3: Chạy Chương Trình Python
Sau khi lưu tệp testgpio.py, bạn có thể chạy nó từ terminal bằng lệnh sau:
sudo python testgpio.py
Kết Quả
Khi chương trình chạy, bạn sẽ thấy đèn LED được kết nối với chân GPIO đã chọn bắt đầu nhấp nháy theo chu kỳ đã lập trình. Chương trình sẽ tiếp tục chạy cho đến khi bạn nhấn Ctrl+C trong terminal để dừng nó.
Mở Rộng Và Phát Triển
Ví dụ nháy LED này là bước khởi đầu hoàn hảo để bạn khám phá thế giới điều khiển phần cứng với Orange Pi và Python. Từ đây, bạn có thể phát triển các dự án phức tạp hơn như đọc dữ liệu từ cảm biến, điều khiển động cơ, hoặc xây dựng các hệ thống tự động hóa nhà thông minh. Khả năng của GPIO kết hợp với sức mạnh của Python trên Orange Pi là vô tận!