僅か 200 円弱の部品代で、電子工作に役立ちそうな赤外線通信を使った非接触型の電圧プローブを作った。
必要な部品は、次の通り。
・PIC12F675 (150円@秋月) または PICF629 (140円@秋月)の何れか 1個
・赤外線 LED (30円@秋月) 1個
・470Ω抵抗 (5円@千石) 1個
・33KΩ抵抗 (5円@千石) 1個
合計わずか 190 円だ。(PIC12F675 使用時。PICF629 なら合計 180 円だが、AD コンバータが無いので、デジタル入力のみになる)
上記の一覧では、私が良く行く店で購入した価格を参考に載せた。
電子工作に、これを付けて置くと、最大5チャンネルの電圧データ(PIC12F675 使用時:4アナログ+1ビットデジタル。PIC12F629 使用時:5ビットのデジタルのみ)を赤外線 (IrDA) で送信する。Zaurus 等の IrDA ポートを持つ機器を近付ければ受信できる。テスターで当たるよりも、ずっと楽だ。非接触型なのでノイズの心配も無いし、動き回る相手だとケーブルを引きずらないので、動作の邪魔にならない。その上、低消費電力/小型軽量だ。
ロボット等の電子工作に役に立つと思うので、作り方やプログラムを公開する。自由に使ってくだされ。
データの取得/伝送速度や測定精度は、コスト相応なので、その点は、まあ御容赦のほど!!
回路図は、この通りだ。
極めて単純な回路だ。
元々、今回使用した PIC12F675/629 は、発振器まで内蔵したタイプで、特に PIC12F675 は、10 ビットの AD コンバータまで内蔵して居るから、回路が簡素化できた。その上、私は極端な「シンプル・イズ・ベスト」派なので、徹底的に無駄を省いて回路をシンプルにした。
使い方は、至って簡単だ。
まず、プログラムを PIC に書き込む。(プログラムは、まとめて此の記事の末に載せた)
PIC への書き込みは、公式的には、秋月等で売って居るライタを使うと言うべきなんだろうが、意外と高価だ。私は、RCDライタの製作で、公開されて居る回路を、そのまま作って使って居る。これなら主要部品だけなら、600 円くらいで済む。私はゼロプレッシャー・ソケットを奢ったので高くなったが、それでも、二倍程度だ。書き込みソフトは、WinPic日本語版を使った。
電子工作の中の測定したい箇所に PIC を結線し(回路図中の GPx ANx とある箇所)、赤外線 LED 等を配線する。
PIC に供給する電力は僅かなので、電子工作から与えた方が早い。今回使用した PIC の電源電圧の範囲は 2V 〜 5.5V と広いので、大概の場合、何とかなるだろう。電源電圧が合わない場合、単四電池2本でも良い。ボタン電池でも足りるかもしれない。
データの受信に必要なプログラムも公開する。残念ながら、今のところ、Linux (Debian Sarge で動作確認)と Linux Zaurus (SL-C7XX で動作確認) のみで、Windows には対応して居ない。
IrDA の規格と同じような赤外線を出して居るのだから、IrDA さえ持って居れば、Windows でもデータを受信できそうなものだ。
だが、赤外線通信(IrDA)はこう使え!を読んで、初めて知ったのだが、「Windows では、『赤外線ポート』が隠蔽」されていて、自由に使えないようになって居るらしい。流石に、赤外線ポートが使えないと手も足も出ない。取り敢えず今回は、Windows へのサポートを見送った。
正確に言うと、「Windows98では『物理赤外線ポート』が隠蔽」され、「Windows2000以降では、さらに『仮想赤外線ポート』も隠蔽」されたらしい。IrDA が自由に使えないのは、どちらも同じ
Zaurus 用のプログラムは、ipk になって居るので、普通にインストールするだけだ。インストール後、アイコンをタップすると起動できる。赤外線ポートを使って居るアプリが他に動いて居ると、当たり前だが競合して不都合なので注意すること。
Linux 用のプログラムは、ちょっとややこしい。ソースコードは、Zaurus 用と共通になっているので、これをダウンロードし、コンパイルする。コンパイル方法は、README に書いてある。なお、グラフィック表示に QT を使って居るので、 QT の開発環境もインストールしておく必要がある。
Linux の場合、次の問題は、『物理赤外線ポート』を直接アクセスできるように設定することだ。流石に今回のように PIC と赤外線 LED だけの構成では 仮想赤外線ポート(IrCOMM)プロトコルのサポートはきついので、物理赤外線ポートに直接アクセスする必要がある。
私が Debian Sarge で試した限りでは irda-utils をインストールし、IrCOMM が使えるように設定する。再起動後、irattach をストップさせることで、/dev/ttyS1 を『物理赤外線ポート』として、アクセスできるようになる。
この方法だと、Linux の起動の度に irattach をストップさせる必要がある。もっとスマートな方法が無いものかと調査中だが、何かあったら教えて下さい
赤外線 LED に IrDA ポートを近付けると、下の図のようにデータが表示できる。
赤外線 LED が暗いせいか、波長のせいか、はたまた指向性のせいか、赤外線 LED と IrDA ポートを 5 センチ程度まで近付ける必要がある。本来、IrDA は、1メートルくらい離れても通信可能な筈なので、工夫すれば、もっと離れた距離でも受信可能になるかもしれない。アナログ/デジタルの判別は自動だ。
工夫をすれば、アナログ/デジタル入力の組合せを変えたり、PIC 内のメモリに一度高速で蓄えてから送信することで、オシロ/シンクロスコープやロジアナ的な表示をすることも可能だろう。
だが、機能を増やし複雑にするよりも、プリミティブな機能のみにした方が応用しやすいと思い、今回は、そうして居る。
自由に使って構わないので、遊んで下さい。面白い応用ができたら、教えて下されば、有り難い。
その他、私の持って居ない Zaurus (SL-C3000 等)の動作確認や対応例などがあったら、教えて下さい。
誰か、Windows 用のデータ受信/表示プログラムを作ってくれないかなあ。
他にも、赤外線ポート付きの携帯電話でデータ受信/表示をするプログラムがあったら面白いのだけれど。
ライセンス・プログラム等
本当は、ハードウエアの回路については、著作権を放棄したい(余りにも簡単すぎるから)ところだが、日本の法律上、著作権の放棄はできんらしいので、著作権は野田篤司に帰属するが、誰でも自由に使って良いものと宣言する。
PIC 側のプログラムは、BSD ライセンスとする。
Linux と Zaurus 用のプログラムは、フリー版 QT で作ったので、自動的に GPL2 だ。
【PIC側プログラム】
・
picprobe.lzhソースファイルとアセブリ済みの HEX ファイル、ソースは、MPLAB でアセンブルできる。
何を書き込むかについては、含まれる readme を参照のこと。
【Zaurus 用 受信/表示プログラム】
・
picprobe_0.0.1_arm.ipkipk になっているので、簡単にインストールできる。
SL-C700 と SL-C760 で、動作確認。
【受信/表示プログラム・ソースコード】
・
picprobe.tgzPC LINUX と Zaurus の共通ソースコード。
コンパイル方法などは、含まれる README を参照のこと。
IBM ThinkPad i-Series 1124-53J (240X) + Debian Sarge (リリース版) で、コンパイル/動作確認済み。
注意
ブログのコンテンツの内、「告知」など時期よって情報価値が無くなるのは除いてある。また、コンテンツに付いたコメントは書き込み者に著作権があるものと判断し、ここに持ってきていないので、コメントを見るときは、元々のブログコンテンツを参照してもらいたい。
その他、ブログ発表後、コメントなどの内容を反映するなど、内容を変更しているものもあるので、注意してほしい。