ESP8266_RTOS_SDK V3を使ってみる
全体的な印象
サンプルコードがこ
ちらに公開されています。
サンプルのいくつかを紹介するつもりでしたが、以下の理由で辞めました。
・サンプルコードが無い
ESP8266_RTOS_SDKのAPIリファレンスがこ
ちらに公開されています。
リファレンスを見るとSleep Modeに関するAPIが有りますが、サンプルが有りません。
・サンプルコードの出来が悪い
pwmのサンプルコードが有りますが、APIと見比べても何が動いているのかさっぱり分かりません。
・ESP32のesp-idfとAPIの互換性がない
こ
ちらにESP32のAPIリファレンスがありますが、GPIOやI2Cでは微妙にAPIと定数が違います。
SPIのAPIは全く別物です。
サンプルが少ないのでこの環境を使ってFreeRTOSやlwIPの機能を理解するには苦労します。
FreeRTOSやlwIPの機能を理解するには、サンプルの多いesp-open-rtosを使っていろいろ試した方がいいです。
esp-open-rtosのサンプルを使えば、FreeRTOSとlwipの機能は、ほとんど理解することができます。
esp-open-rtosは2017年10月ごろを最後に更新が止まっていますが、
ESP8266_RTOS_SDKは2018年4月ごろに公開された比較的新しい環境です。
色々調べてみると、この環境はV2から大きく内容が変わったようで、
移行に関する一時的な回避策や将来の最終ソリューションも公開されていますが、
開発の主流がesp-idfに移ったようで、esp-idfに比べてバージョンアップのペースは非常に遅いです。
この環境はFreeRTOSを前提としています。
1つしかCoreがないESP8266でFreeRTOSの環境が必要か疑問です。
シングルコアの環境であれば、ESP8266 Core for Arduino で十分だし、機能的にも過不足ありません。
ESP32では、2つのコアで同時に複数のタスクを動かすことができます。
割り込みベースでは複数のコアを活用することができません。
マルチコア、マルチタスクに対応したアプリを作る場合、FreeRTOSの機能を使った方がはるかに簡単に実装することができます。
また、ESP32 Core for Arduinoは、ESP32の一部の機能しかサポートしていません。
どうしてもESP8266を使う必要が無ければ、ESP32のesp-idfを使った方がいいです。
ESP8266にできて、ESP32にできないことはないです。
2019年にシングルコアのESP32-S2がリリースされました。
2021年には同じくシングルコアのESP32-C3がリリースされました。
これらシングルコアのESP32は、ESP8266のリプレースを狙った製品と言われています。
ESP8266EXはWiFi搭載で、しかもArduno環境でビルドができると言う事で、非常に人気のあるSoCですが、
2014年にリリースされたので今となってはかなり古いSoCです。
今後は徐々にフェードアウトする可能性が有ります。