まりま

移転しました→5hyn3.github.io

mbedとArduino

移転のお知らせ

ブログはこちらに移転しました。現在はこちらで更新をしています。

5hyn3.github.io

 

 お手軽二大マイコン弄り環境としてmbedとArduinoがあります。どちらもマイコンを扱う上で必要なレジスタとかそういう小難しい知識を知らなくても、開発者の思うようにポート入出力を行い、計算をし、制御することが出来ます。最近だとロボコンに活用しているチームも幾つかあるのではないかと思います。簡単に出来るということは決して初心者だけにメリットがあるわけではなく、マイコンの扱いに慣れたような人でも開発スピードを早める事ができ、大会までに限られた時間を有効に使えるようになるはずです。僕の所属するチームでも最近そういった理由で、僕が主体となって開発スピードを上げるためにPICからmbedへと開発環境を移行しました。

マイコンを容易に扱うことのできるこの2つのシステム、何が違い、どちらが優れて、使うべきはどちらなのか。結論から言ってしまうと、僕はmbedが優れていると判断し、だから僕のチームでもmbedを採用することにしました。以下にその理由となる根拠を示します。

1.コスパが良い

 物を作るためには当然ですがお金がかかります。なので、コスパの良い製品を選び、お金を有効に使う事は良い物を作る上で必要なことです。以下の表はmbedとArduinoマイコンの価格と性能をまとめたものです。mbedからはNucleoF401REとLPC1114FN28、ArduinoからはArduino M0とArduino Pro miniを用います。これらを選んだ理由はそれぞれで探した中でコスパが良いと個人的に感じたものだからです。

製品名 価格[円] bit 周波数[MHz] RAM[KB] Flash[KB]
NucleoF401RE 1,900 32 84 96 512
LPC1114FN28 216 32 50 4 32
Arduino M0 3,240 32 48 32 256
Arduino Pro mini 355 8 16 2 32

 価格はページ作成当時の物です。現在の価格やさらに詳細な性能は表下の各製品のamazonへのリンクで確認してください。この表にあるスペックが全てではありません。ピン性能やボードに備わった電源性能なども考慮した上で考える必要がありますが、とりあえずCPUの処理速度に関係するスペックについて纏めた表です。こうして並べると、mbedのコスパの良さが際立つと思います。特にたった216円のLPC1114FN28のメモリ周りを除けば3000円以上のコストがかかるArduino M0に匹敵する性能を持っていることは凄まじいと感じます。但し、前者はマイコン単体、後者はマイコンボードであり、電源やUSB接続等のインターフェースは後者のほうが充実していることにも注意が必要です。なお、NucleoF401REもマイコンボードであり、電源として幅広い電圧(3.3V~12V)に対応し、ピンは5Vトレラント、ピンの数もこの表の中のもので最多と扱いやすさとコスパを両立しているのでこの中ではもっともおすすめの製品です。特に、この中でFPUを積んでいるのはNucleoF401REのみなので、浮動小数点型が絡むような高度な演算、制御を行う場合は実質これしか選択肢がありません。

2.プログラミングの方法が明快である

 mbedはC++98(もしかしたら03かな?)を使いプログラミングを行えます。そのため、PC向けソフトの作成で得た知識や経験などをそのまま活かす事ができます。しかし、ArduinoC++を"元にした"Arduino言語を使います。これはC++とは似て非なるものなので、慣れるまでは結構使いにくかったりします。全くプログラミングなんてしたことがない!という人向けには確かに使いやすく作ってあるのかなぁと思うところもあります。実際C++未経験者にC++でプログラムを書けというのは結構厳しいところもありますし。しかし、独自の言語というところからくる言語仕様がなんだかよくわからないというのは既にある程度プログラミングをこなしている自分にとってはちょっと受け入れられませんでした。

3.IDEが便利

 mbedはIDEが非常に便利です。クラウドIDEなので開発環境をわざわざ新しいPCにインストールする必要もない上、作ったプログラムやライブラリをそのまま公開、チームで共有することが可能です。但し、時々メンテナンスが行われ、使えなくなる時があるなど、クラウドならではのデメリットも存在します。ArduinoIDEもインストール自体は簡単ですが、やはりコードの共有をしようとすると一旦githubに上げるとか別のサービスを介さなければならないのは多少不便です。

4.コミュニティが活発

 mbedはコミュニティが活発で、大量のライブラリがユーザーの手で開発・公開されており、そのライブラリはmbedのコミュニティサイトの中で容易に探し出して自作のプログラムの中に組み込む事が可能です。Arduinoでもライブラリはある程度多く出回っていますが、mbedのようにどこか一箇所にライブラリが集まっていてそこから検索することですぐさまライブラリを自作のプログラムにインポートできるような仕組みは無く、多少手順が増えるので面倒だと感じました。

5.種類が豊富

 mbedはArduinoよりも種類がたくさんあります。その為、用途に合わせて超高速なCPUを積んだもの、価格を抑えたもの、シリアル通信等通信機能をたくさん載せたもの、DSPの使えるもの、DACが出来るもの、など様々な種類の中から最適な物を選択することが出来ます。対してArduinoは基本的にはそんなに種類は多くなく、mbed程の選択の自由はありません。

 

ざっとこんな感じですね。mbedは最初からある程度マイコンやプログラミングに対して知識があるような人には使いやすく、Arduinoはこれが初めてのマイコンでプログラミングとかあんまりしたことないって人には触れやすいものだと思います。なのでロボコンに参加するような元々ある程度の技術力があるようなところの場合、mbedを使うとしっくりくるだろうし、デザイナーのような普段余りプログラミングに縁が無いような方はmbedは少し敷居が高いのでArduinoから触れてみると良いかなぁと思います。