« July 2005 | Main | September 2005 »

August 30, 2005

僕の宇宙船 惑星間宇宙船 ホーマン軌道 (その1)

ss008今回は、軌道制御の基本中の基本、ホーマン軌道だ。

図は、太陽系を北極星の方向から見たものだ。
地球は、太陽から約 1.5 億キロメートルの距離で、ほぼ円形の軌道を左回りに回って居る。
小惑星は、沢山あって、色々な軌道を回って居るのだが、今回は、目的地を太陽から 3.8 億キロメートルの距離の円軌道で回って居る小惑星に絞る。

ホーマン軌道を使って、地球から小惑星に行き、小惑星に滞在した後、再び、ホーマン軌道を使って帰ってくる行程は、次のようになる。

最初、宇宙船は、地球に居る。北極星の方向から見れば、地球と同じ距離・速度で太陽の回りを回って居る。太陽に対する地球及び宇宙船の軌道速度は、毎秒約 29.8 キロメートルである。
ここで、軌道速度方向に宇宙船を毎秒約 5.9 キロメートル加速し、毎秒約 35.7 キロメートルにする。すると、宇宙船はホーマン軌道(図の緑色の線)に移る。

元々の軌道速度の毎秒約 29.8 キロメートルでは、太陽の引力と遠心力が釣り合っていた。ところが、それより速い毎秒約 35.7 キロメートルでは、遠心力が引力より勝るので徐々に太陽から離れながら、太陽の回りを回る。

厳密に言えば、物理学・力学的には、引力と遠心力の釣り合う/釣り合わないの説明は正確ではない。しかし、直観的な理解がし易いので、あえて、この説明を用いた。

約 423 日後に、図のように、ちょうど太陽の反対側で、目的地である小惑星の軌道に接する。

この時、宇宙船の速度は、毎秒約 14.1 キロメートルだ。一方、小惑星の軌道速度は、毎秒約 18.7 キロメートルで、これで、太陽の引力と遠心力が釣り合っている。
このままでは、宇宙船の速度が足りず、再び太陽に近付き始める。そこで、宇宙船を毎秒約 4.6 キロメートル加速し、小惑星の速度と一致させる。
こうして、小惑星に到着した。

小惑星に到着後、しばらく滞在した後、帰路に就くのだが、好きな時に帰れる訳ではない。宇宙船が地球の軌道に達した時、ちょうど良い場所に地球が居ないと、帰ることができない。
到着から 73 日後に帰路に就くと、タイミングが良い。それを逃すと、559 日後だ。帰るタイミングは、486 日毎にある。

タイミングの合った日に、宇宙船は小惑星を離れ、毎秒約 4.6 キロメートルの減速をする。
宇宙船は、再びホーマン軌道(青色の線)を通り、往路と同じく約 423 日後に地球の軌道に接する。タイミングを合わせてあるので、地球と出合うはずだ。
ここで、秒約 5.9 キロメートル減速すると、地球に帰還できる。

前回説明したように、軌道解析のアウトプットは、
・軌道制御に必要な増速量(ΔV:デルタブイ)
・往路/滞在/帰路の期間
だ。

増速量は、最初の毎秒約 5.9 キロメートルの加速、次の毎秒約 4.6 キロメートルの加速、毎秒約 4.6 キロメートルの減速、毎秒約 5.9 キロメートルの減速の合計だ。
ΔV = 5.9 + 4.6 + 4.6 + 5.9 = 21.0
となり、毎秒約 21.0 キロメートルの増速量が必要であることが分かる。

また、往路/滞在/帰路の期間は、往路 423 日、滞在 73 日(最少)、帰路 423 日の合計 919 日、約2年半である。

と、まあ、ここまでが、基本中の基本、ホーマン軌道による小惑星旅行の概要だ。

多くの人が、疑問に思うかもしれない。
「ホーマン軌道が、基本中の基本だと言うが、えらく遠回りじゃないか!? 真っ直ぐ(図中、赤線)行った方が速いのでは??」と。

確かに、ホーマン軌道は、最も太陽から近付く時に地球の軌道と接し、最も太陽から離れた時に小惑星の軌道と接する楕円軌道で、ホーマン軌道と地球の軌道が接した場所から図のように、太陽を挟んで反対側で小惑星の軌道と接する。
そのため、ホーマン軌道を通る宇宙船は、片道だけでも、直線距離で 5.3 億キロメートル、曲線距離で 7.9 億キロメートルと言う非常に長い距離を旅する必要がある。

それに対し、図中赤線で示した「真っ直ぐ軌道」なら、2.3 億キロメートル、3分の1以下の距離だ。これなら、ずっと速く行けるに違いない。
実際、計算してみると、最も増速量の少ない(燃料の少ない)場合でも、片道 229 日で済む。更に増速量を増やせば(燃料を増やせば)、もっともっと短縮することも可能だ。

しかし、「真っ直ぐ軌道」のためには、最低でも毎秒約 126 キロメートルの増速量(往復分)が必要となる。これは、ホーマン軌道を使った場合の6倍だ。
ホーマン軌道の毎秒約 21.0 キロメートルの増速量でも大きいのに、「真っ直ぐ軌道」の毎秒約 126 キロメートルの増速量は、非現実的としか言いようが無い。

ホーマン軌道を「基本中の基本」と言うのは、最短距離とか最短期間とは関係が無く、「必要な増速量が最少」と言うことである。

「ホーマン軌道の増速量が最少」と言うのには、「太陽以外の引力の影響を無視した場合」と言う但し書きが付く。月や火星の引力を考慮したなら、スイングバイを使って、増速量を更に少なくする方法があることを多くの人が知って居るだろう。また、無視された引力源としては、月や火星だけでなく、地球の引力も含まれる。地球の引力を考慮しただけでも、増速量を減らす事は可能だ。だが、こうしたやり方は「基本中の基本」ではなく、「応用編」として扱われるべきだ。後日、改めて説明したいと思う。

と、今回は、基本中の基本:ホーマン軌道の概要を説明した。
だが、これだけでは、「じゃあ、火星に行く時は? 金星は? 木星は?」と、応用ができない。
次回は、電卓などで、増速量や期間を簡単に計算できる方法を説明するつもりだ。

| | Comments (2) | TrackBack (0)

August 16, 2005

夏休みの工作

e017この週末は、本当の意味での「夏休みの工作」だった。小学校5年生の息子の夏休みの工作の手伝いをしたのだ。

まず、土曜日は、必要な部品を買うために、秋葉原へ行った。
主に「ツクモロボット王国」や「千石電商」で、モーターやギアボックス、ちょっとした電子部品を買うのが目的だ。
秋葉原は、夏コミの最中のせいかは知らないが、混んでいた。
最近は、ドラマで「電車男」をやっているせいか、「秋葉原=オタク」と言う図式が息子にもできているようで、ついでに、しょっちゅう秋葉原に出向く自分の父親もオタクだと思っているらしい。
(まあ、ガンダムだ何だと、テレビや雑誌に出てれば、オタクと言われても否定できんが)

で、ヤマギワ(工事中)の前の交差点を渡っているとき、息子が突然、大声で「オタク臭がする」と言い出した。
聞けば、すれ違った人の中に「オタクっぽい人が居た」と言うことだ。
「大声で、そんな事を言うな」と言うと、「既に後方に10メートル以上離れているから、聞こえない」と。
おまえ、ここは秋葉原のど真ん中だぞ。「オタク臭がする」と言われたら、自分の事じゃないかと勘違いしそうな人が山ほど居るだろう。くわばらくわばら。

何のかんの、部品を買って、帰宅。早速、田宮のギアボックスを作る。組立てが難しいなら、手伝ってやろうかと思っていたら、息子一人で作ってしまった。息子が器用になったのか、新型にモデルチェンジしたばかりの田宮のギアボックスが良くなったのか。父親(私)の方は、「今度のギアボックスは余裕があるなあ。これなら反射型フォトインタラプタを付けて回転数を測りやすそうだ」なんて考えて居る。

二日目の日曜日も工作の続き。息子もだいぶ器用になって、ハンダ付けをしたり、胴体になる木材をノコギリで切ったりする。
最後に、飾りにする薄くて黒い木を糸ノコで切らしたら、切れない。さっきまでラワン材やホウ材を、ちゃんと切って居たのにどうしたんだ。私が代わってみたが、本当に堅くて、簡単には切れない。
庭先で木を切って居たので、隣のおじさんもフェンス越しに「そりゃ、黒檀じゃないか?」と。
まさかと思って、木片を水に入れると、沈む沈む。
以前、東急ハンズで、「色が綺麗だから」と言うだけの理由で買ったのだが、まさか黒檀だとは思わなかった。

息子も、それを見て居た娘も「水に沈む木があると聞いてはいたが実際に見たのは初めて」と大はしゃぎ。
だが、糸ノコの刃はボロボロに欠けてしまった。

まあ、どうにかこうにか、息子の夏休みの工作は、できあがった。

| | Comments (2) | TrackBack (0)

August 13, 2005

告知

告知 その1 アニメ夜話に出演
松戸の『ガンダムミュージアム』から、8月19日夜から20日朝にかけて放映予定の『BSアニメ夜話スペシャル「まるごと!機動戦士ガンダム」』に出演する。
出演と言っても、基本的に、ファースト・ガンダムの劇場版3部作を放映するのがメインなので、2部の「哀・戦士」と3部の「めぐりあい宇宙」の間をつなぐ部分なのだが、これがメンバーが、里匠(NHKアナ)さん、岡田斗司夫さん、板野一郎さん、土田晃之さん、江川達也さん(順不同)と全く凄い・と言うか、濃いのだ。
この凄いメンバーのトークの最後の10分か15分だけど、私も加わった。なんか、何を喋ったか良く覚えていないけど、大丈夫かなあ。

告知 その2 ポピュラーサイエンス9月号
8月4日に発売の『ポピュラーサイエンス9月号』
これまた、ガンダム特集で、私も載っている。
八谷さんも載っている。富野さんも載っている。もちろん、私がいちばん小さい。
こんなん(<=ガンダム)ばっかやなあ、最近。良いのかなあ??

| | Comments (0) | TrackBack (2)

August 12, 2005

夏休み工作シリーズ 第2段 Zaurus 用外部キーボード・インターフェース

主要部品代、わずか 300 円で作れるリナザウ用の外部キーボード赤外線インターフェースを紹介する。
キーボードの無い SL-A300 でも、動作確認済みだ!
el0010これが、実際に使って居る写真だ。
(家に転がって居た中で、一番小さいケースを使ったんだけど、大き過ぎた)

私の使って居る Zaurus は、SL-C760 なので、小さいとは言えキーボードが付いて居る。だが、小さすぎて、とてもタッチタイピングできないし、SL-A300 のようにキーボードが付いて居ない機種もある。
公式的には、リナザウ用の外部キーボードは無いようだ。ただし、SL-C1000 や SL-C3x00 以降の新しい Zaurus なら、USB のホストを持って居るので、USB キーボードを接続する方法がある。
しかし、SL-A300 SL-B500 SL-C7xx SL-C860 のようなちょっと旧式の機種には、USB のホスト機能が無いので、USB キーボードは使えない。

このような旧式のリナザウに Palm 用等の外部キーボードを接続する試みは、ネット上で幾つか公開されて居る。

PS/2キーボードはSLザウルスの周辺機器となるか?
Linux ZaurusにPS/2キーボードを繋ぐ
ぱたぱたキーボードを LinuxZaurus に接続する(ハード編)ぱたぱたキーボードを LinuxZaurus に接続する(ソフト編)
IRK(赤外線キーボード)のすすめ

最初のリンクは、PS/2 キーボードを IrDA に変換する IrKB101 を使う話だが、肝心の IrKB101 が生産終了で入手困難だ。
次のリンクは、PS/2 キーボードを、3番目のリンクは Palm 用の外部キーボードを Zaurus のデータ同期用のシリアルインターフェースと接続する話だ。だが、私は、この方法は推薦しない。Zaurus のデータ同期用のシリアルインターフェースのコネクタは、配線が難しいので、余程、ハンダ付に自信がある人以外は、試さない方が良い。下手をすると、Zaurus に永久的な破損を与える可能性がある。
最後のリンクは、Palm 用の IrDA インターフェースの外部キーボードを Zaurus で使う話だ。配線は必要無く、ソフトウエアだけの対応だし、Palm 用の IrDA インターフェースの外部キーボードは入手可能なので、一番実現性が高い。
実は、私も買おうか、どうしようかと、現物を見に行った。価格が高い(税込9,800円)事と、ぱたぱたキーボードと言うには、意外と大きく重いので、買うのを躊躇してしまった。

そうこうして居るうちに、PIC と赤外線 LED だけで、IrDA 通信できることが判った。(詳細は「夏休み工作シリーズ 超低コスト 非接触型電圧プローブ」を参照のこと)
それなら、PIC と赤外線 LED で、PS/2 キーボードから IrDA への変換器が作れるだろうと挑戦したのが、今回の工作だ。PS/2 キーボードなら、色々な形状大きさの物が入手可能だし、わざわざ持ち運ばなくても出先に転がって居る可能性も高い。また、赤外線通信機能を使うので、工作に失敗しても、Zaurus を壊す可能性が少ない。

例によって、例のごとく、私は極端な「シンプル・イズ・ベスト」派なので、徹底的に回路を簡素化した。

部品は以下の通りだ。
・PICF629 (140円@秋月) 1個
・赤外線 LED (30円@秋月) 1個
・miniDIN 6ピン・ソケット (120円@千石) 1個
・470Ω抵抗 (5円@千石) 1個
・33KΩ抵抗 (5円@千石) 1個

el0011このコンバータは、PS/2 キーボードの出力を、そのまま、IrDA の規格(SIR 1.0)の 9600 ボーで送るだけだ。
本来、PS/2 キーボード・インターフェースは、双方向だが、今回は簡略化のためにPS/2 キーボードから Zaurus への一方通行にして居る。このため、キーボードのスキャンコードの変更とか、CAPS LOCK/NUM LOCK ランプの点灯は行えないので、注意してもらいたい。

キーボードの出力コードを IrDA に変換しただけでは、Zaurus で、使うことはできない。
IRKでぱたぱたを使えるようにしよう で、公開して居る irk-zaurus-j_0.11.1f-tp4_arm.ipk のソースコードを改修した。
正直、私の改修した部分は、まだ、十分に熟成したプログラムでは無い。PS/2 キーボードのスキャンコード・テーブルを追加して、なんとか、入力だけはできるようになっただけだ。
それでも、オープンソースとして公開した方が、今後の展開は速いと思うので、公開する。

【作り方】
まず、プログラムを PIC に書き込む。(プログラムは、まとめて此の記事の末に載せた)
PIC への書き込みは、「夏休み工作シリーズ 超低コスト 非接触型電圧プローブ」と同様に、RCDライタの製作と、WinPic日本語版を使った。

el0012配線は、簡単だが、PS/2 用の miniDIN コネクタのピン配置が分りにくいので、図に書いて置いた。
電源は、PS/2 キーボードが、5Vを必要とするので、必然的に5Vになる。私は、#2ソケットを付けて、Zaurus 用の AC 電源から供給できるようにしている。なお、新型乾電池オキシライド(単三型)×3本でも、動作を確認して居る。オキシライドは、電圧が高く約 1.7V なので、3直列で5V用のPS/2 キーボードが動くかと試したのだが、見事に動いた。

なお、回路図中では、GP4 は空いて居るが、実はここに、スキャンコードをシリアルで出力して居る。MAX232 のようなレベルコンバータを通したら、通常の COM ポートでも受信できる。形式は、9600 ボー 8N1 だ。なお、論理反転させて、電圧を 3.3V にすれば、 Zaurus のデータ同期用のシリアルインターフェースと接続する事も可能かもしれない。だが、既に述べたように、Zaurus のコネクタは、配線が難しいので、この方法は推薦しない。

【irk-zaurus-j_0.11.1f-mad0_arm.ipk】
Zaurus 側のプログラムは、ipk になって居るので、普通にインストールする。ただし、インストール中に、リセットがかかるので、注意されたい。

el0013el0014PS/2 キーボードから入力する時は、インプットメソッドの選択(▲マークをタップ)で、irk(デフォルトのままだと、JP106となって居る筈)を選ぶ。

irk のコントロールバー(表示されてなけば、左下のアイコンをタップ)のONを選ぶ。


この状態で、赤外線 LED を IrDA ポートに近付けると、PS/2 キーボードから入力できるはずだ。

また、英数字と日本語の切り替えは、『全/半』キーで行う。(ALT +『全/半』ではないので、注意!)
PS/2 キーボードからの入力をやめる時は、OFFにした後、インプットメソッドの選択で、irk 以外を選ぶ。

「Setting」ボタンで、設定画面が表示される。

el0015PS/2 キーボードが、日本語キーボードなら「JP106」を、英語キーボードなら「US102」を選ぶ。
(私は、英語キーボードを持って居ないので、スキャンコードが正しいか、確認して居ない)

設定が反映されなかったり、調子が悪い時は、一度、インプットメソッドの選択で、irk 以外を選んだ後、もう一度、irk を選ぶと良いようだ。
それでも駄目なら、リセットしてみる。

既知のバグとして、
・「_」(半角下線)が入力できない。
・「・」(全角の中央点)が入力できない。
・シフト+カーソルキーが使えない。
・テンキーが使えない。
 (写真でも分かるが、私のキーボードは小型でテンキーが無い。このため、スキャンコードの確認ができないため)
等がある。

Zaurus に限らず、その他の機器(PDA とか携帯電話)の入力に使えたら教えて下さい。

キーボードの無い Zaurus でも、PS/2 キーボードから入力する方法が分かったから、SL-AXXXX のような縦型 Zaurus シリーズが復活しないかなあ。

ライセンス・プログラム等

本当は、ハードウエアの回路については、著作権を放棄したい(余りにも簡単すぎるから)ところだが、日本の法律上、著作権の放棄はできんらしいので、著作権は野田篤司に帰属するが、誰でも自由に使って良いものと宣言する。

PIC 側のプログラムは、BSD ライセンスとする。

インプット・メソッド irk は、GPL。

なお、既に述べているが、インプット・メソッド irk の内、私の改修した部分は、まだまだ成熟の足りないプログラムだ。使用に関しては、くれぐれも自己責任でお願いしたい。

【PIC側プログラム】
pickeyir.lzh
 ソースファイルとアセブリ済みの HEX ファイル、ソースは、MPLAB でアセンブルできる。
 何を書き込むかについては、含まれる readme を参照のこと。

【Zaurus 用 インプット・メソッド】
irk-zaurus-j_0.11.1f-mad0_arm.ipk
 ipk になっているので、簡単にインストールできる。
 SL-A300 とSL-C700 で、動作確認。

【Zaurus 用 インプット・メソッド プログラム・ソースコード】
source-mad0.tar.gz
 ソースコード。

【追記】
前回の工作も同じなのだが、上記の部品のままだと、赤外線 LED と Zaurus の IrDA ポートを 5cm 位まで近付ける必要がある。
調べてみたら、「IrDA で使う赤外線の波長は、850-900nm 、リモコン用の赤外線の波長は、900-950nm 」だ。
秋月で、30円で売って居る赤外線 LED の波長は、940nm で、リモコン用らしい。
ちなみに、千石で、140円で売って居る TLN231 (波長 870nm)を使うと通信可能距離が、一気に 30cm 位になる。
多少、高くなるが・・(差額、110円だが)

| | Comments (0) | TrackBack (0)

August 10, 2005

僕の宇宙船 惑星間宇宙船の設計

ss007さて、前回の『僕の宇宙船』で、次なる目的地を『水の在る小惑星』に決めた。しかし、最小限のカプセルを最小限のロケットで地球周回軌道に打上る事だけに最適化した「今までの『僕の宇宙船』」では、とても、そんな遠くまで行けない。
そこで、小惑星に行って帰って来るために必要な『惑星間宇宙船』を造らなければならない。まずは、『惑星間宇宙船』の設計を行う必要がある。

宇宙船の設計と言うと、一般的には「まず、エンジンは何にして、使用するコンピュータは何にして・・」と言いつつ、設計図をいきなり T 定規なり、ドラフター(商品名?)なり、CAD で描いていくと思われて居るかもしれない。
だが、実際の設計では、いきなり詳細な構成を決めたり、設計図を描き始めたりはしない。

まず、最初に『その宇宙船が、どう使われるのか』の検討・分析を行う。『宇宙船の使われ方』から、必要となる機能・性能を抽出する。同時に不要な機能・性能を削除することも重要だ。
こうして、『必要な機能・性能』を満足するように『宇宙船の全体システムを構築』する。

今回、設計の対象となる『惑星間宇宙船』の場合、『その宇宙船が、どう使われるのか』は、
・小惑星まで、行く。(往路)
・小惑星で滞在する。(滞在)
・小惑星から帰って来る。(帰路)
・その期間、中で搭乗員が生活する。
で、構成される。

上記の内、最初の三つ『小惑星まで、行き、滞在し、帰って来る』の検討・分析は、『軌道』を決め、解析することだ。最後の『その期間、中で搭乗員が生活』は、往復に必要な期間に左右される。

単純に、目的地が決まったら、往復の軌道が一意に決まる訳ではない。
地上の『旅』と同じで、『東京から大阪に行く』としても、色々な方法がある。新幹線か飛行機を使うのが普通だろう。しかし、旅費を安く上げたいなら、鈍行列車と言う方法もある。人数や荷物が多ければ、車で行くと言う選択肢もあるし、極端な例では、自転車や徒歩と言う方法もある。
一般的に、『旅費が安い』と『旅程が長く』なる傾向にある。
東京から大阪を自転車や徒歩で行けば、『旅費はタダ』みたいなものだが、『旅程』は数週間は必要だ。その間の宿泊費や食事代を考えると、かえって新幹線よりも高くつくだろう。特に学生でも無ければ、数週間を使う事は、何より贅沢になる。

宇宙船での軌道も同じだ。「『高性能なエンジン』や『大量の燃料』を必要とする軌道」を選ぶと「旅程は短く」なり、逆に「エンジンや燃料を節約する軌道」では「旅程が長く」なる。
宇宙の旅と地上の旅との最大の違いは、生命維持に必要な物資の旅行期間中の補給がほぼ不可能と言う点だ。地上の旅なら、食料や水は、その都度、購入すれば良い。旅程の最初から、全ての食料や水を持って行こう等と言う人はまず居ないだろう。ましてや、その間に呼吸するための空気を心配する人などあろう筈も無い。だが、宇宙の旅の場合、食料・水のみならず、空気までも、旅程の最初から最後までの分を持って行かなければならない。
軌道を決める時、燃料を節約したつもりが、旅程が長くなり、持って行く食料や水・空気が増え、これらを運ぶために、結局は余計な燃料を使う事になる可能性もある。

『軌道を決め、解析』作業のアウトプットは、
・軌道制御に必要な増速量(ΔV:デルタブイ)
・往路/滞在/帰路の期間
である。

二つ目の『往路/滞在/帰路の期間』は、ともかく、一つ目の『軌道制御に必要な増速量』は分りにくいかもしれない。
軌道を変えるための加速・減速を「軌道制御」と言うのだが、この加速減速の絶対値の合計を増速量と言う。(正確には「合計」ではなくて「積分」。何故、「絶対値」かと言うと、加速・減速の符号を考慮すると、往復の合計は、「プラスマイナス・ゼロ」になってしまうから)

もっと単純に「必要なエンジンの性能」とか「燃料の量」が、『軌道を決め、解析』作業のアウトプットであった方が良いと思われるかもしれない。
しかし、先程、少し説明したように、「燃料の量」は、持って行く物資によって左右される。また、「必要なエンジンの性能」も「燃料の量」に深く関わっており、単純に言い表すことはできない。
そこで、「エンジンの性能」や「持って行く物資」に左右されない『数値』として、『増速量』を使う。『増速量』は、軌道を選定した時点で、一意に決まる数値で、「エンジンの性能」や「持って行く物資」に左右されない。逆に『増速量』が判ってさえあれば、「持って行く物資」の量から必要な燃料の量が簡単に計算できる。同様に、燃料の量から「持って行ける物資」の量を計算することも可能だ。

次回から、色々な種類の軌道の選定と解析、それに続いて、必要な物資の見積もりとエンジンや燃料を含めた宇宙船システム全体のコンセプト・デザインを、何通りか検討してみたい。

| | Comments (0) | TrackBack (0)

August 06, 2005

夏休み工作シリーズ 超低コスト 非接触型電圧プローブ

000僅か 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 ポートを持つ機器を近付ければ受信できる。テスターで当たるよりも、ずっと楽だ。非接触型なのでノイズの心配も無いし、動き回る相手だとケーブルを引きずらないので、動作の邪魔にならない。その上、低消費電力/小型軽量だ。
ロボット等の電子工作に役に立つと思うので、作り方やプログラムを公開する。自由に使ってくだされ。
データの取得/伝送速度や測定精度は、コスト相応なので、その点は、まあ御容赦のほど!!

回路図は、この通りだ。
001極めて単純な回路だ。
元々、今回使用した 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 ポートを近付けると、下の図のようにデータが表示できる。002赤外線 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 (リリース版) で、コンパイル/動作確認済み。

| | Comments (4) | TrackBack (1)

« July 2005 | Main | September 2005 »