🛜
ESP32C6とESP32系ボードでOpenThreadのBorderRouterを作る
用意するもの
- ESP32C6 (今回はXIAO ESP32C6を使用)
こちらをボードAとする - ESP32系のボード (今回はXIAO ESP32C6を使用)
こちらをボードBとする - 配線
- ESP-IDFが動作するPC
ESP-IDFのインストール
-
Windows
https://dl.espressif.com/dl/esp-idf/?idf=5.5
v5.5が無いが、近いバージョンであればたぶんOK -
mac or Linux
mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
git checkout v5.5
./install.sh
ESP-IDF環境の起動
-
Windows
プログラム一覧にESP-IDF *.* PowerShellがあるので起動
*.*はバージョン -
mac or Linux
シェルでesp-idfのディレクトリに移動
. ./export.sh
OpenThread Border Router リポジトリ クローン
git clone --recursive https://github.com/espressif/esp-thread-br.git
RCPファームウェアビルドと設定(ボードA)
cd /{ESP-IDFのパス}/examples/openthread/ot_rcp
idf.py set-target esp32c6
idf.py menuconfig
- 設定画面に入るので以下の通りに設定する。
(Top) → OpenThread RCP Example
[*] Configure RCP UART pin manually ← 有効化
The number of RX pin: 20
The number of TX pin: 21
- ビルドして書き込む
idf.py build
idf.py -p {ボードAのポート番号(もしくはパス)} flash
ボードA側は完了
Border Routerファームビルドと設定(ボードB)
cd /{esp-thread-brのパス}/examples/basic_thread_border_router
idf.py set-target esp32c6 #ここは使うボードに合わせる
idf.py menuconfig
- 設定画面に入るので以下の通りに設定する。
(Top) → ESP Thread Border Router Example
[*] Enable the automatic start mode in Thread Border Router ← 有効化
[*] Enable the web server in Thread Border Router ← 有効化
Board Configuration:
Pin to RCP reset: -1
Pin to RCP boot: -1
Pin to RCP TX: 21 #ESP32C3の場合は5
Pin to RCP RX: 20 #ESP32C3の場合は9
Border router board type: Standalone dev kits
Border router RCP target: ESP32-C6
Example Connection Configuration:
Wi-Fi SSID: (環境に合わせて設定)
Wi-Fi Password: (環境に合わせて設定)
- カスタムパーティションファイル partition.csv の変更
partition.csvを以下の通りに編集する。
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, , 0x6000,
otadata, data, ota, , 0x2000,
phy_init, data, phy, , 0x1000,
factory, app, factory, , 0x1E0000, #factoryを領域を広げる
web_storage,data, spiffs, , 100K,
rcp_fw, data, spiffs, , 640K,
#ota1,ota2を削除
- ビルドして書き込む
idf.py build
idf.py -p {ボードAのポート番号(もしくはパス)} flash
ボード同士の接続
- ボードAのGPIO21とボードBのGPIO21を接続
- ボードAのGPIO20とボードBのGPIO20を接続
※設定でクロスするようになっているので、同じGPIO同士を接続すればOK - VBUSとGNDも接続すれば電源周りの共有が出来ます
動作確認
両方のボードの電源を入れて、HomeAssistantのThreadでOpehThread-ESPが出てくればOK

うまくいかない場合はボードBをターミナルで見てみると良いかも。
Discussion