RDK: 串列埠通訊
簡介
本倉庫提供了 RDK X5(Raspberry Pi)平台與 AI 語音互動模組通訊的 Python 範例程式碼,支援 I2C 和 UART 兩種通訊方式。
語音辨識模組:支援離線語音辨識,辨識後輸出命令ID
播報功能:支援被動播報、功能詞播報、命令詞播報
通訊協定:I2C 位址 0x2A,UART 鮑率 115200
程式語言:Python 3
硬體連接
通用連接
重要提示:確保所有裝置共地!
UART 版本連接
注意:預設使用 /dev/ttyAMA0 串列埠裝置
Type-C 資料線連接(UART 備選)
如果使用 USB-TTL 轉接模組:
注意:此時串列埠裝置通常為 /dev/ttyUSB0

環境設定
系統要求
RDK X5
Ubuntu / Debian 系統
Python 3.7+
安裝相依性套件
Bash
# 更新軟件包
sudo apt update
sudo apt upgrade -y
# 安裝 Python 庫
sudo apt install -y python3-pip
# 安裝 pyserial
pip3 install pyserial啟用串列埠介面
Bash
# 打開配置工具
sudo raspi-config
# 選擇 Interface Options → Serial
Select: No (shell) → Yes (hardware serial port)
# 重啟生效
sudo rebootUART 版本使用
檢查程式碼檔案
Bash
cd UART_Voice
ls -la
# 應該看到 uart_voice.py配置串列埠裝置
編輯 uart_voice.py 檔案,修改串列埠裝置:
Bash
# UART 直連(默認)
SERIAL_PORT = '/dev/ttyAMA0'
# 或者使用 USB-TTL
SERIAL_PORT = '/dev/ttyUSB0'
# 波特率
BAUD_RATE = 115200執行程式
賦予執行權限
Bash
chmod +x uart_voice.py
# 運行(需要 sudo 權限訪問串口)
sudo python3 uart_voice.py執行測試
正常啟動後會顯示:
Bash
Speech Serial Opened! Baudrate=115200對語音模組說出命令詞,會顯示對應的 ID:
Bash
Speech Serial Opened! Baudrate=115200
ID:1
ID:4
ID:10停止程式
按 Ctrl + C 停止程式
常見問題
Q1: 串列埠裝置找不到
A: 檢查:
檢查串列埠是否啟用(raspi-config)
檢查裝置名稱是否正確
UART 直連:
/dev/ttyAMA0USB-TTL:
/dev/ttyUSB0或/dev/ttyUSB1
檢查硬體連接是否正確
檢查串列埠是否被其他程式佔用
Bash
# 查看可用串口
ls /dev/tty* | grep ttyQ2: 命令 ID 只顯示 0 或不顯示
A: 正常現象:
0 = 未辨識到有效命令
只有說出有效命令詞才會輸出 ID
先喚醒模組,再說命令
Q3: 辨識準確率不高
A: 最佳化建議:
確保環境安靜,背景噪音不要太大
離麥克風距離適中(10-50cm)
語速適中,發音清晰
Q4: 串列埠通訊異常
A: 檢查:
TX/RX 是否交叉連接(模組 TX → RPi RX)
鮑率是否為 115200
是否共地
串列埠是否被其他行程佔用
Bash
# 檢查串口佔用
sudo lsof /dev/ttyAMA0技術支援
如有問題,請檢查:
硬體接線是否正確(共地非常重要!)
串列埠鮑率是否為 115200
是否有足夠的權限存取硬體介面
常用除錯命令
Bash
ls -l /dev/ttyAMA0 # 查看串口設備
groups # 查看用戶組權限
