Raspberry Pi 5 được phát hành và giới thiệu cho chúng ta một chiếc Pi mạnh mẽ hơn, nhưng nó cũng thay đổi một vài thứ và đáng chú ý nhất là GPIO.
Nếu bạn từng điều khiển GPIO trên Raspberry Pi bằng thư viện quen thuộc RPi.GPIO
, thì khi nâng cấp lên Raspberry Pi 5, bạn có thể gặp lỗi như:
RuntimeError: Mmap of GPIO registers failed!
Vậy điều gì đã xảy ra? Tại sao code cũ không chạy được? Và đâu là hướng đi mới?
Vì Sao RPi.GPIO không hoạt động trên Raspberry Pi 5?
Trên các đời Raspberry Pi trước đây (từ Pi 1 đến Pi 4), GPIO được điều khiển trực tiếp qua phần cứng của SoC Broadcom. Thư viện RPi.GPIO
truy cập các chân này thông qua file đặc biệt /dev/gpiomem
.
Tuy nhiên, Raspberry Pi 5 đã thay đổi kiến trúc phần cứng, sử dụng một con chip phụ tên là RP1 để quản lý I/O như USB, Ethernet, và GPIO. Vì vậy:
RPi.GPIO
không còn truy cập được các chân GPIO như trước nữa.- Raspberry Pi Foundation cũng xác nhận sẽ không cập nhật thư viện này cho RPi 5.
Giải pháp: Dùng gpiozero hoặc gpiod (libgpiod)
May mắn là bạn không đơn độc! Có hai lựa chọn hiện đại và chính thức được khuyến nghị:
1. gpiozero – đơn giản, thân thiện
Đây là thư viện Python cấp cao, rất dễ dùng và phù hợp cho người mới.
from gpiozero import LED from time import sleep led = LED(17) while True: led.on() sleep(1) led.off() sleep(1)
Thư viện này sẽ tự chọn backend phù hợp, như lgpio
hoặc gpiod
, và hoạt động tốt trên RPi 5.
2. gpiod (libgpiod) – chuẩn công nghiệp Linux
Đây là thư viện cấp thấp hơn, kiểm soát trực tiếp các chân GPIO thông qua hệ thống kernel hiện đại.
Ví dụ bật LED qua GPIO 17:
import gpiod import time chip = gpiod.Chip('gpiochip4') line = chip.get_line(17) config = gpiod.LineRequest() config.request_type = gpiod.LINE_REQ_DIR_OUT line.request(config) while True: line.set_value(1) time.sleep(1) line.set_value(0) time.sleep(1)
Lưu ý: Bạn có thể kiểm tra tên chip GPIO bằng lệnh gpiodetect
và gpioinfo
.
So sánh nhanh các thư viện GPIO trên Raspberry Pi
Thư viện | Ưu điểm | Nhược điểm |
RPi.GPIO | Đơn giản, quen thuộc | Không dùng được trên Pi 5 |
gpiozero | Cú pháp dễ, nhiều tính năng | Không kiểm soát sâu |
gpiod | Chuẩn hóa, hiệu quả | Cần hiểu chi tiết kỹ thuật |
lgpio | Hỗ trợ Pi 5, hiệu năng tốt | Tài liệu ít |
Kết luận
Việc Raspberry Pi 5 thay đổi phần cứng khiến chúng ta buộc phải tạm biệt RPi.GPIO
. Tuy có chút bất tiện, nhưng đây là cơ hội để chuyển sang các thư viện chuẩn hóa, mạnh mẽ và tương thích tốt với hệ điều hành hiện đại.
- Nếu bạn chỉ làm các dự án đơn giản → hãy dùng
gpiozero
. - Nếu bạn cần hiệu năng và kiểm soát tốt → hãy học
libgpiod
.
Nếu cần tư vấn hoặc hỗ trợ kỹ thuật, vui lòng liên hệ với chúng tôi
Raspberry Pi Việt Nam
- Địa chỉ: Tầng 5, số 25 đường Hồ Mễ Trì, phường Trung Văn, quận Nam Từ Liêm, Hà Nội.
- Email: info@raspberrypi.vn – Hotline: 092.707.8688
- Hỗ trợ kỹ thuật: 09.3757.6116
- Fanpage: https://rpi.vn/fb
- Group: https://rpi.vn/groupfb