ESP32開発に使う「ESP-Prog」は基板むき出しなので3Dプリンタでケースを作ってみました。蓋はハメ込んであるだけで接着はしていません
完全に覆ってはいませんが、なかなかナイスな外観に仕上がりました
ESP32開発に使う「ESP-Prog」は基板むき出しなので3Dプリンタでケースを作ってみました。蓋はハメ込んであるだけで接着はしていません
完全に覆ってはいませんが、なかなかナイスな外観に仕上がりました
VScode PlatformIOでのESP32コーディングはArduino版で行うことが多くなってきた。そこでESP32-S3のADC設定した過去記事「PlatformIO版ESP-IDF V6に移行する – ADC」をArduino版で再コーティングしてみました
対象はESP32-S3-WROOM-1-N16R8です
ESP-IDF版ではADCのキャリブレーション用構造体をセットしAPIを実行するとゲイン誤差が数%→1%以下に収まった、というものでしたが、Arduino版ではどうか?、という顛末です 続きを読む…
原典は、garretlabさんの「Arduinoで遊ぶページ:スマホカメラのシャッターを切る」です。ESP32-WROOM-32Eで試したら、あっさり動作OK。同じ音量キーでカメラのシャッター切れるタイプならandroidだけでなくiPhoneなどにも応用できそうな有用な情報です。
ただ、ESP32-S3ではそのままOKとはいかなかったので、その顛末です
ESP32-S3のUSBをESP-IDFとarduinoモードでCDCを構成した覚書。V6になって少し変更があったのでダブりもありますが「ESP32-S3-1-N16R8を試してみる-USBIFでCDCデバイス」の続編です。
両方ともバックグラウンド受信してくれますが、ESP-IDFは受信イベントが使える代わりに、V6でtinyUSBが外付けになってコーディング量も多く、それに対しarduinoモードは受信イベントは無いけどシンプル記述できるので、両方同時に使えればよいな~、と思いましたが、現時点のesp32-s3-devkitc-1ではplatformio.iniにesp-idfとarduino同時記述はできず、また当然ですがesp-idfコードに<arduino.h>を追加してもエラーになるので、別々に確認した記事です。
M5Stack Core2でIMU(6軸センサ)のサンプルプログラムを応用して、アプリを構築しようとしています。
M5Stack Core2のスイッチはタッチパネル(以降TP)の一部を使っています。IMUと共通I2Cです。マルチタスクで読みだす際に、アクセス競合防止にMutexで排他制御した覚書です
ESP32の開発では、「ESP-IDF環境でないとFreeRTOSが使えない」と勝手に誤解して永らくESP-IDFを使っていましたが、今回の解決でArudino環境でも使えるのが大々的に判明したので、嬉しくなっての投稿でもあります。
ESP32-S3の開発にはPlatformIO(以降PIO)版ESP-IDFV5.1.1で行っていましたが、V6.1.0まで使えるようになったので今後のことも考えて移行することにします。
PIO版ESP-IDF V6は公式版ESP-IDF V5に相当し、公式版ではV4→V5で大幅に変更がありました。migrationの一覧はここ、詳細はここで。バージョンの値が近いのでややこしいです。
以前公式版とPIO版のVersionを混同してPCNTをレガシー表記で使った記事を書きましたが、今回の変更でそれも新表記に修正することになりました。
今回はADCについての覚書。キャリブレーションの効果も簡易的に測定しました。
2023/1/4 文章修正と内容訂正しました。
2023/4/12 ESP-IDFバージョンについての記述を追加しました。
公式版ESP-IDFのAPIはV4.4からV5へのバージョンアップで大幅に仕様が変わっていました。
PlatformIO版ESP-IDFはV6が公式版V5に相当します。これがややこしく、私も混同していましたので、以下のPCNTについての内容はPlatformIO版V5では公式版V5の記述ができない、という至極当然のことだったわけで、訂正いたします。
PCNTも含まれ、記述や関数名が変わっています。参考はここ
ところが、PlatformIOでESP32-S3をESP-IDF V5.1.1で開発してみると、新しい仕様のPCNTが使えない。無理やり「pulse_cnt.h」「pulse_cnt.c」を組み込んでも当然ながらframeworkにhalのドライバが存在しないのでリンカが通らない。なにより小手先の対策はESP-IDFのバージョンを変えるとフレームワークも一新されるので得策ではありません。
今回はレガシィ記述でPCNTを使うことにしました。その覚書です。
VScode+PlatformIOで開発したコードは、PlatformIO→UpLoadで書き込めますがBuildも含まれるので複数枚書き込みには適しません。
そこで、VScodeが吐き出したコードを単体のFlashプログラマとして「esptool」で量産書き込みする覚書です。私の環境はESP32-S3ですが、ESP32全般でたぶん使えると思います。
Espressif IDEの公式HELPでは4.4.3ですが、2022/11現在のPlatformIOのESP-IDFの最新バージョンは5.2.0です。
ただ、ESP32-S3での5.2.0では、ブートからうまくいかないのでいろいろなバージョンを試しています。
最新バージョンは、platformIO.iniのplatform項目にgitを直接指定します。
1 | [env] |
これで最新バージョンが適用されます。適用後のPlatformIOのinstallを見るとV5.2.0+パッチが適用されていました。
常に更新されているようです。
過去バージョンが存在するバージョンは
https://github.com/platformio/platform-espressif32/releases
から確認できます。
ここから希望のバージョンをピックアップし、PlatformIOのplatform=espressif32に後に@x.x.xを追加します。
例としてV5.1.1なら
1 | [env] |
2 | platform = espressif32@5.1.1 |
まだまだ、いろいろ試さなければなりませんが、バージョン設定などの操作は徐々にやりやすくなってるみたいです。
ESP32-S3モジュールは相当魅力的ですが、情報量が少ないので、少しづつ自分なりに確認していきます。開発環境はVScode+PlatformIO ESP-IDF版です。
今回は、ESP32-S3-1-N16R8で、JTAG用のUSBをCDCデバイスとして設定してみた覚書です(windows限定です)。
2022/11/28追加 sdkconfig.xxxの更新方法