[ESP32]IoTマイコンを動かしてみる2 -やること&開発環境編‐

今回はESP32を使って実現するシステムと各要素の詳細について説明。

そしていよいよ開発環境について。


実現するシステム

各要素の詳細

ぶっちゃけ本のイントロダクションで紹介されてた装置をぱくtt…大いに参考にさせていただいたシステム。

どうやって、どこまで実現するかを解説。

1. WiFiでルータと接続

まずルータと接続しなければ何も始まらない。ESP32の肝である無線通信。

ESP32自体がAPにもなれて、ESP32同士で無線通信もできるようだが、手元には1台だけなので、今回は基本的にルータ経由の通信を目指す。

2. ルータ経由でLAN内のPCと相互通信

ESP32はウェブサーバとしての動作もできるらしい。LAN内のPCからブラウザ経由でセンサの情報などを取得するイメージ。

相互通信とか書いちゃったけど、ウェブサーバが動けばその先はどうとでもできる気がするので、ウェブサーバの動作確認ができたらその先はやらないかも。

3. Bluetoothでスマホと通信

せっかくBluetoothがあるので試してみる。スマホアプリを作ったりはしない。BLEデバッグ用のアプリがあるらしいので、それを使ってやりとりができるのを確認する。

Bluetoothってどうしてもイヤホンとかマウスとかの接続のイメージが強くて使い方のイメージがわきづらい。。

4. インターネットから情報取得

Internet of Thingsだからね。インターネットとつながらないとね。

ベタに天気情報とかSNS系の情報とか取得する感じかな。

何に役立つかはしらん。

5. クラウドサービスに情報通知

インターネットだからね。時代はクラウドだしね。

AWSを使うのが正攻法だろうけど、AWSのサービスは専門用語とかシステムをしっかり考えて作らないといけないイメージでハードルが高い。

本で紹介されていたAmbientってのが簡単に使えそうなので使ってみよう。

ESP32以外のサーバサイドとかアプリとかの開発にはリソース割かずに簡単に済ませる方針で。

6. センサから情報取得

ESP32の肝の部分その2。

内蔵センサとしてタッチセンサと磁気センサがあるので試してみる(温度センサもあるがチップの温度を測ってしまうそうなので除外)。

手持ちのセンサ(光センサ、温度センサ、距離センサ)あたりもちゃんと使えるか確認するつもり

7. LCDに状態表示

GPIOからの出力制御の確認目的と、無線とか経由せずに単体で情報確認するためにLCDを接続。

というのは建前でLCD付けると途端に電子工作してる感が出るため。

ビジュアルでインパクトを与え、「なんかやってる感」を演出する。

I2Cが使えるみたいなので、そのつもりだったけど手持ちのLCDがパラレル通信用だった。余力があればI2C変換とかするかも。

開発環境選び

ESP32の開発環境調べたらとってもたくさんある。

マイナーな開発環境で情報収集に苦労はしたくないので、本に載ってた3つの開発環境から選ぼう。

3つの開発環境

ESP-IDF

Espressif Systems社公式の開発環境。

開発言語はC,C++。

全ての開発環境の基となっていて、ほぼ全ての機能を使うことができる。デュアルコアを活かすためにタスク管理したり、低消費電力のためにチューンしたりするならこれ。

ただ昔懐かしいテキストベースの設定ツールとかshellからmakeでビルドして書き込み、みたいな感じがとっつきずらい。

Arduino IDE

みんな大好きArduinoのIDEが使える。Arduino core for ESP32というボード・パッケージを導入すればいいみたい。

(関係ないけど上記リンクにピンマップがあって便利。親切。うれしい。)

開発言語はC++(Arduino言語)。

ESP-IDFほどの機能は使えないが、Arduinoの汎用ライブラリが使えたり、なにせ使っている人が多い=ウェブ上に情報が多い。

今時の若者(?)的にはGUIなIDEがとっつきやすい。

MicroPython

組み込み向けPython。

MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard libr...

REPL環境が使えるので動作確認しながらスクリプトが書けるよ。

スクリプトなのでコーディングがらくちん。その反面、パフォーマンスが心配。

調べてみるとPythonの環境とか、書き込みツールとか個別にインストールが必要みたいで若干環境構築のハードルが高め。

ちなみにBluetoothは未対応らしい。

すでにPython環境が整ってて、慣れてる人は良いかも。

対話的な操作ってほんとちょこっとした動作確認とか学習目的にはいいのだろうけど、ちょっとでも込み入ったことしようとすると使いづらいのが個人的な印象。

当面はArduino IDEで進める

ということにしたいと思います。

Arduino IDEなら触ったことあるし、とにかくArduino IDEでESP32の開発をやってる人が多い。本に載ってる応用例もArduino IDEの例ばっかり。

問題の切り分け用途でMicroPython使ったりはするかも。

ESP-IDFは具体的に装置として作る場合に省電力調整に使う感じかな。

今回はスコープ外。(というか地味かつめんどくさそうなのでやりたくない)

まとめ

システムの各要素について実現方法を少し具体化。曖昧なところは適宜考えるということで。

開発環境はまっさらな状態であれば公式を使うのがいつもの私のパターンですが、今回はArduinoの知見があるのと、開発環境周りでストレスを感じたくないのでArduino IDEで。

ESP32の動作確認まで今回やりたかったが、開発環境調査に時間がかかってしまった。

次回こそはいよいよ動作確認!したい!

おやすみなさい。