SF32 BLE Talkbackインターコム¶
Talkbackとは¶
OpenSiFli Talkbackは、SF32LB52-DevKit-ULP(Huangshan Piとも呼ばれます)向けの複数デバイス対応BLEプッシュ・トゥ・トーク(PTT)サンプルです。Masterモードではルームを作成し、Slaveモードではルームを検索して参加します。参加後、ユーザーが通話キーを押している間は送信し、離すと停止します。公式の基準実装では最大8台のデバイスに対応し、最大3台が同時に発話できます。
このプロジェクトは音声コーデックにOpusを使用し、RGB LED、キー、ディスプレイを組み合わせた簡易ローカルUIを備えています。また、ワンキーでのSlave再接続、バッテリー電圧/残量表示、60秒間入力がない場合のスリープ、長押しによる電源オフ/オン動作も実装しています。そのため、単純な1対1音声サンプルより、携帯型インターコムの参照例として有用です。
SF32を採用する理由¶
この開発手順では、SF32LB52のBLE、オーディオ、ディスプレイ、キー、バッテリー監視、低消費電力動作を、動作する1つの基準構成で評価できます。カスタムRF、オーディオ、電源設計に投資する前に、対応開発ボード上でネットワークと音響を評価できます。
「最大8台、同時発話3台」は上流実装の上限であり、通信距離、干渉、パケット損失、あらゆる同時発話パターンを含め、製品条件で検証済みであることを示すものではありません。上流資料には、ルーム認証、リンク暗号化方針、音声プライバシーの保証、バイナリーのtalk_backコンポーネントに関する完全なライセンス範囲も記載されていません。いずれも製品レビューで個別に確認する必要があります。
開発ボード資料について: SiFli WikiのULP開発ボード中国語ページは「未公開」とされ、低消費電力センサー/ウェアラブル用途、3軸または6軸センサー、低消費電力測定用テストポイントのみを記載しています。完全なボード仕様ではありません。周辺機器は実際の基板リビジョンと回路図で確認してください。以下のTalkback動作は、固定した上流アプリケーションソースに基づいています。
目標、対象範囲、開始条件¶
目標: リビジョンを管理した2台以上のボードで、ルーム作成、参加、PTT音声、退出/再接続、スリープ/ウェイク、バッテリー状態の動作を再現し、カスタムハードウェアへの移行が妥当か判断できる証跡を残します。
対象外: このページは、長距離通信、リンク劣化時の音声品質、エンドツーエンド暗号化、認証、量産時の電力、アンテナの一貫性、法規制への適合、任意のBLEデバイスとの互換性を証明するものではありません。
開始条件: SiFli-SDKのビルド環境を導入し、UART経由でファームウェアを書き込み、ログを確認し、安全にスピーカーとバッテリーを接続できること。音声動作の基準試験には、同一リビジョンのボードが最低2台必要です。
| 項目 | 基準要件 | 次に進む前に保管する証跡 |
|---|---|---|
| 再現性の境界 | 最初は上流ターゲット、依存関係、デフォルト操作を変更しない | ボードリビジョン、アプリケーションのコミット、SDKリビジョン、依存解決記録、ファームウェアのハッシュ |
| 機能の境界 | 作成/参加、PTT、退出、Slave再接続、スリープ/ウェイク、バッテリー表示を確認 | 操作記録、UARTログ、LED状態、故障復旧結果 |
| 製品の境界 | 音響、RF、セキュリティ、プライバシー、ライセンス、電力、法規制は個別に検証 | リスク、担当者、対応計画、続行/中止の判断 |
ハードウェアとソフトウェアの仕様¶
ハードウェア仕様¶
| コンポーネント | 必要な仕様 | 役割 | 必須/任意 | 入手先 | 互換性と代替に関する注意 |
|---|---|---|---|---|---|
| SF32LB52-DevKit-ULP/LCKFB-HSPI-SF32LB52-ULP | sf32lb52-lchspi-ulpターゲット。2台以上8台以下 |
Talkbackを実行し、BLE、マイク、ディスプレイ、キー、RGB LED、電源、オーディオ経路を提供 | 必須 | μForgeのボードリファレンス、LCKFBボードページ、SiFliサンプル/キットストア | ハードウェアリビジョンをすべて記録してください。未検証のSF32LB52ボードを同等品として代用できません |
| スピーカー | GH-1.25 mmコネクター経由の外付け3 W/4 Ωまたは2 W/8 Ωスピーカーを各ボードに1台 | 受信音声を再生 | 必須 | ボードキットに同梱されることが多いため、購入前にボードリファレンスと同梱物を照合してください | オンボードClass-Dアンプとコネクターの制限外の負荷を接続しないでください |
| USBデータケーブルとホスト | 各ボードにデータ通信対応USB-Cケーブルを1本。SiFli-SDKツールを実行できるホスト | 電源、UART書き込み、ログ取得 | 必須 | 標準的なUSB-Cデータケーブル。SiFli-SDKからツールを入手 | 充電専用ケーブルではファームウェアを書き込めません。ポート割り当てとホスト環境を記録してください |
| 単セルリチウムバッテリー | ボードのコネクター、極性、充電経路に適合すること | 携帯動作、スリープ/ウェイク、バッテリー残量の評価 | 製品評価には必須、ベンチ上の機能確認には任意 | Talkbackリポジトリーには専用販売先の記載がありません。購入前にボードリファレンスで接続仕様を確認してください | 接続前に極性、電圧範囲、容量、保護回路を確認してください。コネクターの外観だけでは適合性を判断できません |
| 内蔵マイク、キー、RGB LED、ディスプレイ | 開発ボードに搭載された純正部品 | 音声の入力と、役割、ペアリング、発話、受信、スリープ状態の表示 | 内蔵 | ボードに含まれ、個別には調達しません | オーディオやHMI部品の交換は変更に当たり、ゲイン、タイミング、キーコード、状態マップの回帰試験が必要です |
ソフトウェア仕様¶
| パッケージ/サービス | 必要なバージョンまたはリビジョン | 役割 | 必須/任意 | 入手先 | 互換性と更新時の注意 |
|---|---|---|---|---|---|
OpenSiFli sifli-sdk-demo/talkback |
記事レビュー時のコミット6fa55ac |
アプリケーション、ボード設定、ビルド入口 | 必須 | Talkbackソースディレクトリー | 上流のmainは更新されます。証跡取得前にコミットを固定してください。現在のパスはtalkback/projectです。READMEにあるexample/ble/talkback/projectは古いパスです |
| SiFli-SDK | conanfile.pyでは^2.4との互換性が宣言されています。上流では厳密なSDKコミットは固定されていません |
RT-Thread、BLE、オーディオ、電源、ビルド、書き込みの基盤 | 必須 | OpenSiFli/SiFli-SDK | ^2.4を満たす具体的なコミットを選び、記録してください。更新され続けるmainは基準リビジョンではありません |
talk_back/1.2@sifli |
1.2 |
BLE Talkbackのネットワーク/オーディオコンポーネント | 必須 | プロジェクトのConanマニフェストで解決 | 上流ページには単体ソース、パッケージハッシュ、パッケージサーバー、完全なライセンス情報がありません。製品で使う前にパッケージと解決記録を保管し、このリスクを解消してください |
| OpusおよびWebRTC AECM/AGC設定 | 固定したアプリケーション、SDK、Conan依存関係により決まります | 音声符号化、エコー処理、ゲイン制御 | 必須 | プロジェクト設定および固定したSDK依存関係 | 機能マクロだけを記録せず、解決したライブラリのバージョンとライセンス資料を保管してください |
| SCons、コンパイラー、UART書き込みツール | 選定したSiFli-SDKに適合するバージョン | 設定、ビルド、イメージ書き込み | 必須 | 選定したSiFli-SDK環境に含まれます | ホストOS、ツールチェーンのバージョン、ビルドコマンド、生成スクリプトのハッシュを記録してください |
サポート対象の基準構成を選ぶ¶
まず、同一リビジョンのSF32LB52-DevKit-ULPを2台用意します。デモリポジトリーを6fa55acに固定し、^2.4を満たす具体的なSiFli-SDKコミットを選んで記録し、talk_back/1.2@sifliのConan解決結果も保管してください。最初の再現試験では、オーディオパラメーター、役割ロジック、低消費電力のタイミングを変更しないでください。
リポジトリーのルートから、実在するパスへ移動してビルドします。
Windowsでは、生成される書き込みスクリプトはbuild_sf32lb52-lchspi-ulp_hcpu\uart_download.batです。実行し、プロンプトが表示されたら該当するCOMポートを入力します。全デバイスに同じ基準イメージを使用し、各ボードの識別情報とイメージハッシュを記録してください。
デフォルトの操作と状態表示¶
| 状態 | KEY1 | KEY2 | LED |
|---|---|---|---|
| 待機 | 過去に接続成功したSlaveは短押しで再接続。それ以外は短押しでスリープタイマーをリセット | 短押しでMaster/Slaveを切り替え、長押しでペアリング開始 | Masterは青点灯、Slaveは赤点灯 |
| ペアリング | — | Masterはルームを作成、Slaveはスキャン | Masterは青点滅、Slaveは赤点滅 |
| 開始待ち | — | Masterが長押しして開始を確定 | Masterは青点滅、Slaveは赤点滅 |
| ルーム参加中 | KEY2を離してから短押しすると退出 | 長押しで発話し、離すと停止 | 発話中は緑点灯、受信中はオレンジ点灯 |
| スリープ | どのキーでもウェイク | どのキーでもウェイク | 消灯 |
プロジェクトの開発段階と判断ポイント¶
| 段階 | 判断する内容 | 最低限必要な証跡 |
|---|---|---|
| 未変更の基準構成を確立 | バージョン固定した一式をビルド、書き込み、安定起動できるか | バージョンマニフェスト、クリーンビルドログ、イメージハッシュ、起動記録 |
| 2台での音声通話を検証 | デフォルトのルーム作成、参加、PTTが動作するか | 2台の役割、LED、キー操作、双方向音声の記録 |
| ネットワークと復旧を検証 | 退出、タイムアウト、再接続、同時発話の境界が許容できるか | 故障注入マトリクス、復旧時間、ログ、失敗状態 |
| 音声と電力を評価 | 音声品質とバッテリー動作が想定フォームファクターに合うか | 音質、レイテンシ、通信距離、電流、スリープ、ウェイクの測定 |
| 製品化準備をレビュー | カスタムハードウェアに投資できる証跡がそろっているか | リスク一覧、担当者、続行/保留/中止の判断 |
システム構成と依存関係¶
flowchart LR
subgraph A["Master — SF32LB52-DevKit-ULP"]
AM["マイク"] --> AC["Opus/オーディオ処理"]
AK["KEY1/KEY2"] --> AN["ルーム/PTT状態機械"]
AN --> AL["RGB LED/ディスプレイ"]
AC <--> AN
end
subgraph B["Slave — SF32LB52-DevKit-ULP"]
BN["BLE Talkbackネットワークコンポーネント"] <--> BC["Opus/オーディオ処理"]
BC --> BS["スピーカー"]
BK["KEY1/KEY2"] --> BN
BN --> BL["RGB LED/ディスプレイ"]
end
AN <--> |"BLEルーム制御/音声"| BN
AP["バッテリー/USB電源"] --> A
BP["バッテリー/USB電源"] --> B
主な故障領域は、BLEスキャン/ルーム作成、ルーム状態の同期、同時発話のスケジューリング、Opus/音響経路、キーイベント、低バッテリーとスリープ、電源キーによる復旧、未公開コンポーネントとライセンス情報です。まず役割と状態を診断し、その後に無線、オーディオ、ローカル電源の問題を切り分けます。
段階1 — 未変更のソース基準構成を確立する¶
目標: 固定したソース、SDK、解決済み依存関係から再現可能なイメージが生成されることを確認します。
- アプリケーションと具体的なSDKコミットを固定し、依存関係の解決結果を保管します。
- クリーンなディレクトリーで
sf32lb52-lchspi-ulpをビルドし、2台のボードに書き込みます。 - 各デバイスがSlaveとして起動し、赤色LEDが点灯することを確認した後、キー、ディスプレイ、バッテリー、スピーカーの経路を試験します。
保管する証跡: バージョンマニフェスト全体、ビルド/書き込みログ、ファームウェアハッシュ、両ボードのリビジョン、起動記録。
ゲート1の終了条件: 同じ入力から同一の基準イメージを再現可能に生成して両デバイスに書き込め、起動時の状態が上流の動作と一致すること。
段階2 — ルーム設定と双方向PTTを検証する¶
目標: デバッガーを使わずに、ユーザーが最低限のルームを作成して利用できることを確認します。
- 待機中に一方のデバイスでKEY2を短押しし、青色LED点灯のMasterにします。もう一方は赤色のSlaveのままにします。
- 両方のデバイスでKEY2を長押しします。Masterはルームを作成し、Slaveはスキャンします。ペアリングは30秒でタイムアウトします。
- 開始待ち状態でMasterのKEY2を長押しして開始します。通話状態ではKEY2を押している間発話し、離すと停止します。
- 送信中の緑点灯、受信中のオレンジ点灯を確認し、双方向で音声を聞き取れることを確かめます。
保管する証跡: 役割、操作の時系列、LED状態、UARTログ、双方向の音声サンプル、再試行結果。
ゲート2の終了条件: 2台以上のデバイスで双方向PTTセッションを繰り返し完了でき、インジケーターが実際の音声方向と一致し、30秒タイムアウト後に説明可能な状態へ戻ること。
段階3 — 退出、再接続、収容台数の境界を検証する¶
目標: 上流の復旧経路と容量上限を確認し、ユーザーが操作不能にならないことを確かめます。
- 通話状態で退出するには、KEY2を離してからKEY1を短押しします。送信中のデバイスは退出できません。
- 過去に接続成功したSlaveは、待機中にKEY1を短押しすると再接続します。Masterには同等の再接続経路はありません。
- 通信範囲外への移動、ペアリングタイムアウト、Masterの停止、電源再起動を試します。
- 複数ユーザー動作が必要な場合は想定人数まで台数を増やし、最大8台、同時発話3台という記載上の上限を検証します。
保管する証跡: 各故障について、初期状態、トリガー、復旧操作、復旧時間、ログ、最終的なルーム参加者。
ゲート3の終了条件: 対象とする各故障に、明確で反復可能かつユーザーが理解できる復旧経路があり、必要な台数/同時発話数を上限値の記載だけで判断せず、対象RF環境で実測していること。
段階4 — 音声、RF、消費電力を評価する¶
目標: 開発ボードの動作が、想定する筐体、通信距離、動作時間を満たせるか判断します。
- 静かな環境、近端の同時発話、背景雑音、複数のスピーカー音量設定で、明瞭度、クリッピング、エコー、PTT開始/終了時の音切れを記録します。
- 想定距離、障害物越し、2.4 GHz干渉下で接続、切断、復旧を記録します。
- 60秒間入力がない場合のスリープ、Slaveへの役割リセット、任意キーでのウェイク、長押しによる電源オフ/オン、バッテリー残量20%未満のLED表示を確認します。
- 待機、送信、受信、スリープ、ウェイク時の電流を測定します。開発ボードの測定値を最終製品のバッテリー寿命と同一視しないでください。
保管する証跡: 試験環境、ボード/アンテナの向き、音声ファイル、距離と干渉、電流波形、バッテリー条件、復旧結果。
ゲート4の終了条件: 製品チームが対象環境に必要な音響、RF、電力、ウェイクのしきい値を定義して達成し、未達項目すべてに担当者と対応方針があること。
段階5 — 製品化準備のレビュー¶
カスタムハードウェアに進む前に、少なくとも次の質問に答えてください。
- ルームは信頼できるデバイスをどのように識別し、音声と制御データにはどの認証、暗号化、リプレイ保護を適用しますか。
talk_back/1.2@sifli、Opus、WebRTCコンポーネント、リポジトリー内ソースファイルのライセンス、ソース提供、脆弱性対応は誰が管理しますか。- 対象アンテナ、筐体、人体による遮蔽、同時発話条件で、通信範囲、レイテンシ、パケット損失、復旧を測定しましたか。
- マイク、アンプ、スピーカーキャビティ、音量制限は、音響と安全の要件をどのように満たしますか。
- 低バッテリー、異常な電源断、ファームウェア破損、現場更新の失敗から、デバイスはどのように復旧しますか。
- 適用されるBluetooth、EMC、無線、バッテリーの適合性評価は何ですか。
ゲート5の終了条件: リスク一覧に証跡、担当者、緩和策、明示的な続行/保留/中止の判断が記載されていること。セキュリティ、ライセンス、法規制の問題を、担当者不在の「後回し」の作業として残してはいけません。
製品設計への引き継ぎ¶
固定したソース/SDK/依存関係、役割と状態機械、容量と復旧のマトリクス、オーディオ/RF/電力の測定値、アンテナと音響の前提、バッテリー/充電の境界、セキュリティ/プライバシーモデル、ライセンス資料、量産試験の要件、復旧計画を引き継いでください。SF32LB52xの製品統合手順を使って、チップ、モジュール、ボード、ハードウェア設計ガイド、チェックリストを選定します。検証済みの動作をカスタム回路図とレイアウトへ反映し、開発ボードの結果がそのまま当てはまると仮定せずに再確認してください。
主な情報源¶
- OpenSiFli Talkbackディレクトリー
- アプリケーションレビュー時のコミット
6fa55ac - Talkback公式README
- Talkback Conanマニフェスト
- Talkbackプロジェクト設定
- OpenSiFli/SiFli-SDK
- SF32LB52-DevKit-ULP公式Wikiソース
- SF32LB52-DevKit-ULP中国語Wikiソース
最終更新: