RDK: シリアルポート通信
概要
本リポジトリは、RDK X5(Raspberry Pi)プラットフォームと AI 音声対話モジュール間の通信を行う Python サンプルコードを提供しており、I2C と UART の 2 種類の通信方式に対応しています。
音声認識モジュール:オフライン音声認識に対応し、認識後はコマンド ID を出力します
再生機能:パッシブ再生、機能ワード再生、コマンドワード再生に対応
通信プロトコル:I2C アドレス 0x2A、UART ボーレート 115200
プログラミング言語:Python 3
ハードウェア接続
共通接続
重要な注意:すべてのデバイスが共通接地されていることを確認してください!
UART バージョンの接続
注意:デフォルトでは /dev/ttyAMA0 シリアルデバイスを使用します
Type-C データケーブル接続(UART 代替)
USB-TTL 変換モジュールを使用する場合:
注意:この場合のシリアルデバイスは通常 /dev/ttyUSB0 です

環境設定
システム要件
RDK X5
Ubuntu / Debian システム
Python 3.7+
依存パッケージのインストール
# ソフトウェアパッケージを更新
sudo apt update
sudo apt upgrade -y
# Python ライブラリをインストール
sudo apt install -y python3-pip
# pyserial をインストール
pip3 install pyserialシリアルポートインターフェースの有効化
# 設定ツールを開く
sudo raspi-config
# Interface Options → Serial を選択
Select: No (shell) → Yes (hardware serial port)
# 再起動で有効になる
sudo rebootUART バージョンの使用方法
コードファイルの確認
cd UART_Voice
ls -la
# uart_voice.py が表示されるはずシリアルポートデバイスの設定
uart_voice.py ファイルを編集し、シリアルデバイスを変更します:
# UART 直結(デフォルト)
SERIAL_PORT = '/dev/ttyAMA0'
# または USB-TTL を使用
SERIAL_PORT = '/dev/ttyUSB0'
# ボーレート
BAUD_RATE = 115200プログラムの実行
実行権限の付与
chmod +x uart_voice.py
# 実行(シリアルポートへのアクセスには sudo 権限が必要)
sudo python3 uart_voice.py実行テスト
正常に起動すると以下が表示されます:
Speech Serial Opened! Baudrate=115200音声モジュールにコマンドワードを話しかけると、対応する ID が表示されます:
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
ハードウェア接続が正しいか確認する
シリアルポートが他のプログラムに占有されていないか確認する
# 利用可能なシリアルポートを確認
ls /dev/tty* | grep ttyQ2: コマンド ID が 0 しか表示されない、または表示されない
A:正常な現象です:
0 = 有効なコマンドが認識されていない
有効なコマンドワードを話したときのみ ID が出力されます
先にモジュールをウェイクアップし、その後にコマンドを話します
Q3: 認識精度が高くない
A:最適化の提案:
環境が静かであることを確保し、背景ノイズが大きすぎないようにします
マイクとの距離を適切に保つ(10-50cm)
話す速度を適切にし、発音をはっきりさせます
Q4: シリアルポート通信の異常
A:確認項目:
TX/RX がクロス接続されているか(モジュール TX → RPi RX)
ボーレートが 115200 であるか
共通接地されているか
シリアルポートが他のプロセスに占有されていないか
# シリアルポートの占有状況を確認
sudo lsof /dev/ttyAMA0テクニカルサポート
問題がある場合は、以下を確認してください:
ハードウェアの配線が正しいか(共通接地は非常に重要です!)
シリアルポートのボーレートが 115200 であるか
ハードウェアインターフェースにアクセスする十分な権限があるか
よく使うデバッグコマンド
ls -l /dev/ttyAMA0 # シリアルデバイスを確認
groups # ユーザーグループの権限を確認
