mbed と Arduino の違い

mbed と Arduino の違い

開発環境

mbed

ブラウザ上で動くオンライン開発環境。インストール不要。

それゆえ、インターネットに接続していないと使えない。
普通のコンパイラをインストールして、ソースコードをエクスポートすれば、オフライン環境でも使える。。。

Subversionによる世代管理機能やコラボレーション機能など充実してきている。

コンパイラはARM社のRVDS。

Arduino

Javaで動く開発環境。ダウンロードしてインストールする。

もちろんインターネットに接続していなくても使える。

コンパイラは GCC。

プログラム

例えば、LEDを点滅させるプログラムを比べると以下のようになる。

mbed

mbedは C++ のClassをうまく使い、ハードウェアのドライバが高度に抽象化されており、パラダイムシフトを感じられる。

mbed

#include "mbed.h"

DigitalOut myled(p5);  // ピン初期化、最初にピン番号を指定する。

int main () {          // 普通のC言語と同じmain()でユーザープログラムは始まる。
    for (;;) {
        myled = 1;     // High出力、あたかも変数に代入するかのように出力できる。
        wait_ms(500);
        myled = 0;     // Low出力
        wait_ms(500);
    }
}

代入演算子をオーバーロードするとは素晴らしいアイディア!

一般的なC言語、C++の決まりごとに従ってプログラムを進めればよい。制約もそのまま。

C言語、C++を知らないと少々しんどい。

Arduino

Arduinoも C++ が使えるが、ハードウェアのドライバは従来の関数の考え方にある。

Arduino

#define myled 5                 // ピン番号の別名定義(これは重要ではない)

void setup () {
    pinMode(myled, OUTPUT);     // ピン初期化
}

void loop () {
    digitalWrite(myled, HIGH);  // High出力、ピン番号を指定して出力する。
    delay(500);
    digitalWrite(myled, LOW);   // Low出力
    delay(500);
}

関数の後方参照などは、開発環境が自動的に追加のコードを生成して解決してくれる。
開発環境上で複数のファイルに分けたプログラムを、コンパイル時に一つのファイルに結合して使っている。

なお、setup(), loop()は Arduinoのコアプログラムから次のように呼び出されている。

int main() {
    :
    setup();
    for (;;)
        loop();
}

ライブラリ

mbed

他人の作ったライブラリを、ブラウザ上で選んで簡単にインポートできる。

多くが MITライセンス や Apache2ライセンス で公開されており、再利用しやすい。

Arduino

入手したライブラリのファイル一式を、Arduinoのフォルダ中へ展開してする。

多くはGPL。

プログラム書込み

mbed

USBメモリ(ストレージ)として認識するドライブへ、コンパイラから出力される(ブラウザでダウンロードできる)バイナリファイルを保存すれば書き込み完了。

そういう動作をするためのチップ(中身はARMマイコン)がmbed基板の裏側に搭載されている。

Arduino

Arduino IDEにて、USBシリアルを経由して書込み。

初期型はUSBシリアル変換チップの FT232R 、最近はマイコン内蔵のUSB経由。

コミュニティ

mbed

mbed.org のサイト自体がマニュアルであり、ユーザーの情報発信の場である。

Wikiの書式で自分のページを作ったり、開発環境からプログラムやライブラリの公開が簡単にできる。
他のユーザーが公開しているライブラリを、自分の開発環境へインポートして簡単に追試できる。

mbed.org にほとんどの情報が集まっているので、サイト内検索をすれば多くのことが解決する。

Arduino

皆、めいめいに自身のホームページやブログなどで情報発信している。

情報があちこちに散らばっている。 さまざまな情報がたくさんある。

価格

mbed

LPC1768 が約6000円弱、LPC11U24 が4000円強。
Arduinoと比べると高価だが、この機能を詰め込んだマイコンボードとしては割安といえる。

開発環境を使うためのライセンス料という考え方もあるかもしれない。

Platformsが増えたので安価なボードも選択肢が増えた。

Arduino

2000円台。
安い。

拡張性

mbed

LPC1768(青)とLPC11U24(黄)はベースボードと呼ばれる(?)検証基板がある。
基本的には、ブレッドボードへ刺して使うようなデザインになっている。

Platformsが増え、シールドが流用できる。
電圧が3.3Vのため、5V用のシールドを使う場合は注意が必要。 (mbedのCPUが5Vトレラントのものであれば問題ない)

Arduino

シールドと呼ばれるさまざまな機能ボードが販売されている。

シールドは、Arduino型の特徴的なピン配置のソケットへ差し込めるようになっている。

オープンソース

mbed

ハードウェア・ソフトウェアが公開されている。

試作品をメーカー製のボードで作り、設計情報を元に量産用のボードを作るスタイルが想定されている。

CPUも Digikey や Mouser などで1つから購入することができる。

Arduino

ハードウェア・ソフトウェアが公開されている。

AVRマイコンはパーツ店で広く流通しており購入しやすい。


戻る (Back)


Please log in to post comments.