Arduinoとmbedどちらを使う?(メリット編)
はじめに
今回はArduinoとmbedについてロボコン的視点から考えていく。
自分の知識の範囲内で考察するので、偏っているかも...
Arduinoって何?
電子工作でよく使われるマイコンボード、そのため多くの初学者向けのネット記事や本がある印象。AVRマイコンといわれることもある。
ちなみに言語はC++っぽいArduino独自の言語
開発環境はArduinoIDEが一般的
mbedって何?
Arm社が提供するソフトウェア互換性も含めた、開発プラットフォームという定義であるが、本記事ではmbedとはマイコンボード、開発環境の事を示すものとする。
ちなみに言語はC++
開発環境はMbed Studio、Keil Studioの二つがある。(自分が知っているのがこの二つのみ...ほかにもあるかも...)
自分はMbed Studioを多用している
双方のメリット
Arduino
とにかく、書きやすい。
上記にも書いたように、初学者向けのネット記事や本がとても多い。
試しに、「Arduino 入門」などと調べると多くの記事がヒットする。何なら本が大量に出てくる上に入門キットなんてものもある。
コード見てみる
実際にコードを見てみよう!!!
void setup(){
}
void loop(){
}
デフォルトでsetup関数とloop関数が定義されている。
Lチカ
setup関数はコードが始まったときに呼び出され、loop関数がコードのメインループとなる。
今回は基本的なコードであるLチカのコードを見てみる。
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
このコードはArduinoIDEのサンプルコードにある「Blink」で同じコードを見ることができる。今回はコードの部分のみを引用。
サンプルコード?
上記に示したようなLチカはとても初歩的なコードだがArduinoIDEには他にも多くのサンプルコードが用意されており、ArduinoIDEをインストールするだけで簡単に使い始めることができる。
サンプルコードは基本的なものはすべてあるのでArduinoと多少の電気工作道具さえあればいろいろなことができる。
library
Arduinoには多くのlibraryが存在しており、無線モジュールやLCDなどいろいろなものがincludeするだけで簡単に使用できる。
モジュールの動かし方を調べると大体Arduinoでlibraryを使用して動かしているものが多い。
Arduinoのlibraryを使用すればコードの中身を考えなくても簡単に動かせる。
mbed
Arduinoよりも性能がいいマイコン
基本的なArduinoマイコンであるArduino Unoの動作クロック数は16Mhzに対し、
mbedマイコンであるSTM32F303K8の動作クロック数は72Mhzという大幅に早いクロック数となっている。
また、mbed系のマイコンの方がピン数が多い上に通信系が充実している。
正直、簡単な電子工作ならこれほどの性能はオーバースペック...
使用言語がc++
使用言語が完全なc++を使えるのでポインタなどのc++独自の書き方が使用できるため、c++を書くことができる人にとってはとても簡単に書ける。
また、ピンをコード内ではクラスで管理できるので慣れた人は便利
割り込み処理
Arduinoには少ない割り込み処理といわれる処理を様々な処理で書くことができるため処理の高速化や単純化をすることができる
can通信(ロボマスター)
ロボコンをしている人なら聞いたことがあるであろう、ロボマスターの高性能ブラシレスDCモーターはcan通信に対応しており、CanHIGH、CanLOWの通信線二本で通信ができる。
その上、id制御できるので配線がPWM制御よりも明らかに少ない。
おわり
今回は、メリットのみを示してみた。
mbedのメリットが明らか少なく見えるが、ロボコン的にはロボマスターの高性能ブラシレスDCモーターが通信線2本で制御できることがとても大きい。
また、割り込み処理は通信の安定性の向上やメインループとは別のループで処理を回せるので便利
自分的にはArduinoは便利だがロボコンには微妙と感じてしまうのでmbedを使うときが多いが、無線モジュールやLCD、加速度センサー、ジャイロセンサーなどを使うときはArduinoが適していると感じる。
この記事が気に入ったら、次回のデメリット編も見てみてほしい。
Discussion