月別アーカイブ: 2014年10月

PS/2 to USB 変換アダプタ 試作

週末を使ってPS/2からUSBへの変換器を作ってみました。

まあ、あえて自作しなくとも1000円以下の安い値段で普通に買えるものです。これまでの成果を寄せ集めて製作出来たのであまり手間はかかっていません。

PS2USB

いつもの通り、ブレッドボード上での試作です。後ろに見えてるキーボードにピンと来た方もいらっしゃるかもしれませんが、IBMの5576-003です。はい、これを使いたくてわざわざ自作したようなものです。

キーボードマニアの間では割と有名なキーボードにIBMの5576シリーズ4兄弟と言うのがありまして、一番末っ子の「5576-A01」は普通のPS/2接続のAT106キーボードなのですが、長男(?)の「5576 keyboard1」から3男の「5576-003」まではインタフェースこそPS/2ですが、キースキャンコードがAT106キーボードとは僅かに異なっているというシロモノです。また、前述の写真でも分かるように左ALTがありません。

Windows2000までは専用のキーボードドライバが用意されていたんですがそれも今は無く、普通に繋ぐと「いくつかのキーが刻印どおりの入力にならない日本語106キーボード」となります。大半のキースキャンコードはAT106キーボードと同じなので全く使えないという訳ではありません。

本USB変換アダプタでは繋がっているキーボードを識別し、 「5576 keyboard1」「5576-002」「5576-003」のいずれかである場合にキースキャンコードの変換を行うようにしています。これ以外のキーボードが接続された場合はなんの変哲もないPS/2→USB変換アダプタとして動きます。多分。

 

なお自分用に2~3個欲しいのでプリント基板を起す予定。余りを配布するかどうかは未定。PS/2は相性問題がシビアそうで配布はちょっと怖い気も。。。

 

Tweet about this on TwitterShare on FacebookShare on Google+

Arduino Leonardo pro micro

eBayで購入していた商品が中国から届きました。10/6注文で10/23到着です。

Pro micro

Leonardo pro microボード、なんと送料込みで1枚750円です。無論現在の円安レートで。正直安すぎます。品質が低いと言う感じもありません。ちなみに搭載されているATMEGA32U4を単体で購入すると、概ね600円~900円位します。何かおかしい・・・

以前の日記でStrawberry Linuxさんの「ダ・ビンチ32U」に触れましたが、あちらも同じATMEGA32U4を積んでいて、送料別で1300円です(ただしあちらはマイコンの全てのピンが利用可能になっている等、単純な比較は出来ません)。 用途によっては格安pro microはアリだと思います。

ボードには最初からLeonardoのbootloaderが書かれていますので、arduinoのGUIからサクッとプログラムを流し込めます。あるいは最近増えてきた気がする、AVR-GCCで開発してavrdudeで流し込むと言うのも手です。

なおボード上3.3V生成用のレギュレータが載っており、ソルダジャンパJ1で3.3V駆動か5V駆動を選択出来ます(ショートで5V駆動)。また、非常に惜しい事にPE2/~HWBはボード上でGNDに落とされています。IOピンは5本ほど引き出されていません。

とりあえず先日作った IBM 1394099 用のUSB変換アダプタをこれに置き換えてみましたが、全く問題なく動きました。

 

 

Tweet about this on TwitterShare on FacebookShare on Google+

PIC機能差

良く使うPICについて

18F14K50 16F1455 12F1822
DIPのPIN数 20 14 8
Flashメモリ 8k word 8k word 2k word
SRAM 768 byte 1024 byte 128 byte
EEPROM 256 byte  なし 256 byte
USB機能 あり あり なし
I/Oピン 13
(RA3,RB4-7,RC0-7)
9
(RA3-5,RC0-5)
6
(RA0-5)
クロック源 外付け12MHzをPLLで48MHz 内蔵16MHzをPLLで48MHz 内蔵8MHzをPLLで32MHz
内部pull-up RAとRB RA RA
割込レベル 2レベル なし なし
INT外部割込み 3つ(RC0-2) 1つ(RC1) 1つ(RA2)
(状態変化割込み IOC)
使えるピン RAとRB RA RA
状態が変化したピンの
判別レジスタ(F)
ない ある ある
トリガエッジを選択する
レジスタ(P,N)
ない ある ある

なんていうのか、痛し痒し?帯に短き襷に長し?

EEPROMが無くてもいいなら問答無用で16F1455。ただし内部pull-upが使えるポートは非常に少ない。割込みレベルが1レベルしか無いのはまあ無視出来る。SRAMも大きいので、どうしてもEEPROMが必要ならI2CでSerialEEPROMを繋いでSRAMに展開してしまえばいいかな。状態変化割込みも使いやすい。問題は、16F145xは入手性に難があること。(と言っても送料の安いRSで買えるけど)

国内入手性を考えると秋葉原で200円で買える18F14K50が使いたいんだけど、状態変化割り込みが低機能で使い辛い。じゃあ3つもあるINT割り込みを、と言いたいけどその場合は内部Pull-upが併用出来ない。水晶は外付け必須

16F1455にEEPROMを内蔵したものが出てくれないかな

Tweet about this on TwitterShare on FacebookShare on Google+

FM-TOWNSキーボードのUSB変換(続2

大型の台風接近で折角の祝日に外出もままならないので、FM-TOWNS用USBキーボードアダプタのキーマップカスタマイズ対応を行いました。

実際手を動かしてコードを書くまでは「USB HIDプログラミングって何か難しそう」という印象だったのですが、ネットで公開されているサンプルを参考に試行錯誤するうちにあっさり対応出来ました。なんだ、HIDクラス使うのって結構簡単じゃん(笑

キーマップ設定

見た目がダサいですがWIndows側のアプリです(汗。さすがにキー1つずつ変換定義を入力するのは面倒と思いました(というか私自身、面倒で使ってられなかった)ので、全キーの変換定義を記したファイルを一気に流し込めるようにしています。キー変換定義はPIC内蔵のEEPROM に記録しています。つまり

  • WindowsからEEPROMの指定アドレスを1バイト書き換える指示を出す
  • 変換アダプタのファームは指示に従ってEEPROMを1バイト書き換える
  • キーコード変換処理の際はEEPROM内の変換テーブルに従う

こんな感じです。

今回、Windows側アプリはVB.NETで作成しました。こうした小物を作成するならVB.NET(や、今回は使ってないけどC#)は優秀だと感じました。VisualStudioのExpress版を無償で公開しているMicrosoftに感謝です。

 

HIDクラスを手軽に扱える事が分かったので、USB内蔵PICを使ってもっと色々出来そうです。

Tweet about this on TwitterShare on FacebookShare on Google+

FM-TOWNSキーボードのUSB変換(続

ついかっとなって買ってしまった。少し後悔している

FMT-KB205とUSB変換アダプタ

FMT-KB205、いわゆる親指シフトキーボードです。もともとアダプタはJISキーボードと親指シフトキーボードを自動で判別してキー配置を個別に対応していたんですが、実機確認のために買ってしまいました。 案の定、キーコード変換のバグが見つかったのでやはり実記動作確認は大切です。

FM-TOWNS用のキーボードはALTキーが存在するもの(FMT-KB107、FMT-KB207など)と、ALTキーが存在しないものがあります。今回購入したFMT-KB205はALTキーが存在しないキーボードです。今時のWindowsで使うのにALTキーが無いのはさすがに辛すぎます。JISキーボードは最下段のキーに余裕があるので振り替え可能なんですが、今回のFMT-KB205は最下段に最低限のキーしかないのでALTに振り返られそうなキーがありません。

また、左側の「英字、カタカナ/英小文字」キーや、親指シフトキーボードを最も特徴付けている「親指左、親指右」をUSBキーボードのどのキーにマップするかも悩ましいところです。この辺り、多分使う人によって好みが大いに分かれそうです。

やっぱりキーマップのカスタマイズ機能は必須かなぁ。JISキーボードだとあんまり必要性感じないんですが、親指シフトキーボードだと無いと辛そう

 

追記
→ 結局キーマップのカスタマイズ機能もつけました

Tweet about this on TwitterShare on FacebookShare on Google+

IBM 1394099

IBM の 3471/3472 というターミナルマシン専用のキーボードを購入しました。こんなやつです

IBM 1394099

でかい、でかすぎる

24個のファンクションキー、左端に5×2列のキー、カーソルキーが5キー構成というのはまさに日本IBMの5576 keyboard1を彷彿とさせるキー配置です。そういえば5576 keyboard1もAS/400用の端末に繋がってたりしました。まあ、どちらかが先行するモデルを模した結果、同じ配列になったんだと思いますが。『1394099を模したIBMマルチステーションの1型キーボード5576001』の流れを汲む5576 keyboard1、と言う感じ?

オークションで中古が開始価格50円で出品されていたので試しに2つ入札してみたら、そのまま50円で落札出来てしまいました・・・。送料安かったからいいんですけど。中古という事でしたが、綺麗な専用の箱&発泡スチロールに収まっていて、キーボード自体にも殆ど汚れが無く新古品か、限りなく使用頻度の低い中古という感じです。

こいつはかのModel Mキーボードと同じ、バックリングスプリング採用のキーボードです。真っ直ぐに立ったバネに対して上から加重をかけていくと、ある時点でバネがヘニャっと折れ曲がるという仕組みをキーに利用しています。日本IBMから出ていたキーボード、5576-A01もバックリングスプリングを用いていますがこいつやModelMとはキータッチが大いに異なります。ちなみにコイツは Made in UKです。

専用ターミナルとの通信自体はPS/2と同じ電気特性、プロトコルのようですが、いかんせんコネクタがRJ-45です。また、PS/2キーボードとしては珍しい、codeset3のキーコードを返すらしいです。そこで以下のような変換アダプタを用意しました。

1394099_2

キーボードコネクタは秋葉原の秋月電子で「LANコネクタDIP化キット」を購入、マイコンはストロベリーリナックスさんの「ダ・ヴィンチ32U」というATMEGA32U4マイコンボードです。とりあえず実験なのでブレッドボードで組みましたが、LANコネクタとマイコンボードを4本(5V, GND, CLK, DATA)繋ぐだけで変換アダプタとして動きました。

RJ45

秋月のLANコネクタDIP化キットを使った場合の配線ですが、コネクタを背面から見て左端を1pin、右端を8pinと数えた場合に次のようになります

1,2pin 未使用
3pin 5V
4pin DATA
5pin CLK
6pin GND
7,8pin 未使用

正直、今となってはバックリングスプリングのキーボードはちょっとキータッチが重すぎますね。あと、タイプ音が大きいです。バネがカシャカシャ鳴る音が結構響きます。昔はメインキーボードとして5576-A01を使っていましたが、最近はずっとALPS軸のX68000キーボードばかり使っているので1394099のキーは私にはちょっと重い感じです。あと大きすぎ

今でも人気があり、オークション等ではそれなりの価格で取引されている Model M と同じキータッチのキーボードが超破格値で入手出来た事で満足です

ちなみにカーソルキーの上部にある機能キーの一つですが

IBM 1394099 謎のキー

なんですかこれ?一見、棒人間のような謎の記号キー。本来のターミナルにおいてどのような役割のキーだったのか、私、気になります。 マルチステーションのキーボードと見比べる限り、コピー/連続コピーでしょうか?

Tweet about this on TwitterShare on FacebookShare on Google+

retr0bright

Apple Extended Keyboard を購入したんですが、いい感じに黄ばんでいたので紫外線+過酸化水素による黄ばみ取りを行いました。

使ったのは定番のワイドハイターEXとこちらのブラックライトです。世界一ナチスの科学技術やSPW財団がバックにいませんのでカーズを倒せるほどのパワーはありません。

脱色前

処理前

脱色後

処理後

ブラックライトを30時間くらい照射しています。ワイドハイターはキムワイプに染み込ませてキーボードに密着させて、さらに乾燥を防ぐ為にラップで包みました(それでも途中で何度か液を継ぎ足しています)。画像で見ると結構白くなってますが、実際にはまだうっすら黄色が残ってます。

とはいえここまで白く出来れば十分です。天候・昼夜関係なく紫外線を当てる事が出来るのでブラックライト購入は正解でした。

Tweet about this on TwitterShare on FacebookShare on Google+

携帯電話

とあるコミックより。こういう携帯電話出してくれませんかね。ほとんど着信しかなく、かける場合もほぼ固定の相手だけ、と言う場合はシンプルでいいと思うんですよねえ。タッチパネルじゃなくて独立したスイッチが欲しいんですよ。

phone1

phone2

後者はIpodを模しただけでしょうけど。そういえば、iPhone6の発表の裏でついにiPod Classicが消滅して、ホイールクリック搭載のデバイスは完全に姿を消すようですね。デザイン的にホイールクリックが好きなだけに残念です。

ちなみに、バッテリが膨張・爆発する(かもしれない)初代iPod nano 4GBを所有してますが、交換プログラムに出すと初代nanoではなくて最新の7G nano (16GB) に交換されてしまうとのことでまだ交換出来ていません。7G nanoの方があらゆる面でスペック上なんですけどね。初代nanoのデザインはcoolで最高です。

Tweet about this on TwitterShare on FacebookShare on Google+

FM-TOWNSキーボードのUSB変換

出来ました

FMT2USB

と言いたい所なんですが、VUSBに繋ぐ0.22μFのコンデンサがストック切れてた・・・ とりあえず0.1μFを付けておいたけど、推奨は0.22~0.47μFなので後日付けなおす予定。

キーマップのカスタマイズ機能かー。折角のUSB接続なんだし、定義ファイル(キーマップをカスタマイズしたEEPROMのHEXファイルとか)をUSBから流し込めるようにした方がいいのかな。HID BootloaderとWin側の更新プログラムの両方修正が必要になるけど。

EEPROMだけピンポイントに更新出来るようにして、キーマップ情報をEEPROMに流し込むほうが楽かも。

追記
→ 親指シフトキーボードで動作確認しました

Tweet about this on TwitterShare on FacebookShare on Google+