マツドサイエンティスト・研究日誌 保存版
夏休み工作シリーズ 超低コスト 非接触型電圧プローブ

初出:2005年08月06日 元々のブログ・コンテンツへのリンク
カテゴリーのインデックス: 電子工作

僅か 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.ipk
 ipk になっているので、簡単にインストールできる。
 SL-C700 と SL-C760 で、動作確認。

【受信/表示プログラム・ソースコード】
picprobe.tgz
 PC LINUX と Zaurus の共通ソースコード。
 コンパイル方法などは、含まれる README を参照のこと。
 IBM ThinkPad i-Series 1124-53J (240X) + Debian Sarge (リリース版) で、コンパイル/動作確認済み。
inserted by FC2 system