Bài viết hướng dẫn cấu hình và sử dụng ngoại vi UART trên Raspberry Pi bằng lệnh trong cửa sổ terminal
Xác định ngoại vi UART và chân GPIO tương ứng trên Raspberry Pi
Các dòng Raspberry Pi khác nhau có thể có số lượng ngoại vi UART và vị trí chân GPIO khác nhau. Tuy nhiên việc cấu hình UART về cơ bản là giống nhau về cú pháp, chỉ khác nhau về vị trí chân GPIO.
Để đơn giản mình sẽ lấy ví dụ về cấu hình UART trên Raspberry Pi 4. Trên raspberry Pi 4 hỗ trợ 5 UART, nhiều bài viết hướng dẫn chỉ nhắc đến UART mặc định là UART0, tuy nhiên mình sẽ hướng dẫn các bạn có thể sử dụng tối đa số lượng UART mà Raspberry Pi 4 hỗ trợ.
Cấu hình UART sử dụng câu lệnh trong cửa sổ terminal
Đăng nhập vào Raspberry Pi
Các bạn có thể kết nối SSH từ máy tính cá nhân đến Raspberry Pi hoặc thao tác trực tiếp trên Raspberry Pi để mở cửa sổ terminal. Ở đây mình sẽ kết nối SSH từ máy tính cá nhân với Raspberry Pi để mở cửa sổ terminal. Sau khi kết nối và đăng nhập được vào Raspberry Pi, cửa sổ terminal sẽ có dạng như hình bên dưới:
Các bước cấu hình UART
Bước 1: Mở tệp config.txt để tiến hành chỉnh sửa, cấu hình UART
Nhập lệnh: sudo nano /boot/config.txt hoặc sudo nano /boot/firmware/config.txt
Sau khi nhập lệnh trên, bạn sẽ thấy nội dung file config.txt chứa các thông tin về cấu hình của các ngoại vi trên Raspberry Pi.
Bước 2: Kéo xuống cuối tệp và sau đó thêm vào đoạn nội dung sau:
enable_uart=1
dtoverlay=uart0
dtoverlay=uart3,txd0_pin=4,rxd0_pin=5
Ý nghĩa của 3 dòng lệnh trên:
- Dòng lệnh thứ 1 sử dụng để Raspberry Pi biết nội dung bên dưới là cấu hình các ngoại vi UART
- Dòng lệnh thứ 2 là enable uart0 (là uart mặc định của Raspberry Pi với TX tương ứng là GPIO14, RX tương ứng là GPIO 15)
- Dòng lệnh thứ 3 là enable uart3, với TX là GPIO4, RX là GPIO5
Bước 3: nhấn Ctrl S để lưu và nhấn Ctrl X để thoát khỏi tệp.
Các bạn có thể kiểm tra xem mình cấu hình đã đúng chưa bằng cách nhập lệnh raspi-gpio get. Lúc này trên màn hình sẽ hiển thị chi tiết các chân GPIO được sử dụng cho mục đích gì. Ở đây các bạn có thể thấy đã kích hoạt thành công UART0 và UART3 và các chân GPIO tương ứng
Bước 4: kiểm tra tên của uart bằng cách vào lệnh ls /dev/ | grep tty
Lúc này màn hình sẽ hiện ra kiểu ls/dev/ttyS0, ls/dev/ttyAMA1, v.v.. Đây là tên của các UART bạn vừa khởi tạo
Bước 5: thêm người dùng hiện tại vào nhóm dialout để có quyền truy cập vào thiết bị tty bằng cách vào lệnh: sudo usermod -aG dialout $USER
Bước 6: Cấu hình baudrate
Trước hết xem cấu hình hiện tại, ví dụ UART mình muốn xem là: stty -F /dev/ttyAMA1 -a
Sau đó bạn có thể tự mình cấu hình tốc độ mong muốn, ví dụ baudrate là 9600: stty -F /dev/ttyAMA1 9600
Bước 7: thử gửi hello xem nào!: echo “Hello, UART!” > /dev/ttyAMA1
Chương trình giao tiếp UART bằng ngôn ngữ Python và C
Sau khi các bạn bật các ngoại vi UART xong, tiếp theo mình sẽ làm ví dụ minh họa cách viết chương trình giao tiếp UART trên Raspberry Pi bằng ngôn ngữ lập trình Python và C