🛜

ESP32C6とESP32系ボードでOpenThreadのBorderRouterを作る

に公開

用意するもの

  • ESP32C6 (今回はXIAO ESP32C6を使用)
    こちらをボードAとする
  • ESP32系のボード (今回はXIAO ESP32C6を使用)
    こちらをボードBとする
  • 配線
  • ESP-IDFが動作するPC

ESP-IDFのインストール

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