stakのWiFiモジュールにEspressifのESP32(ESP-WROOM-32)を使用した理由

stakのWiFiモジュールにEspressifのESP32(ESP-WROOM-32)を使用した理由

みなさんこんにちは。

開発担当の上本です。

stakはモジュール同士を連結してハード的に機能を拡張ができる点で、これまでのスマート電球とは少し違った形をしたIoTデバイスとなっています。

今回は、stakの頭脳であり、無線通信にも使用しているEspressifのESP32についてのスペックや採用した理由なども含めて紹介していきます。

ESP32(ESP-WROOM-32)のスペック

Wikipediaから抜粋して紹介します。

CPU:Xtensaデュアルコア32ビットLX6マイクロプロセッサ、160または240 MHzで動作し600 DMIPSまでの性能 メモリー:520KiB SRAM 無線接続: Wi-Fi 802.11 b/g/n/e/i Bluetooth v4.2 BR/EDRとBLE 周辺インターフェイス: 12ビットの SAR ADC を18チャンネル 2×8ビット DAC 10×タッチセンサー 温度センサ 4× SPI 2× I²S 2× I²C 3× UART SD/SDIO/MMC ホスト スレーブ(SDIO/SPI) Ethernet MACインターフェイス DMAおよびIEEE1588をサポート CAN Bus 2.0 IR(TX/RX) モータ用 PWM LED PWM 最大16チャンネル ホール効果のセンサー 超低消費電力アナログプレ-アンプ セキュリティ: IEEE802.11標準セキュリティ全機能に対応、WFA/WPA/WPA2/WAPIを含む Secure boot Flashの暗号化 1024-bit OTP、768-bit ユーザプログラマブル 暗号ハードウェア高速: AES、SHA-2、RSA、楕円曲線暗号 (ECC)、乱数ジェネレータ (RNG) 電力管理 内蔵LDO RTC用の個別電源 5μAのディープスリープ ウェークアップ(GPIO割り込み、タイマー、ADC、タッチセンサからの割り込み)

モジュール単体でここまでの機能を搭載しているものは、他にはないのではないでしょうか。

特に単体モジュールにWiFiとBLEが搭載されているものは中々なく、GitHubの開発コミュニティも活発に活動されています。

ESP32を採用した理由

ESP32を採用した理由は大きく3つあります。

1モジュールにWiFiとBLEを搭載

まず1つ目が、モジュール内にWiFi+BLEが搭載されていることでした。

WiFiとBLEをデバイスに内蔵しようとなると、それぞれのモジュールを回路内に組み込む必要があり、コストも回路内スペースも大きくなってしまいます。

ESP32であれば、限られた領域でWiFi+BLEの機能を提供できるので、それだけで採用する価値があります。

また、stakはOTAでファームウェアを随時アップデートしていきますので、WiFiやBLEを使った機能拡張も予定しています。

オープンソース

2つ目が、ESP32のソースコードがオープンソースであるということです。

オープンソースとは言葉の通り、プロジェクトのソースコードが公開されており、世界中の誰でもソースコードの中身を見たり、開発に貢献することができるプログラム(ソース)のことを言います。

ESP32のプログラムを書く場合、Espressif公式が提供しているIDF(IoT Development Framework)や、日本でもかなり人気があるArduino言語(C++)といった選択肢があります。

これらのフレームワークは、どれもオープンソースで開発が進められており、バグの修正や新機能の実装は、コミュニティが積極的に取り組んでいます。

stakの開発は、限られた時間と人数で開発をしているので、モジュール自体の開発はコミュニティに任せ、stak独自の機能を優先して作れるところもオープンソースのメリットです。

補足ですが、将来的に個人が独自モジュールの開発ができるようにSDKと開発キットを出す予定ですが、こちらもオープンソースとして公開していく予定です。

多くのSPI対応ポート

3つ目は、ESP32のSPI対応ポートが多いことです。

stakはモジュールが着脱可能で、最大3モジュールまで接続してデータをやり取りすることができますが、それを実現しているのがSPIという通信規格です。

以前までは、ESP32の前モデルであるESP8266というWiFiチップで開発を進めていましたが、SPI対応ポートが少なかったため複数のモジュールを着脱することが難しい状況でした。

ESP32が登場したことで、ESP8266の資源を活かしつつ実装できることが大きなポイントとなりました。

最後に

以上がESP32を採用した理由でしたが、いかがでしたでしょうか?

内部のソフトウェアについては現在も開発を進めていますが、機能ができるたびに機能紹介をしていきますので、楽しみにしていてください。