Arduino事始め

Posted by ゆのじ on 3月 11th, 2009

IMG_0041

友人のひがさんとマイコントークをしていたら、Arduinoを持っているけれど使ってないから貸してあげようか、とのありがたいお言葉。是非是非お願いしますということで受け取ったのが先日のこと。お借りしたのはArduino Diecimila、つまりちょっと古い型のArduinoになる。

Arduinoとは、ATMEGAになってから搭載されたブートローダ+自己書き換え機能をフルに使って、シリアル経由でプログラムをダウンロードする仕組みを持ったマイコンボードで、シリアル部分にFTDIのUSB-Serialブリッジを使うことで給電を行いつつ扱いやすいケーブルでPCに繋ぐことを可能にしている。マイコンに直接ファームウェアを書くのが当たり前だったATMEGA以前のAVR時代からするとかなり常識が違うので最初とまどってしまったが、自己書き換えが出来るならそりゃー便利に使えるよなと納得。

Arduinoの偉いのは、余計なことを一切考えなくてもいい(つまり初心者にやさしい)統合開発環境を用意しているところ。表面はJavaの類で実装してあって、中身はgcc-avrでうまく自動化されている。ユーザがやることは、動かすコードを書いて「Upload to I/O Board」ボタンをクリックするだけ。コードをコンパイルするとかリンクするとか、繋がってる手段によってライタを用意するとか、そういうことを考える必要は一切無い。

そして、かなり潤沢なライブラリのおかげで、とにかく一から書くことに比べると圧倒的にコード行数が少なくて済むのが良いところ。もっともブートローダに加えて便利な(=冗長な)ライブラリで実装されているわけで、出来ることは自然少なくなるが、プロトタイプを可能な限りすぐ作りたいという目的であればかなり良いソリューションだろうと思う。

あえて駄目出しするならば、直接デバッグできない、ということがあるだろう。シリアルは書き込みに使う線をそのままデバグに使える(統合開発環境から1クリックでモニタできる)から、いわゆるprintfデバッグ的なことをシリアル経由で行えばいいが、特定箇所にブレークポイントを仕掛けてデバッグ、といったことは出来ない。ある程度以上大きい(まじめにアセンブラメインで書いてFlashがかなり埋まるとかいう)レベルのプロジェクトに適用することはオススメできない。

とはいえ、ちょっと朝飯前的なプロジェクトにはもの凄い便利であることがよくわかった。通常、1つ1つに書き込み器が付いている必要はあまりないので、USB-Serialブリッジ部分と本体部分を分離したものを作ってやると半プロダクトにも便利に使えそうに思う。色々つかってみたらまたレポートしたい。

オシロスコープ導入

Posted by ゆのじ on 3月 10th, 2009

dl7100

だんだんと物を作る方にシフトしている今日この頃、仕事でオシロスコープがないと困るということになってきた。そこで色々リサーチしたのだが、やはり新品は高い。デジタルフォスファには惹かれる物があるが、そこまでないと仕事にならないわけでもなし、予算は当然限られている。そこで中古を調べてみるも、きちんとした機関での校正を行い、校正有効期限内のものはそれはそれで安いとは言えない(といっても新品定価から比べたらかなり安いのだが)。しかし、うちの用途の場合、波形がそれなりに見ることが出来ることと、ヒストリ機能が強いことが重要なだけであって、厳密な校正が行われている必要はない。 そこそこ正しければ良いのだ。
そこで、校正の有効期限が切れていたりするかわりにかなり安価に品物が出ているヤフーオークションで入手することにした。

探した後、購入したのは横河電機のDL7100(701420)という、4ch、1GS/s、4MW/ch(インターリーブ時8MW/ch)のかなり大きいメモリを積んだモデル。かなりギリギリまでテクトロニクスの製品(TDS2024あたり)とどっちにするかかなり悩んだのだが、メモリが長い方が色々良かろうということでこちらを選択した。
本体のサイズが段違い(奥行きがDL7100のほうが3~4倍はある)に大きい点と冷却ファンがうるさいという問題が後からわかったものの、持ち歩くわけでもなし、冷却ファンがうるさいのは常時使うわけじゃないからPC本体ほど気にしなくていいということであきらめればいい。それ以外は予想通り良い機械でいい買い物が出来た。

と、実は購入したのは半月ほど前の話。やはりオシロが1台あると全然違う。以前アナログオシロを所有していた(こちらは知人に譲った)のだが、ロジック回路をメインとしている最近の目的にはこちらのほうがいい。バスに流れている信号そのものを値として見ることも出来るのはアナログオシロの経験からすると新鮮だ。

さて、道具は揃った、ネタはどこかいな、と。

MSP430試す

Posted by ゆのじ on 2月 17th, 2009

R0012122

消費電力が低いことが大事な要件となっているものを作るかもしれない、ということでTIのMSP430を使ってみることにした。まずはeZ430-F2013 Development Toolを購入。開発環境は標準のIARか、TI謹製のCCE、AVRでおなじみのICC、QuadravoxのAQ430、後はGNUか、という程度の選択肢があるが、情報収集した限りではコードサイズ4kbの制限を超えなければIARが最強、ということらしい。コードサイズ4kbといってもC由来でないアセンブラ由来の部分は除くと言うことらしい(使い方: Mixing C and Assembler with the MSP430)ので、いくらでも使いでがありそう。全部Cで書きたいという方は30万だか40万だか(もっと?)のライセンスフィーを払うか、他の環境(10万円しない)を買うかするとよさげ。

それと買ってからよく読んで気づいたのが、RTCを持ってる品種があるというのも大きい。外に精度の高い32KiHzの水晶(EPSONトヨコムがこんなのを推奨している模様)をぶら下げて適宜内部容量負荷を調整してやれば、最低消費電力モード(LPM4)で1uAしか食わないで時刻を保持できる。単体RTCは安くないモジュールなので、これだけだってうれしい。

これで、低消費電力ならMSP430、普段使いにAVR、アナログほしけりゃPSoC、高速ディジタルはFPGAとだいぶ使えるマイコンも増えてきた。今後は電源関係(特にバッテリー駆動系)、通信系(Etherはずいぶん簡単になってきたので無線系と2線/3線通信系)を押さえていきたいところ。