今更だけど。 ESP32とSTM32とArduinoについて書いてみる

がじぇっとりっぷではSBC(シングルボードコンピューター)の記事をよく書いていますが、さらに小型の領域に、マイコン(マイクロコントローラー)というものがあります。

1年くらい前からネタにしようとは思いつつも先延ばしにしていたので、2021年に取り組む新ジャンルとして、マイコンについても少し記事を書いていこうかと思っています。

ただ、マイコンの世界は深いし、がじぇっとりっぷも詳しいわけではないので、主に記事にするのはESP32とSTM32、Arduinoくらいですね。

ここで書かれていることはがじぇっとりっぷの私見です。本業の方の意見とは異なっている場合があること、ご了承下さい。また、ツッコミも歓迎です。
スポンサーリンク

マイコンとは

マイコン(マイクロコントローラー)を一言で言うと「基本機能を全部持ったチップ」となります。

マイコンの定義としてよく言われるのが「演算・制御装置(CPU)、メモリ装置(RAM・ROM・フラッシュメモリー)、タイマー回路、入出力回路(I/O)を1つの集積回路に組み込んだもの」です。要はコンピューターとしての基本機能ですね。

一番身近な例では炊飯器でしょう。マイコン炊飯器なんて謳い文句があったくらいですし。

・ボタンで入力
・炊き方を制御するプログラム(を保存するROM)
・炊飯時間を計るタイマー
・それらの処理を行うCPU

見ての通り、マイコンの定義要件をすべて含んでいます。

マイコンという言葉は元々はチップ単体を示していましたが、現在ではマイコンチップを搭載したボード全体を指すこともあります。

ここで紹介する「ESP32」「STM32」「Arduino」は、言ってしまえば組み込みチップの開発用(兼本番用)です。機能を絞って特化させていないので、汎用マイコンなんて言う呼び方をされることもあります。

SBCでいいんじゃ?

身も蓋もない言い方になりますが、マイコンでできることはSBC(シングルボードコンピューター)であれば大体できます

というか、実際組み込みの現場でも調達が容易でドキュメントも揃っている「Raspberry Pi」を使っているなんてことも増えています。

ではなぜマイコンかというと、一言で言っちゃうと、SBCだとオーバースペックだからです。炊飯器にWEBサーバーを建てるような処理性能は…あっても困らないかもしれないけど、性能をフルに発揮する場面なんてないですよね?

また、消費電力も大きく違います
マイコンの世界では消費電力はmA(ミリアンペア)のオーダーで、高くても1Wとか2W程度です。

スリープ時はμA(マイクロアンペア)単位になるため、間欠動作させることで乾電池で数か月動作した、なんて事例が多数存在しています。これはSBCでは真似できない点でしょう。

それぞれの比較

ESP32 STM32 Arduino
開発元 Espressif Systems STMicroelectronics Arduino
CPU Tensilica Xtensa LX6 Cortex-M0~M7 ATmega
Cortex-M0+
動作周波数 160 / 240MHz 32~550MHz 16~48MHz
RAM 最大520KB 最大1MB 最大32KB
ROM 最大16MB 最大2MB 最大256KB
Wi-fi 802.11 b/g/n/e/i × 一部対応
Bluetooth 4.2 × 一部対応
LoRa 一部対応 シールドで対応
OS FreeRTOS
Zephyr
NuttX
MongooseOS
FreeRTOS
μITRON
embOS
ThreadX
なし
FreeRTOS
言語 Arduino
C/C++/C#
Python(MicroPython)
JavaScript
Lua
mRuby
Lisp
C
Python
Arduino
C/C++

ESP32とは

開発元サイト
WikiPedia

ESP32とは2016年にEspressif Systems社が開発したマイコンで、馬鹿みたいに安いのにWi-fiを内蔵しているのが大きな特徴です(技適取得済みモデルもあるので国内でも使えます)。2014年に登場した前世代のESP8266(Wikipedia)も、ESP32よりスペックは低いながらもその分消費電力が低いということで、現役で販売されています。

マイコンですが割と性能が高くて汎用性があり、がじぇっとりっぷが2018年に紹介した「ODROID-GO」は、SoCにESP32を使っていました。

SBC(シングルボードコンピューター)メーカーのHardkernelが2018年6月18日、32ドルのゲームボーイライクなキット「ODROI...

また、Wi-fiを備えているということで農業IoT(ハウス内の温度・湿度管理とか)でも注目を集めています。

単体だと500円くらいですが、ピンと電源を使いやすくしたボードが多く出ており、そちらは700円くらいからです。

最近ではESP32にディスプレイ、microSDカードスロット、スピーカー、ボタンを一つの筐体にまとめた「M5Stack」がマイコン界隈ではブームになっています。

プログラム開発は「Arduino IDE」が一番に挙げられますが、Visual Studioなどを使うこともできますし、極論コンパイルと流し込みができればテキストエディタで書いても問題ありません。

現在はESP32に対応したIDEやプラグインがいろいろ出ているので、まずは今お使いの開発環境をESP32対応にできるか調べた方がいいでしょう。

「M5Stack」の影響か、画像処理関連の情報が充実しているのもESP32の特徴ですね。

STM32とは

開発元サイト
Wikipedia ※英語

STM32とは2007年にスイスのSTMicroelectronicsが開発したArm Cortex-M搭載マイコンの総称です。当時は「世界で初めてArm Cortex-Mを搭載した」のだとか。

現在ではSTMicroelectronicsは汎用マイコン市場では世界2位のシェアを誇っています。

余談ですが、2015年までシェア1位だった日本のルネサスは、3位にまで落ちています。

機能・用途別に仕様が異なったモデルが大量にあり(あらゆる用途に応えることでシェアを伸ばした)、公式サイトでは16シリーズ1100余モデルが掲載されています。

STMicroelectronicsでは既存のMCU(Micro Controll Unit)より上位のMPU(Micro Processing Unit)に分類しているCortex-A7搭載モデルを2019年に発表していますが、最大でデュアルコア800MHz駆動とかいう、それ本当にマイコン?って言いたくなる代物になっています。

開発用に、ピンや端子などのインターフェースを使いやすく引っ張り出したNucleoボードというものが公式で用意されています。

created by Rinker
STMicroelectronics
¥8,518 (2021/05/17 06:30:22時点 Amazon調べ-詳細)

Arduinoとは

開発元サイト
Wikipedia

Arduinoは特定の会社や製品の名前ではなく、開発ボードや開発環境、関連プロジェクトなどもひっくるめた総称です。
2005年にイタリアで「安価なデジタル制御用のボード」を作るべく発足した「Arduinoプロジェクト」が発祥です。

現在では開発環境の「Arduino IDE」の管理をArduino Foundationが、Arduino関連品の販売の一元管理をArduino Holdingが行うという体制になっています。

本家が手掛けるハードウェアは「Entry Level」「Enhanced Features」「Internet of Things(IoT)」「Education」に分類されています。
以前は「Wearing」というものもありましたが、すべて「Retired(生産終了)」となりました。

ArduinoはArduino言語(C/C++ベースの独自拡張)という独自のプログラミング言語を持っており、Arduino上のプログラムはSketchと呼ばれています。また、拡張ボードはシールドと呼ばれています。

OSはなくてチップが直接プログラムを動かします。
FreeRTOSなどを動かすこともできますが、プログラム(スケッチ)内でincludeするライブラリ的な扱いになります。

Arduinoを試す場合は、入門的な位置づけとなっている「Arduino Uno」から始めるのが無難です。

まとめ

ざっくりとマイコン勢力を分けると、古参で情報も多いのがArduino、単体でどうこうというより組み込みに使われる前提で扱われるのがSTM32、新興だけど勢いがあるのがESP32となります。

がじぇっとりっぷは下地がないというか、マイコンの世界には足を踏み入れていなかったので、性能が高いくせに安いESP32が良く見えるのですが、組み込みの現場から見たらまた別の意見が出るでしょう。

今回はざっくりとした紹介でしたが、今後はSBCと同じような感じで記事にしていきたいと思います。

関連リンク

created by Rinker
技術評論社
¥3,278 (2021/05/17 06:30:23時点 Amazon調べ-詳細)
created by Rinker
シーアンドアール研究所
¥3,432 (2021/05/17 06:30:24時点 Amazon調べ-詳細)