高専ロボコンでよく見るマイコン一覧
私が回路を始めたときにどのマイコンを使うか迷ったのを思い出したので書き残します。
誰かの参考になったらうれしいです。
※この記事は宗教戦争の火種を含んでいます。こういう考えの人もいるんだな程度に考えてください。(異論は認めます)
Arduino(ATmega)
Arduinoはイタリア発のマイコンボードで、3,000円台など手頃な価格で購入できます。電子工作を始める人はこのArduinoから始める人が多いと思います。
ただ、Arduino(ATmega)をロボコンで使うのはおススメしません。リソースなどの制約が多すぎるのが主な理由です。
メリットとして非常に資料が多いという点があります。初めてマイコンを使う人や新入生教育には最適だと思います。
ロボコンでこれをロボットに積んでる高専はあんまり見ません。後述するArduino互換のESP32を使用している高専が多いです。
ロボットに載せる機会が少ないのとESP32とまとめて紹介するのでメリットデメリットは省略します。
ESP32
ESP32はArduino互換のマイコンであり、それに追加してWi-FiやBluetoothといった無線機能を積んだマイコンです。無線だけでなくロボコンで非常によく使うCAN通信用のコントローラを内蔵しています。
(ATmegaのArduinoをロボコンで見かけないのはこいつが優秀過ぎるからです。)
メリット
- 安い
- とにかく安いです。チップ単体で約400~600円くらいです。
- Arduino互換で簡単にプログラムが書ける
- ネット上に膨大な量の資料が転がっているので簡単にプログラムが書けます。
- 無線が使える
- マイコン単体で無線が使えるという非常に多きなメリットがあります。コントローラから受け取った操縦データをそのまま処理してMD(モータードライバ)などの駆動系統に直接伝達できます。
- GPIOマトリクス機能が便利
- ESPにはGPIOマトリクスという機能があります。これはほとんどの機能を異なったピンで使える機能です。回路図上で接続するピンを間違えても7割くらいはどうにかなります。ただこれは後述するデメリットにも繋がると個人的には思っています。
- ライブラリが豊富
- GitHub上にライブラリが多く公開されてます。ロボコンだと必須のLEDテープ制御用のライブラリなどがあります。ライブラリを使えば開発にかかる時間をかなり短縮できます。
デメリット
- 壊れやすい
- ESP32最大の問題点だと勝手に思ってます。今度公開する回路の記事でも書きますがとにかく壊れます。体感だと基板実装してから半年経つと40%くらいは死んでます。保管する環境が悪いのかもしれませんがとにかく壊れます。
- 回路設計がしにくい
- サイズがデカいのとピン配置がカスなので回路設計が非常にやりづらいです。(具体的にはWROOM-32Eだと下側のピンがほとんど使えません。)
- マイコンの根本的な理解ができない
- GPIOマトリクスなど使いやすい機能があること+Arduino互換ということで頭を使わずにマイコンを扱えます。しかし便利な反面タイマやクロックなどを考えることが少なく、マイコンというよりおもちゃに近いです。自動制御など高度な制御が必要になった時にマイコンの性能と制御の技術の両方が足りなくなると思います。
ちょっとしたお遊びや回路設計の練習くらいで使うのがベストだと思います。
私はメインマイコンではなく通信用のサブモジュールとして使っています。(無線通信のライブラリを自作するのが面倒なだけ)
- GPIOマトリクスなど使いやすい機能があること+Arduino互換ということで頭を使わずにマイコンを扱えます。しかし便利な反面タイマやクロックなどを考えることが少なく、マイコンというよりおもちゃに近いです。自動制御など高度な制御が必要になった時にマイコンの性能と制御の技術の両方が足りなくなると思います。
- 他人の作ったライブラリに依存する必要がある
- ESPを使う = 他人の作ったライブラリに依存する必要がある というのが私の考えです。
CAN通信用のライブラリやPS4コントローラなどのライブラリがOSSで提供されていますがバグがあったりします。数年前から更新が止まっているものが多いのでバグを見つけた場合は回避できるような制御にするか自分で修正して使う必要があります。
もちろんESPの公式が提供してる低レイヤ用の構造体を使って自作することもできますが、開発コストが爆増してESPを使う理由自体が薄れます。
- ESPを使う = 他人の作ったライブラリに依存する必要がある というのが私の考えです。
総評としては高機能で扱いやすいマイコンである反面、故障率の高さや手軽すぎる故の弱点が目立つマイコンです。
個人的に故障率が高すぎて嫌いになりました。無線が必要な回路以外で使うのはやめておいた方がいいと思います。
STM32
STM32はSTMicroelectronicsが提供する32ビットARM Cortex-Mプロセッサを搭載したマイコンシリーズです。
高専ロボコンでは体感ですが一番よく見るマイコンです。
機能とラインナップが多いのでこれを使っておけばたいていの要求は満たせます。
最近Mbedがサ終するというニュースがありました。これから先は基本的にMbedではなく自前の環境で開発する必要があるという点には注意してください。
メリット
- 多機能さ
- とにかく多機能です。あのサイズになんでそんなに機能乗ってるのかがわからない程高機能です。
- ラインナップが多い
- 低消費電力からハイパフォーマンスまで幅広く展開しています。選択肢が多いので最初のうちは選定が少し大変かもしれません。
- 各型番にいろいろなパッケージの設定がある
- これは個人的にかなり大きなメリットなのですが、stm32は各型番に対して足が出ているパッケージやBGAパッケージ、QFNパッケージ(足なしパッケージ)がそれぞれ用意されています。回路の要件に合わせて同じ型番で違うパッケージを選べるのが個人的には好きです。
- 周辺ソフトが充実している
- 統合開発環境のCubeIDEや書き込み用ソフトのCubeprogramerなど周辺ソフトが充実しています。特にCubeprogramerが優秀でデバッグはしやすいと思います。
- 開発キットが充実している
- STMにはNucleoという開発ボードがあります。各シリーズに複数個のバリエーションがあり価格も安価です。回路を作っている間も制御担当がプログラムを書いて実機でデバッグすることができます。
デメリット
- 高い
- ここで他に紹介しているマイコンと比較すると全体的に少し高い印象です。それでも値段相応のマイコンです。
- 0から始めるハードルがArduinoと比べると高い
- Arduinoと比較するのが間違いな気がしますが、初心者が始めて手を出すのは少しハードルが高いと感じます。ですが、インターネット上に資料は割と転がっているので意欲があれば余裕です。(英語ができればイージーモード)
無線対応のWBシリーズが最近出てきましたが微妙に沼そうなのでまだ手を出していません。今後に期待したいです。
STM32は本当におススメです。以下にロボコンで使いやすいSTM32を載せておきます。
- STM32G474RCT6
- メインストリームに位置するG4シリーズの1つです。動作クロックが最高で170MHzと高速で多数の機能を有しています。メインマイコンとしての採用がおすすめです。
- Digikey
- STM32F303K8T6
PICマイコン
Microchip社が開発しているマイクロコントローラです。
シンプルな命令セットで、他社のマイコンと比べると独特です(個人的感想)。
私の1個上の先輩が使っていた記憶があります。最近はSTMが台頭してきたのであまり見なくなりました。
PICをメインで使用したことはないのでデメリットとメリットの紹介を堂々とするのは気が引けますが一応書くだけ書いておきます。プログラムの難易度に関しては触れません。
メリット
- 8bit,16bit,32bitのシリーズがある
- PICもSTMと同じように種類が多いです。演算能力や機能によって最適なPICを選ぶことができます。
- STMと比べると安い
- ピンキリではありますが上位モデルでもSTMと比較すると価格は安い傾向にあると思います。ただ、まとまった数を購入するとSTMのほうが安くなることもあります。
- DIPのパッケージがある
- PICはDIPのパッケージがあります。はんだ付けの難易度はSMDに比べると格段に下がります。また、ソケットに挿すようにしておけばマイコンが故障しても簡単に交換できる点がメリットです。
- Microchipがサンプルをくれる
- Microchipは学生に対しても無償でサンプルをくれる珍しい企業です。1か月に2個くらい貰えます。金欠の部活や高専生にやさしいです。
デメリット
- 公式のキットが高すぎる
- PIC最大のデメリットです。公式が出している書き込み用のPickitやICD(In-Circuit Debugger)がとにかく高いです。マイコン本体が安くてもデバッガや書き込み機が高いと結局意味ないです。
- VScodeで開発できない(諸説あり)
- PICは基本的にMPLABという統合開発環境を用いて開発を行う必要があります。VSCodeを普段使いしている人が多いことを考えると異なるエディタを使う選択肢しかないのはデメリットになると思います。最近VSCode向けの拡張機能がリリースされましたが参考資料が少なく手が出しにくいのが現状です。
PICユーザーの皆様には申し訳ないのですが、はっきり言って1からマイコンを学び始めるのであればPICを選択する理由がないというのが私の考えです。STMのほうが汎用性が高いです。
その他
上で紹介した以外にもRaspberry Pi財団が提供しているRP2040や、ルネサスの提供しているRXマイコンがあります。
これらは私自身が使ったことがないので詳細を書けません。インターネット上には多数記事があるので探してみてください。
RXマイコンだけは1度も使っている高専を見た記憶がないです。もし使っている高専があれば教えてほしいです。(使い勝手を知りたい)
結論
マイコンはそれぞれ特色があります。回路の要件にあったものを選ぶといいと思います。
初心者の方で迷っている方はESP32あたりから始めるといいと思います。
無線機能を必要としない場合はSTM32を使うことをおススメします。
参考になれば幸いです。