Kích Hoạt UART Trên Orange Pi PC: Từ Script.bin Đến Giao Tiếp Nối Tiếp
Giao tiếp nối tiếp (UART) là một tính năng thiết yếu trong nhiều dự án nhúng và IoT, cho phép Orange Pi PC tương tác với các thiết bị ngoại vi như cảm biến, module không dây hoặc vi điều khiển khác. Mặc dù Orange Pi PC được trang bị các cổng UART, chúng thường bị vô hiệu hóa theo mặc định trong tệp cấu hình phần cứng. Bài viết này sẽ hướng dẫn bạn từng bước cách kích hoạt UART trên Orange Pi PC bằng cách chỉnh sửa tệp script.bin và cung cấp các ví dụ thực tế về cách sử dụng để giao tiếp nối tiếp.
Kích Hoạt UART Qua Script.bin
Để kích hoạt một trong các cổng UART của Orange Pi PC, chúng ta cần chỉnh sửa tệp script.bin, nơi lưu trữ cấu hình phần cứng của thiết bị. Quy trình này bao gồm việc chuyển đổi tệp nhị phân sang định dạng văn bản có thể chỉnh sửa (.fex), thực hiện thay đổi, sau đó chuyển đổi ngược lại.
-
Sao lưu tệp cấu hình gốc:
Trước khi thực hiện bất kỳ thay đổi nào, hãy tạo một bản sao lưu của tệpscript.binđể đề phòng trường hợp xảy ra lỗi.sudo cp /boot/script.bin /boot/script.bak -
Chuyển đổi tệp nhị phân sang định dạng FEX:
Tệpscript.binlà tệp nhị phân, không thể chỉnh sửa trực tiếp. Chúng ta cần chuyển đổi nó sang định dạng.fex(Flexible Exchange Format) là một tệp văn bản.sudo bin2fex /boot/script.bin /boot/script.fex -
Chỉnh sửa tệp FEX:
Mở tệp.fexvừa tạo bằng trình soạn thảo văn bản. Ở đây, chúng ta sử dụngnano.sudo nano /boot/script.fex -
Tìm và kích hoạt UART:
Trong tệpscript.fex, tìm phần cấu hình cho UART mà bạn muốn kích hoạt. Ví dụ, để kích hoạt UART-1, hãy tìm đoạn mã bắt đầu bằng[uart1].
Thay đổi giá trị củauart_usedtừ0thành1.[uart1] uart_used = 1 ; Thay đổi từ 0 thành 1 để kích hoạt uart_port = 1 uart_type = 4 uart_tx = port:PG06<2><1><default><default> uart_rx = port:PG07<2><1><default><default> uart_rts = port:PG08<2><1><default><default> uart_cts = port:PG09<2><1><default><default> -
Lưu và đóng tệp:
Sau khi chỉnh sửa, lưu tệp bằng cách nhấnCtrl + X, sau đóY(Yes) vàEnter. -
Chuyển đổi tệp FEX ngược lại sang BIN:
Bây giờ, chuyển đổi tệpscript.fexđã chỉnh sửa trở lại định dạng nhị phânscript.bin. Công cụfex2binthường có sẵn trong các bản phân phối Armbian.sudo fex2bin /boot/script.fex /boot/script.bin -
Khởi động lại hệ thống:
Để các thay đổi có hiệu lực, bạn cần khởi động lại Orange Pi PC.sudo reboot
Kiểm Tra Giao Tiếp UART Với Minicom
Sau khi kích hoạt UART, bạn có thể kiểm tra chức năng giao tiếp nối tiếp bằng công cụ minicom – một phần mềm giả lập terminal đơn giản và hiệu quả.
-
Cài đặt Minicom:
Nếu chưa cài đặt, hãy cài đặtminicomtrên Orange Pi PC của bạn.sudo apt-get install minicom -
Mở cổng UART:
Sử dụngminicomđể mở cổng UART-1 (/dev/ttyS1) với tốc độ baud mong muốn (ví dụ: 9600 baud).minicom -b 9600 -o -D /dev/ttyS1-b 9600: Đặt tốc độ baud là 9600.-o: Không khởi tạo modem.-D /dev/ttyS1: Chỉ định thiết bị cổng nối tiếp (UART-1).
-
Kiểm tra giao tiếp:
Kết nối Orange Pi PC với một thiết bị khác (ví dụ: máy tính thông qua bộ chuyển đổi USB-to-serial) và gửi dữ liệu. Bất kỳ ký tự nào được gửi từ thiết bị kia sẽ hiển thị trên terminalminicomcủa Orange Pi PC, xác nhận rằng giao tiếp nối tiếp đang hoạt động. -
Thoát Minicom:
Để thoát khỏiminicom, nhấnCtrl + A, sau đóZ, tiếp theoX, và cuối cùngEnter.
Ví Dụ Lập Trình Python Cho UART
Để có khả năng tương tác phức tạp hơn, bạn có thể sử dụng Python để gửi và nhận dữ liệu qua cổng UART.
-
Cài đặt các gói cần thiết:
Đảm bảo bạn đã cài đặt Python và thư việnpySerial(hoặcpython-serial).sudo apt-get install python sudo apt-get install python-dev sudo apt-get install python-serial -
Tạo script Python:
Tạo một tệp Python mới (ví dụ:testuart.py) và thêm đoạn mã sau:sudo nano testuart.py# -*- coding: utf-8 -*- # Import các thư viện cần thiết import serial import time # Cấu hình và mở cổng nối tiếp (UART-1) # Thay đổi '/dev/ttyS1' nếu bạn sử dụng UART khác # Thay đổi 9600 nếu tốc độ baud của bạn khác ser = serial.Serial('/dev/ttyS1', 9600) ser.write(b'nnOPI: Cong da monr') # Gửi thông báo khi cổng mở print("n Cong da mo n") while True: # Đọc một ký tự từ cổng nối tiếp caracter = ser.read() # Xử lý ký tự nhận được if caracter == b'y': print(" Da nhan ky tu 'y'") ser.write(b'OPI: Ky tu [y] da nhannr') elif caracter == b'n': print(" Da nhan ky tu 'n'") ser.write(b'OPI: Ky tu [n] da nhannr') else: print(" Da nhan mot ky tu khong mong doi") ser.write(b'OPI: Ky tu khong mong doi, hay gui [y] hoac [n]nr') # Đợi một khoảng thời gian ngắn (100 ms) time.sleep(0.1) # Kết thúc mã -
Lưu và đóng tệp:
Lưu tệp bằng cách nhấnCtrl + X, sau đóY(Yes) vàEnter. -
Thực thi chương trình Python:
Chạy script Python của bạn.sudo python testuart.py -
Kiểm tra gửi và nhận dữ liệu:
Khi chương trình đang chạy, bạn có thể gửi các ký tự ‘y’ hoặc ‘n’ từ thiết bị khác (ví dụ: terminal trên máy tính) qua cổng nối tiếp. Chương trình Python trên Orange Pi PC sẽ nhận các ký tự này, in thông báo ra màn hình và phản hồi lại thiết bị gửi. -
Dừng chương trình:
Để dừng chương trình Python, nhấnCtrl + Ctrong terminal.
Việc kích hoạt và sử dụng UART trên Orange Pi PC mở ra vô số khả năng cho các dự án yêu cầu giao tiếp nối tiếp. Bằng cách làm theo các bước trên, bạn có thể dễ dàng tích hợp Orange Pi PC vào hệ sinh thái thiết bị nhúng của mình.