2015,16年頃のIoTブームがあった時にRaspberry Pi 3を買っていろいろ遊んでいたんですけど、簡単なセンサープログラミングを少しやっていつのまにか止めていました。
当時はwikiの方に作業メモを残していますが、おもちゃとしてラズパイで遊んでいた程度です。
Raspberry Piという筐体は高スペックであるため、普通のWeb開発で使っている環境に近づけることは容易で、C言語以外でもアプリケーションは作れるし、各種センサーもSDK経由で使えたりして自分でドライバを書く必要もなかったので、組み込み系の知識はそれほど増えなかったという感想でした。
Webエンジニアでもそれなりに扱えるのは参入障壁が下がるメリットである一方、新しい技術に触れているという実感が薄くなってしまうため、個人的にヒットしなかったのかもしれません。
ということで、今度はシングルボードコンピュータ(SBC)ではなくマイクロコントローラ(マイコン)方面に目を向けてみると、知る人ぞ知るESP32というものがあることを知りました。
ESP32シリーズは Wi-FiとBluetoothを内蔵する低コスト、低消費電力なSoCのマイクロコントローラである。 TensilicaのXtensa LX6マイクロプロセッサを採用しデュアルコアとシングルコア版のバリエーションがある。 ESP32は、上海に拠点を置くEspressif Systemsが開発し、台湾積体電路製造(TSMC)の40nm工程で製造されている[2]。 ESP8266の後継製品にあたる。 (wikipediaより)
ESP32を年末くらいに買って正月休みに遊んでいましたが、マイコンであるのに非常に高スペックで、Python(MicroPython)でアプリケーションを作れてしまうということが分かり、結局はラズパイと同じような使い方もできてしまうのですが、マイコンなのでOSはもちろん入っていないし省電力なので、よりIoT/組み込みを意識したモノ作りができるような気がします。
例えば、ラズパイで遊んでいた時は考えたことも無かった、間欠動作という概念があることも初めて知りました。Webエンジニアには無縁の考え方です。
MicroPython開発環境のセットアップと簡単なサンプルコードなどは今回もwikiページの方にメモしているので興味があれば。こちらのwikiページには今後も試したことをつらつらと書いていくつもりです。
Pythonは普段から機械学習系で良く使うのでMicroPythonが使えるのは楽なのですが、やはり新鮮味が薄くなるので、今後は別言語(TinyGoかRustが候補)で触ってみたいと思っています。
さて、ESP32(ESP32-DevKitC-32E)の価格ですが、昨今の円安 + 半導体価格高騰の煽りを受けて、僕が購入した2022年末頃はなんと2,890円もしました。最安値の時期だと1,000円ちょっとで買えたらしいですが、Amazonなどの大きなEコマースサイトだとだいぶ高いので、デバイス系はやはり専門店の通販で買うのがオススメのようです。今回は開発ボード付きのESP32-DevKitC-32EというEspressif社製の正規品を買ったのですが、安心安全を買うなら正規品を選ぶのが良いと思います。
同じマイコンであれば知名度が高いのはやはりRaspberry Pi Picoですが、ESP32の方がスペックに対するコスパは優秀なので、普通のラズパイに飽きてマイコンのレイヤーを学びたい人はぜひ。