次のページ 前のページ 目次へ
2. 各種情報
2.1 ザウルスキーボードCE-KB1
ザウルスには純正の携帯キーボードとして CE-KB1 が発売されています。
残念ながらそのプロトコルについては公開されていませんが、
山崎さんの手による解析が次の場所に掲載されており、
本変換回路のソフト製作時に大変参考にさせて頂きました。
・山崎さん キーボードマニア(?)のページ
詳細はそちらを見ていただくとして、
概要としては、CE-KB1 はザウルスから電源を供給されて動作するデバイスで、
キーが押される/離される/オートリピートする度に現在のSHIFT,CTRLキー状態と合わせて 2byte 送出するというものです。
これはキーボードからザウルスへの一方通行で、
CLKラインの上げ下げに同期してDATAを出し、約19200bpsのシリアル通信となっています。
オートリピート処理をキーボード側で行なっていることと、
デバイス生存を示すために1秒に1度は ALIVEコード(0xff) を送信するのがポイントでしょう。
本計画では、
ザウルスから変換回路を見た時に CE-KB1 と同様に振る舞う必要があるため、
これら一連の処理を PIC16F84 でエミュレートしています。
2.2 ターガス・ストアウェイ・ポータブルキーボード
Handspring Visor(日本語版)用にターガス・ジャパンから発売されているのが、
この【ターガス・ストアウェイ・ポータブルキーボード】です。
その特長は何といっても折り畳めること!
広げるとフルサイズのキーボードになり、
折り畳むとVisorやザウルスとほぼ同じサイズにまで小さくなるという一品です。
キーボードとしての質も非常に高く、
キーピッチ 19mm、キーストローク 3mm のメカニカルなキーボードは押し心地も良く、
携帯可能なキーボードとしては突出した出来だと感じます。
その構造と薄さのため膝にのせて使うことはできず、
平らなところに広げなくてはならないのが難点ですが、
かなり満足できる製品でしょう。
これも当然ながら詳しい仕様は公開されていませんが、
筆者が独自に解析を行いましたので、ここに掲載します。
本変換回路はこの情報を基に作成したものですが、
今のところ問題なく動いてるようです。
[2002.02.08 追記]
端子やプロトコルの公式情報は
ThinkOutside社
のDeveloper Supportのページから入手可能です。
Palm, Visor, Jornada, iPaq 用キーボードの詳細が記述されてますので、
開発される方はそちらもご覧になると良いでしょう。
(→他機種用キーボードについての補足)
【通信プロトコル】
Palmのシリアル端子は俗に言うRS232Cレベルですが、
Visorのシリアル端子はTTLレベルの電圧となっています
(2000.11.19
ATOCさんより、Visorでは周辺機器用に TxD ラインから
3V 3mA まで流すことが可能であるという情報を頂きました。信号レベルも同様です)。
通信プロトコル自体は一般的な調歩式非同期通信の無手順ですので、
さほど面倒はありません。
データは一方的にキーボードからVisorへ RxD ピンで渡され、
フロー制御はありません。
- 速度 9600 bps
- データ 8 bit
- ストップビット 1 bit
- フロー制御は無い模様
【消費電力】
ターガス・ストアウェイキーボードは起動時とキーを押している間以外は
ほとんど電力を消費していないようです。
恐らくはキーの上げ下げの変化以外はコントローラが眠るようになっているのでしょう。
動作時の電流を調べてみたところ、
複数のキーを同時に押した場合でも最大 0.5mA に達しませんでした。
通常時は 0.01 mA 程度にまでは落ちているようです。
LED 1個を光らせるのに 10〜20mA 流すことを考えると非常に少ない値です。
【make/breakコード】
キーが押されると下記のスキャンコードに従って 1byte 送信されます。
キーが離された場合には、同コードの最上位bitを立てた物が送られます。
具体的には、A のキーが押されたら $11 、
離されたら $91 が送信されます。
この時、今のキーでキーボードの全てのキーが離されたという場合には、
最後に送ったbreakコード(上の例だと $91)がもう1つ送信されます。
”全て離された”という事を知らせているのかな?と思います。
オートリピートの処理はキーボード側には存在しませんので、
受け取る機器側のソフトで実現されます。
【スキャンコード一覧】
コード | キー |
コード | キー |
コード | キー |
コード | キー |
コード | キー |
コード | キー |
$00 | 1 |
$10 | x |
$20 | |
$30 | - |
$40 | * |
$50 | Delete |
$01 | 2 |
$11 | a |
$21 | |
$31 | \| |
$41 | Enter |
$51 | ← |
$02 | 3 |
$12 | s |
$22 | Fn |
$32 | BS |
$42 | ToDo |
$52 | ↓ |
$03 | z |
$13 | d |
$23 | Alt |
$33 | 予定表 |
$43 | |
$53 | → |
$04 | 4 |
$14 | f |
$24 | |
$34 | 8 |
$44 | j |
$54 | |
$05 | 5 |
$15 | g |
$25 | |
$35 | 9 |
$45 | k |
$55 | |
$06 | 6 |
$16 | h |
$26 | |
$36 | 0~ |
$46 | l |
$56 | |
$07 | 7 |
$17 | 空白 |
$27 | |
$37 | Space/New |
$47 | + |
$57 | |
$08 | Cmd |
$18 | Caps |
$28 | |
$38 | @ |
$48 | ?_ |
$58 | LShift |
$09 | q |
$19 | tab |
$29 | |
$39 | { |
$49 | ↑ |
$59 | RShift |
$0a | w |
$1a | Ctrl |
$2a | |
$3a | } |
$4a | メモ帳 |
| |
$0b | e |
$1b | |
$2b | |
$3b | アドレス |
$4b | |
| |
$0c | r |
$1c | |
$2c | c |
$3c | u |
$4c | m |
| |
$0d | t |
$1d | |
$2d | v |
$3d | i |
$4d | < |
| |
$0e | y |
$1e | |
$2e | b |
$3e | o |
$4e | > |
| |
$0f | /^ |
$1f | |
$2f | n |
$3f | p |
$4f | 終了 |
2.3 ワンチップマイコンPIC16F84
本変換回路は、上に書いたように単に線をつないでレベル変換すれば良いという単純な物ではなく、
ハードウェアだけで構成するのは至難の業です。
こんな時に便利なのが、このワンチップマイコン PIC です。
ワンチップマイコンとはその名の通り、
1つのチップの中に CPU、ROM、RAM、I/O、タイマ etc. を収めたもので、
これだけで1つのコンピュータになっているものです。
コンピュータですから当然プログラムを組むことが可能で、
これによりハードウェアだけでは複雑になる物を奇麗にまとめられます。
PICシリーズは、
Microchip Technology Inc.
(日本語情報はマイクロチップテクノロジー・ジャパン で)
の開発した高性能・安価なRISC型のワンチップマイコンで、
ピン数も少なくメモリも少ない小型の物から、
A/Dコンバータやシリアル通信機能などを備えた多機能の物までそろっており、
用途に応じて自由な選択が可能です。
開発環境の方も、
統合開発環境ソフトウェア MPLAB(Windows用)が無償でダウンロードできるため、
ROMライタがあればすぐに使いはじめることができます。
秋葉原の秋月電子通商などでROMライタやPICを使ったキットなどが容易に入手できますし、
参考となる書籍も随分と出てきていますのでとっつきやすい石と言えるでしょう。
本計画では、フラッシュメモリを備えEEPROMで何度でもプログラムの書き換えができる
PIC16F84-10/Pを 10MHz で使っています。
なお、高速版の PIC16F84A-20/P でも動作しますが、
筆者のテストではチップの差や個体差からうまく動作しない事例がありましたので、
A のつかない物を推奨します。
次のページ 前のページ 目次へ