ESP32-H2+PlatformIOでzigbee動かすメモ
開発にはできればGithubCopilotなどのAIを使いたい。
たとえばこの記事↓ にあるようにPlatformIOを使えばESP32をVScodeで開発できるらしい。
だがどうやら揉めているらしく最近出ているesp32チップはそのままではplatformioでは動かない。
公式のESP-IDFというのもあるが、なんかちょっととっつきづらい。使いにくく感じてしまう。
慣れているArduinoの書き方でやりたいし、platformioはサクッと始められるから簡単だし、せっかくESP32-H2チップは外部モジュールなしでzigbeeが利用できるので使いたい。
これはサンプルを動かすところまでのメモ
私の環境
- M4 Mac
- VSCode
- ESP32-H2-DEV-KIT-N4 2枚
大まかな手順
- platformio→pioarduinoに変更
- pioarduinoからデータダウンロード
- zigbeeサンプルの読み込み
- 設定ファイル修正
- .ino→.cppに変更
- 実行
platformio→pioarduinoに変更
VSCode拡張でplatformio IDEを入れている人は削除。代わりに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ファイルの安定版。
詳細はこちら
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
; 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文を挿入します。
#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