Kích Hoạt UART Trên Orange Pi PC: Từ Script.bin Đến Giao Tiếp Nối Tiếp

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.

  1. 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ệp script.bin để đề phòng trường hợp xảy ra lỗi.

    sudo cp /boot/script.bin /boot/script.bak
  2. Chuyển đổi tệp nhị phân sang định dạng FEX:
    Tệp script.bin là 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
  3. Chỉnh sửa tệp FEX:
    Mở tệp .fex vừa tạo bằng trình soạn thảo văn bản. Ở đây, chúng ta sử dụng nano.

    sudo nano /boot/script.fex
  4. Tìm và kích hoạt UART:
    Trong tệp script.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ủa uart_used từ 0 thành 1.

    [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>
  5. Lưu và đóng tệp:
    Sau khi chỉnh sửa, lưu tệp bằng cách nhấn Ctrl + X, sau đó Y (Yes) và Enter.

  6. Chuyển đổi tệp FEX ngược lại sang BIN:
    Bây giờ, chuyển đổi tệp script.fex đã chỉnh sửa trở lại định dạng nhị phân script.bin. Công cụ fex2bin thường có sẵn trong các bản phân phối Armbian.

    sudo fex2bin /boot/script.fex /boot/script.bin
  7. 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ả.

  1. Cài đặt Minicom:
    Nếu chưa cài đặt, hãy cài đặt minicom trên Orange Pi PC của bạn.

    sudo apt-get install minicom
  2. Mở cổng UART:
    Sử dụng minicom để 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).
  3. 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 terminal minicom của Orange Pi PC, xác nhận rằng giao tiếp nối tiếp đang hoạt động.

  4. Thoát Minicom:
    Để thoát khỏi minicom, nhấn Ctrl + A, sau đó Z, tiếp theo X, và cuối cùng Enter.

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.

  1. Cài đặt các gói cần thiết:
    Đảm bảo bạn đã cài đặt Python và thư viện pySerial (hoặc python-serial).

    sudo apt-get install python
    sudo apt-get install python-dev
    sudo apt-get install python-serial
  2. 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ã
  3. Lưu và đóng tệp:
    Lưu tệp bằng cách nhấn Ctrl + X, sau đó Y (Yes) và Enter.

  4. Thực thi chương trình Python:
    Chạy script Python của bạn.

    sudo python testuart.py
  5. 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.

  6. Dừng chương trình:
    Để dừng chương trình Python, nhấn Ctrl + C trong 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.

Leave a Comment

👈 Vuốt để chuyển bài 👉

KIỂM TRA PORT

IPv6 của bạn: Đang lấy...