FF9データパックげのむ 制作:2006-12-15〜
FF9データパックの中に書き込まれた情報を解析してみます。ゲノム解析が終わればPCでFF9の設定が出来るようになります。データパックがないとダメですが... 解析は地味な作業になるので暇な時にのんびりやります。
ゲノム解析ツールの基板です。左半分がメイン。それ以外はオマケ。EAGLEで作りました。
回路図 <−GIFイメージ(まだ誤配線あるかも)
基板が古くなっているのに気づかずに感光してしまいました。現像が3分も必要でしたが思ったより綺麗に出来ました。緑色をしているのが基板がだいぶ古くなってきた証拠。フラックスもかけすぎで失敗。アルコールでふき取って再度スプレーし直しました。
長穴は3つ穴を開けてそれをカッターでつなぎました。
ハード完成。インターフェースは232C。
容量の大きめのコンデンサー(100uF)を繋いだためでしょうか?ICSPがプログラマー側からの電源供給では書き込めませんでした。電源を入れた状態で書き込みOK。電源を入れた状態だとPICが動作しているはずで、この状態で書き込めるとは思いませんでした。
設計ミス発覚。PIC16F88はI2Cのマスターモードがありません、ということはデータパックが読めません。幸いmikroBASICにはソフトウェアでI2C通信するライブラリーがあるのでそれを使って逃げます。
回路にも抜け有り。これまたI2Cまわり。プルアップ抵抗を忘れてました。
この状態のまま動かしたりプログラム変更できてしまいます。便利!!。開発中だけの便利さですが... EXCELにデータ取り込んでみました、1モデル330バイトのようです。画面をデジカメで撮影するときは少しピンぼけにするとモアレ模様が出なくてきれいに撮れます。
オブジェクト指向とやらのためにVisualBASICも全面的に言語仕様を改めたようです。プロジェクト名を設定しただけでいきなりClassが出来ました。どうして良い物やらしばらく固まってしまいました。Windowsプログラムはどんどん複雑怪奇になってきています。一方PICなどマイコンの世界は旧式な言語仕様のままです。オブジェクト指向というのは、誰か(Microsoft等)が作ってくれた物を再利用することを促進するしくみのことです。まず最初にやらなければならないことはどんな部品があるのか探すことです。先ず物知りにならなければなりません。気が重くなります....
絶滅したと思われていたシリアルポートも最新のVisualBASIC開発環境にあります。とりあえずシリアルポートから読み込んだデータを表形式にしてみました。
リファレンスマニュアルから欲しい部品を探すのは大変。マイクロソフト作のサンプルは何をやりたいのか、いまいちわかりにくい。適当なサンプルをインターネット上で検索するとよけいな物を見つけて寄り道してしまいます。こんなのありました。その名も「一家に1枚ヒトゲノムマップ」
ついでに「一家に1枚元素周期表」。同じく文部科学省作。 ......暇なのか? 周期律表だと思っていましたが周期表と言うらしいです。縦方向に似たものが並んでるっていうのが周期律。その表だから周期律表のほうがいいと思うのですが。この表によるとクリプトンは常温で気体。スーパーマンはガスを吸ってラリってしまうのか?かなり人間に近い設定だったわけだ。
解析は単調な作業です
・データパックをプロポに挿して、何か設定を一カ所変更
・解析プログラムでデータパックの内容を読み込んで変更前と変更後を比較
これをひたすら繰り返します。右は右スティックの左右トリムを右に1コマ動かしたときのもの。10だった値が14になりました。1セル(1升)置きに変更前と変更後の値を表示しています。グレーになっているのは変更前と変更後で値が変わった部分です。「トリムを1コマ動かすと値が4増加する」という結果が得られました。この解析プログラムは僅か70行しかありません。やはり部品の使い方を憶えてしまえば旧式なプログラム言語よりも圧倒的な生産性が期待できます。無料なので旧式な物は捨てて乗り換えることにします。最初は抵抗があっても住めば都です。
表示形式を4種類に切り替えられるようにしました。トリムは中央がゼロになるので符号付きの10進数で表した方が自然になります。
FF9データパックげのむ 部品表 | ||||||
QTY | @ | Price | 購入先 | 備考 | ||
PIC | PIC16F88 | 1 | \230 | \230 | 秋月電子 | |
IC SOCKET | 18ピン | 1 | \50 | \50 | 秋月電子 | |
232CインターフェースIC | ADM3203AN | 1 | \200 | \200 | 秋月電子 | ソケット付き |
発振子 | セラロック20MHz | 1 | \40 | \40 | 秋月電子 | |
LED1、LED2 | φ3mm赤 | 2 | \42 | \84 | 千石電商 | |
LED3 | φ3mm緑 | 1 | \42 | \42 | 千石電商 | |
プリント基板 | サンハヤト40k 75×100mm | 1 | \399 | \399 | 千石電商 | |
DCジャック | 2.1mm−5.5mm | 1 | \30 | \30 | 秋月電子 | |
ゴム足 | 直径10mm | 4 | \11 | \44 | 千石電商 | |
AC−DCアダプター | 5V 1A | 1 | \600 | \600 | 秋月電子 | |
RS−232Cコネクター | 9ピン メス | 1 | \60 | \60 | 秋月電子 | |
抵抗 R1−R3 | 560Ω 1/6W | 3 | \1 | \3 | 秋月電子 | |
抵抗 R4、R5 | 4.7k 1/6W | 2 | \1 | \2 | 秋月電子 | |
電解コンデンサー C12 | 100uF 10V | 1 | \10 | \10 | 千石電商 | |
2mmピッチソケット | 7ピン | 4 | \126 | \504 | 廣杉計器 | ※2 |
2mmピッチヘッダー | 7ピン | 2 | \28 | \56 | 廣杉計器 | ※2 |
メモリー | Microchip 24LC16B | 3 | \64 | \192 | Microchipdダイレクト | ※1 |
2.54ピッチヘッダー | 5ピン | 1 | \10 | \10 | 秋月電子 | ICSPしなければ不要 |
232Cケーブル | 232Cケーブル | 1 | \300 | \300 | 秋月電子 | |
積層セラミックコンデンサ C8−C10 | 0.1uF | 3 | \5 | \15 | 千石電商 | |
積層セラミックコンデンサ C1−C5 | 0.1uF | 5 | \0 | \0 | 秋月電子 | 232CインタフェースICに付属 |
感光基板現像液など消耗品 | 現像液、エッチング液 | 1 | \100 | \100 | 千石電商 | |
total | \2,971 | |||||
DP−16Kもどき3枚分を含むパーツリストです。一番上の写真では基板には5枚分のパターンがありますが 3つあれば十分なので2枚分は使いません。 ※1.実際には海外へ発注するのでこの価格では買えません。約100個購入して送料を按分したときの価格です。 ※2.ばら売りはしていないので実際にはこの価格では購入できません |
EAGLE回路図&基板パターン
基板最終パターン。抜けていた部品も配置しました。上のEAGLEのファイルはこれと同じです。データパックは銅箔にコネクターを瞬間接着剤で貼り付ける方式にしました。
最新VisualBASICを使ったプログラムをインストールすると .NET Framework というプログラムの共通部品をインストールしなければなりません。かなり巨大で30分程度インストールに時間がかかりました。次期WindowsのVistaではOSに標準装備される物と思われますが、インターネットに繋がっていないとインストールも出来ません。「インストールに予定より時間がかかっています...」などとメッセージが出ていますが、たぶんボロいPCのためです。Windowsの予想能力がお粗末なのか、PCがボロいことに対する嫌みが言えるほど賢いのか定かではありません。
データパックのデータの中身に不整合などあるとこれが出るのでしょうか。おかしくなったときはプロポ上の機体データをおかしくなった機体データにCOPYしてやると回復します。解析中に何度もデータパックを逆に差し込んでしまいましたが特に壊れないみたいです。
基板は小型化しました。複製を簡単に作れるように片面基板のままです。
VB.NET勉強中です。Javaと平行してやっているのでかなり疲れ気味です。この本はVB.NETの入門書。入門書ですが他の言語が使いこなせて、ついでにVB.NETもレパートリーに加えたい人向けの内容です。
Press−n−Peelで試作基板を作りました。
エッチング中の図。小さい基板はこの方法が便利。右はラッカーシンナーに漬けてトナーを落としているところ。
基板完成。片面基板ではかなり限界に近い実装密度です。ジャンパー線は1本のみです。
DCジャックがコンデンサーとナットに近づきすぎました。緑のLEDはパイロットランプですがそれ以外のLEDと2つの押しボタンスイッチは特に機能を決めていません。ソフトを造りながら考えます。黒いスライドスイッチはFMS機能とデータパック機能の切り替え用です。電源はFF9の背面コネクターから給電する方法とAC−DCアダプターから供給する方法のどちらでも動くようになっています。AC−DCアダプターを繋いだときはアダプターの電源が優先使用されます。
OLIMEXで片面基板作ってみました。片面基板は裏と表の色がこんなにも違います。
1個組み立ててみました。
ちょっと斜めですな。両面基板で作って、ソケットとICを同じ側に配置する方が良さそうです。両面基板は高いのでこれくらいは許容範囲としましょう。
DP−16K ゲノム解析結果(解析中です)
マイナーなモード2での解析結果です。FF9は「Mode/Page」キーと「End」キーを押したまま電源を入れると、モード変更画面が表示されます。
この解析結果はFF9(T9CAP)がDP−16Kデータパックに何を書き込んでいるのかを解析した物です。書き込まれるデータはFF9に依存している物であり、データパックに依存している物ではありません。DP−16Kを他の機種(プロポ)で使用すれば結果は異なった物になります。
データパック全体の概要 | ||
バイト位置 | サイズ[バイト] | 解説 |
0000〜0009 | 10 | ヘッダー部 |
0010〜0339 | 330 | 機体データ1 |
0340〜0669 | 330 | 機体データ2 |
0670〜0999 | 330 | 機体データ3 |
1000〜1329 | 330 | 機体データ4 |
1330〜1659 | 330 | 機体データ5 |
1660〜1989 | 330 | 機体データ6 |
1990〜2047 | 58 | 未使用部 |
・DP−16Kは2048バイトの容量があります。 ・「実際に何が書き込まれているか」からの推測であるため、正しいとは限りません。 ・FF9で使用したときの物なので、他の機種では違うものになります。 |
機体データ1機分の構造 | ||||||||
バイト位置 | サイズ [バイト] |
型 | 大項目 | 中項目 | 状態 | 値の範囲 | 解説 | 解析完了 |
000 | 1 | |||||||
001 | 1 | |||||||
002 | 1 | |||||||
003 | 1 | |||||||
004〜011 | 8 | 文字 | モデル名 | − | ASCIIキャラクターコード A-Z[\]^_`a-z■!"#$%&'()*+,-./0-9:;<=>?@ |
■はスペース文字の意味です | ● | |
026 | 1 | 符号付き | 右スティック左右トリム | − | −120(最左)〜0(中央)〜+120(最右) 1クリック±4増減 | プラス方向に30クリック マイナス方向に30クリック |
● | |
027 | 1 | 符号付き | 右スティック上下トリム | − | −120(最上)〜0(中央)〜+120(最下) 1クリック±4増減 | 同上 | ● | |
028 | 1 | 符号付き | 左スティック上下トリム | − | −120(最上)〜0(中央)〜+120(最下) 1クリック±4増減 | 同上 | ● | |
029 | 1 | 符号付き | 左スティック左右トリム | − | −120(最左)〜0(中央)〜+120(最右) 1クリック±4増減 | 同上 | ● | |
082 | 1 | 16進 | D/R,EXP | SW | CH1 AILE |
A:10 B:11 C:12 D:13 E:14 F:15 G:16 H:17 AIL( 90%):18 ELE( 90%):19 THR( 30%):1A RUD( 90%):1B |
||
88 | 1 | 符号無し | D/R,EXP | D/R→ | AILE(UP) | 0〜140[%] | ||
89 | 1 | 符号無し | D/R,EXP | D/R← | AILE(UP) | 0〜140[%] | ||
100 | 1 | 符号無し | D/R,EXP | D/R→ | AILE(DN) | 0〜140[%] | ||
101 | 1 | 符号無し | D/R,EXP | D/R← | AILE(DN) | 0〜140[%] | ||
106 | 1 | 符号付き | D/R,EXP | EXP→ | AILE(UP) | −100〜+100[%] | ||
107 | 1 | 符号付き | D/R,EXP | EXP← | AILE(UP) | −100〜+100[%] | ||
118 | 1 | 符号付き | D/R,EXP | EXP→ | AILE(DN) | −100〜+100[%] | ||
119 | 1 | 符号付き | D/R,EXP | EXP← | AILE(DN) | −100〜+100[%] | ||
【型の意味について】 データパックそのものには2048個のデータが書き込まれています。1個のデータが取りうる範囲は16進数で(Hex)00〜(Hex)FF、10進数で言うと0〜255です。これ以外の値を取ることは絶対にありません。但しこれだと負の値や文字を表したいときに困ります。そこで、負の値を表すときは−1なら255、−2なら254...−127なら127を書き込むように取り決めます。負の値の最小値は−127、正の値の最大値は128です。このようにすると表すことの出来る正の値の最大値が255−>128に約半減してしまいますが、負の値を表すことが出来ます。「表す」と言うより「読み替える」のですが... 文字を表したいときはもっと単純です。文字「A」なら(Hex)41、「B」なら(Hex)42という具合に対応付けをします。この対応付け表のことをASCIIコードといいます。 型欄は範囲欄に書かれた数値の意味を表しています。 文字:ASCIIコードであることを意味します 符号付き:符号付き10進数を意味します。取りうる値の範囲は−127〜+128です 符号無し:符号無し10進数を意味します。取りうる値の範囲は0〜255です 16進:16進数を意味します。取りうる値の範囲は(Hex)00〜(Hex)FFです (Hex)は16進数を表しています |
解析中間結果 <−上の表は解析終了してから更新します。それまではEXCELで見てください。
2007−01−08
一部不明な箇所もありますが飛行機の解析はほぼ終了しました。上の添付ファイルを見てください。
背景が鶯色の部分だけをPCで設定できるようにしようと思っています。
それ以外の項目については初期化状態から変更した箇所が一覧で解るだけで十分と考えています。