使用するマイコンをどのように選択するかというのを一例として書いてみます。
ArduinoUnoやArduinoNanoに使われているATmega328やESP32、AttinyやSTM32などのマイコンがある中で使用するマイコンをどのように選定するでしょうか?
主に以下が選定基準としてあげられるのではないでしょうか?
選定基準例
- 開発環境
- トータルサイズ
・SoCのサイズ
・クリスタルの有無
・外付けFlash - USBの有無
- 電圧と電流
- GPIOの数
- 性能
- 数量及び価格
- マイコン単体で完結すか?
- 開発ボードの有無
これらをRP2040,ESP32,Attinyu1616を基に選定してみましょう。
数量
使用するデバイスがマスプロか試作かによっても大きく異なります。
ただ、試作と言えども大手の試作は500個の場合もありますし、小さい会社の量産は5個でも量産だったりしますが
数千、数万台以上を生産するか、数個だけかによっても選定基準が異なります。
今回は、数個から数十個までという前提で選定します。
この場合、秋月電子やMouser,DigiKeyでの価格を基に検討します。
開発環境
プロであればIARやKailなどの開発環境を使うほうが良いようですが、個人で年間数十万円の更新費用を払うことは難しいですし
豊富なライブラリがあるArduinoを使うのが簡単だといえます。
今回は、Arduinoが使えるSoCとします。
USBやGPIOの数
USBやGPIOの数はSoCのサイズにも直結します。
RP2040はGPIOの数は30本あり、USBも搭載しています。
GPIOについては、外付けのICで増やすことが可能ではありますが、やはりSoC内で完結することが望ましいといえます。
逆に、USBが要らず、GPIOの数も少なくていい場合、Attiny1616が良いでしょう。
マイコンの性能とROM/RAM・フラッシュ容量
マイコン1個に対してどの程度の仕事をさせたいかを考えていくべきです。
複数の仕事をさせたい、画像や映像、音声を扱うといった場合、ROM,RAMなどの容量が大きいものや、外付けのフラッシュメモリを選択することになります。
RP2040は2~16MBの外付けのフラッシュメモリを使用可能な反面、フラッシュメモリがないと使用できないというデメリットがあります。
トータルサイズ
マイコン単体で動作可能なものから、外付けのフラッシュが必要なものまで存在します。
今回のRP2040は外付けのフラッシュメモリとクリスタルが必要です。
ESP32やRP2040は1ドルのマイコンといえども、フラッシュメモリとクリスタルで1ドル以上の費用が掛かる上に
トータルサイズはどうしても大きくなってしまいます。
逆にAttiny1616は外付け部品が不要です。
電圧と電流
RP2040が発表された際にESP32の方が高性能で、良さがわからない
という方が居ました。
RP2040はESP32と同じくSoCとしての単価は1ドル程度です。
技適を考えない場合、両者は無線機能の有無と言えます。
しかし、ESP32は消費電流が大きいです。
使用するデバイスに対してどの程度の消費電流まで許容できるか
動作するデバイスが何Vで駆動させるかを考える必要があります。
開発ボード
RP2040やESP32は開発ボードが安価で販売されています。
設計においてこの開発ボードが存在するかというのが大きな問題となることがあります。
RP2040のようにエラッタで使えないピンが無いか確認しないで設計するとトラブルの元となります。
以上から何が適切かを考えてSoCを選定してみましょう。
RP2040,ESP32,Attiny1616の3種類のメリット、デメリットは以下だと私は考えています。
RP2040のメリット
- 電流
- 価格
- 開発環境
- GPIOの数
- USB対応
RP2040のデメリット
- トータルサイズ
ESP32のメリット
- 開発環境
- 価格
- 性能(無線)
ESP32のデメリット
- トータルサイズ
- 電流
Attiny1616のメリット
- 開発環境
- 価格
- トータルサイズ
- 電圧(3~5V)
Attiny1616のデメリット
- 性能
- GPIOの数
以上から私は汎用としては、価格も安く、GPIOの数も多く、入手性の良いRP2040を私はお勧めします。
もちろん、無線が必要な場合は、ESP32が良いと思います。
RP2040で必要な構成例
用途に応じて
今回3種類のマイコンからRP2040の良さを説明しましたがこれは私の主観であり、用途によっては全く適さない場合もあるため
一つの情報に縛られず多角的に選定してみる事をお勧めします。