さて、ためしに筆者の机の周りを漁ったら、とりあえず12種類ほどのマイコンボードが湧いてきた(Photo01)。12種類、というのは今机の周りにArduino Duemilanoveだけで4つ、Arduino Unoが2つ転がってるからで、数としてはそんなわけで16個。他に雑誌の付録という形で入手した色々なマイコンボードがあるから、多分種類でも20種類、個数で言えば30弱程度が転がってる計算になる。もっとも、全部を使ったわけではない(というか、半数以上は使った事がないというか、使って遊ぶ暇がないというか)のだが、それでも使い方そのものは大体判っている。ここに無いもので近々手に入れようと考えているものにはmbedがあるが、これも大きく変わるというものではない。いや別に筆者のマイコン自慢をしたいわけではなく(自慢するには桁が2つほど足りない)、こんな少ないサンプルでもこれだけ色々なものがある、という事を示したかっただけなのだが。

Photo01: 左はPIC18のマイコンが縦に3つ。その右はArduino Duemilanove(上)とArduino Uno(下)。更に右はSTM32 Discovery(上)とArduino Mega(下)。その右は上はSTM8S-Discovery。その右は一番上がColdFire V1を搭載したFlexis JM Badge Board、中間がMC90BJB16を搭載したLED照明の開発キット、一番下はMPS430を搭載したeZ430というUSBメモリ型マイコン。一番右はColdFireを搭載したMini-ITXベースの開発キットである。

で、連載の本命は別のマイコンボードなのだが、とりあえずはArduinoを使って話をして行きたいと思う(Photo02)。Arduino(公式な日本語表記は「アルドゥイーノ」)はイタリアで開発されたマイコンボードで、搭載するのは米AtmelのAVRという8bit MCUである。Arduinoの特徴は完全にオープンソースとして開発されている事で、なので搭載するファームウェアや設計図などが全て公開されており、必要なら自分で部品を集めて同等のマイコンボードを作る事もできるし、Arduinoと互換のマイコンボードを作ることも可能である(というか、実際に存在する(ためしに検索エンジンで「Arduino 互換」をサーチしてみれば一杯ヒットするはずだ)。ただ互換品はともかく、普通に自分でパーツを集めて作る位なら完成品を買ったほうが安い、というのは世の常である。このArduinoも種類がいくつかあり、用途に応じて選べるようになっている(本来ならばここでArduinoのページを示したかったのだが、この原稿を書いている時点ではサーバーエラーでアクセスできないので、代わりにスイッチサイエンスさんの製品ページをリンクしておく)。標準的、というかまぁスタンダードなのは、ちょっと前まではArduino Duemilanove(「デュエミラノーヴェ」と読む。イタリア語で「2009」の意味だそうである)だったが、今年に入って構成を若干変更したArduino Uno(読み方は「ウーノ」)に切り替わっている。とはいえソフトウェアは互換なので、Arduino Duemilanove向けに書いたプログラム(Arduino用語ではこれをスケッチと呼ぶ)はそのままArduino Unoで動作する。

Photo02: 左がArduino Duemilanove、中央がArduino Uno。細かく見ると部品が多少代わっているのが判ると思う。ただ基板上のソケットの配置などは一緒。右のArduio MEGAは、Arduino Duemilanove/Unoではピン数が足りないなんて場合に利用する。

なんでこのArduinoシリーズを取り上げるかというと、こうした経験の無いユーザーには一番敷居が低いと筆者は考えているからだ。ここで言う「こうした経験」には、

  • 言語のプログラミング
  • システムのインストール
  • 電源の供給を含むハードウェア的なインストール
  • ハンダ付け(!)

が含まれる。実のところ、Arduinoのとっつきやすさの理由の一つが、「ギリギリまでハンダ付けをしなくても済む」事だったりする。これは例えば(前回も示した)STM8S-Discoveryと比較すると判りやすい(Photo03)。STM8S-Discoveryは端的に言えば「開発者に手軽に使ってもらう」というもので、そのため基板の3分の1近くをフリーエリアに当て、ここに自由に部品を配置、ハンダ付けできるように配慮されている。こうした製品は実際結構多い。対してArduinoにはフリーエリアは無い(必要ならブレッドボードを使おう、という発想である)代わりに、配線だけでなく直接部品(抵抗とかLEDとかコンデンサとか)をボード上に差し込める様に、ソケットが配されている。出ているピンの数だけ見ればSTM8Sの方が多い(48pin。Arduinoは27pin)のだが、これを使うためにはソケットを用意するなり、ピンに配線を巻きつけてハンダ付けするなり(流石に最近はワイヤラッピングは余り流行らなくなってきた。ワイヤラッピングはこれが判りやすい)しないと使えないから、ここでヒト手間掛かる事になる。

Photo03: どちらもUSB経由で電源供給やプログラムのロード/デバッグなどが可能だが、設計思想が大幅に異なっている。

もっとも開発者からすれば、別にハンダ付けは当たり前の事で、むしろ外部にブレッドボードを用意しなくてもちょっとした回路が構成できるSTM8S-Discoveryの方が収まりが良いからだ。

これがもっと極端なのはSTM32 Discoveryである。この製品の場合、ピンの数はやたらに多いのだが(Photo04)、そのピンは基板の裏側に突き出している(Photo05)。しかも幅がちょっと広めで、通常のブレッドボードにはそのまま載らない(Photo06)。ではブレッドボード2枚に跨らせよう...とすると、今度は別のピンが引っかかるという次第。そんな訳で、ユニバーサル基板あたりを使い、STM32 Discoveryを搭載できるマザーボードを自分で作れ、というのがこの製品の隠れた主張であり、こうした部分が経験の無い人には案外に障害である。

Photo04: 基板表側へのピンの突き出しは5mmほど。頑張ればここにソケットを挿すことも不可能ではない。

Photo05: ベース部まで含めた基板裏側のピンの高さは9mmほど。要するに裏面からピンを配置してハンダ付けで留めた形。

Photo06: 一般的なブレッドボードの場合、5pin - 2pin分のスペース - 5pinで合計12pin分の幅なのだが、STM32 Discoveryの幅は13pin分。もうブレッドボードに直接挿せないように設計したとしか思えない幅である。

Photo07: Photo06とは反対側サイドにもこの通りピンが出ており、これが邪魔でブレッドボードに挿せない。

(続く)