🤔

ESP32-H2+PlatformIOでzigbee動かすメモ

に公開

開発にはできればGithubCopilotなどのAIを使いたい。
たとえばこの記事↓ にあるようにPlatformIOを使えばESP32をVScodeで開発できるらしい。
https://zenn.dev/kotaproj/articles/esp32_vscode_pio

だがどうやら揉めているらしく最近出ているesp32チップはそのままではplatformioでは動かない。
https://zenn.dev/kyjb/articles/6950231b231643

公式のESP-IDFというのもあるが、なんかちょっととっつきづらい。使いにくく感じてしまう。
https://idf.espressif.com/

慣れているArduinoの書き方でやりたいし、platformioはサクッと始められるから簡単だし、せっかくESP32-H2チップは外部モジュールなしでzigbeeが利用できるので使いたい。

これはサンプルを動かすところまでのメモ

私の環境

大まかな手順

  1. platformio→pioarduinoに変更
  2. pioarduinoからデータダウンロード
  3. zigbeeサンプルの読み込み
  4. 設定ファイル修正
  5. .ino→.cppに変更
  6. 実行

platformio→pioarduinoに変更

VSCode拡張でplatformio IDEを入れている人は削除。代わりにpioarduino IDEを入れてください。

https://marketplace.visualstudio.com/items?itemName=pioarduino.pioarduino-ide

ちなみにpioarduinoはplatformioからフォークされたコミュニティ
導入後はVSCodeを再起動するとよいです
サイドバーにアイコンが表示され、platformio ideと同様に利用できる

platformio ideはリコメンドを無視する設定にしておくと今後の間違いが減ります

pioarduinoからデータダウンロード

pioarduinoホーム画面の左のサイドバーからplatformsを選択

Advanced Installationを押す

https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip

これを入力してinsatallを押下。Espressif32というplatformがインストールされる。

これは本家のものではなくpioarduinoが作ったplatformファイルの安定版。
詳細はこちら
https://github.com/pioarduino/platform-espressif32/

zigbeeサンプルの読み込み

pioarduino ideのホームを開きproject examplesからarduino-zigbeeと検索

switchはボタンを押して信号を飛ばす側、lightは信号を受信して光る側です。
またlightの方はそれ単体でもボタンを押すことで光のon/offが可能です。
ただしサンプルのままでは2台以上でコネクション張らないとライト点灯不可。残念。
それぞれサンプルを開いてください

設定ファイル修正

platformio.iniファイルを開きボードを変更します
たとえばarduino-zigbee-lightのiniファイルはこのように修正します
今回使っているボードはesp32-h2-dev-kit-n4ですがesp32-h2-devkitm-1と互換性があるのでesp32-h2-devkitm-1でOK

platform.ini
; envとboardがesp32-h2-devkitm-1になっていなければ
; esp32-h2-devkitm-1に修正
[env:esp32-h2-devkitm-1]
platform = espressif32
framework = arduino
board = esp32-h2-devkitm-1
monitor_speed = 115200
board_build.partitions = zigbee.csv
board_build.filesystem = spiffs
build_flags =
            -DZIGBEE_MODE_ED
            -DCORE_DEBUG_LEVEL=5

;この辺りの設定は各自の環境に合わせて変更してください
upload_port = /dev/tty.usbmodem31401 

arduino-zigbee-switchも同様に修正。

.ino→.cppに変更

開発する上でシンタックスハイライトが欲しいので.inoファイルを.cppに変更します。
src/Zigbee_On_Off_Light.inoを
src/Zigbee_On_Off_Light.cppに修正し、ファイルの一番上にinclude文を挿入します。

Zigbee_On_Off_Light.cpp
#include <Arduino.h> //←一番上にArduino.hを入れる

// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at

//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

エラーが消えないときはありますがビルドは通るので問題なさそう。
誰かエラーの消し方教えてください。

lightだけでなくswitchの方も同様に対応します。

実行

あとはplatformioと同様にビルド、書き込みを実行します。
今回使っているのはplatformioではなくpioarduinoなので、
cmd+shift+pでコマンドパレットを出し、pioarduino: Build, pioarduino: Uploadで書き込みまで完了できればOK

結果

書き込みが終了するとサンプルファイルが動き始めます。2台以上のesp32-h2を用意し、ボードについているボタンを押下するとlight側端に初めからついているLEDが光り、ボタンでon/off切り替えられることを確認してください

多分これでうまくいくはず

(追記)

というかplatformsの設定変えればそのままplatformioで動くのでは?
と思いながらやってきたことのメモでした

Discussion