2011年12月19日月曜日

USB Newton Keyboard 詳細篇


USB Newton Keyboard にコメントがあったので、詳細篇です。
まさか需要があるとは、、、

前回の記事はブレッドボードに組んでいましたが、その後ユニバーサル基板に組みました。
(MOSA Software Meeting 2011 の懇親会で紹介したときのバージョンです。)

[ハードウェア]


ハードウェアは単純にRS422 とArduino のUART とのレベル変換です。
NewtonKeyboard と、レベル変換IC (LTC485) に電源が必要ですが、
この回路では D7 ピンをHIGH、D6 ピンをLOW にして、電源としています。

・D5 ピンにLED をつけると、CapsLock の状態によって点灯します。
・LED の種類は任意です。電流制限用の抵抗を直列にいれます。
(計算方法が分からない場合は 470Ω〜1kΩ 程度をつけてください。)
・104 は念のためつけたパスコン(セラミックコンデンサ 0.01uF) です。
 無くても動作すると思います。
・コネクタはキーボード側のプラグを正面からみた図です。

[ソフトウェア]

まず、こちらのプログラムを通常のArduino のプログラムとして書き込みます。

プログラムの動作はNewton Keyboard が出力するシリアルキーコードを、USB HID Keyboard のファームウェアに合わせて変換し、シリアルポートから出力しています。

次に、Arduino Uno のUSB シリアル変換部のチップ(Atmega8u2) に、DFUプログラミングで USB HID Keyboard のFirmware を書き込みます。
 →こちらの記事を参照して下さい。

Arduino のプログラムを書き換える場合は、再度DFU プログラミングで USB シリアル変換 のFirmware に戻します。


もしかして、他にも欲しい方いらっしゃいますか?


4 件のコメント:

  1. おかげさまで無事にニュートンキードからの入力ができるようになりました。念願だったので、超嬉しいです。このコメントはニュートンキーボードから書いています。
     後は持ち運べるように、UNOごとキーボードの中に組込めればと試行錯誤しているところです。
     それから、プログラムの方ですが、()がShift +8,9での入力となり、キートップの表記とズレがありました。そんなに不便でもないので、あまり支障はありませんが・・・。
    早く自分でスケッチ書けるようになりたいです。

    返信削除
  2. tune さん、動作おめでとうございます。本体に内蔵できたら完璧ですね!

    記号の件ですが、家のはズレていないので、
    日本語キーボードとして認識されていませんか?
    (他の記号もずれてませんか? たとえばShift + 2 が " など)
    OS 側の問題なので、接続する環境によって対処法も変わってくると思います。


    プログラムはDFU で書き込んだプログラムの作者darran さんのサンプル(usb_kbd_demo.pde) をベースに、Keycode の変換をするものです。

    Newton Keyboard 独自のKeycode と、USB Keyboard のKeycode と、
    コンピュータで一般に使われる ASCII Code が混在しているので分かりにくいですが。

    返信削除
  3. 初めまして,ヴ バン カンと申します.宜しくお願いします.現在はArduino Mega 2560とMaxonのDCモータでロボットのコントロール研究を行っています.使うエンコーダの出力信号はEIA Standard RS 422式(内蔵ラインドライバ DS26LS31)なんですが,そちらと同じで 秋月のRS485/RS422トランシーバ LT1785CN8 を使おうと思っています.RS422 とArduino のUART とのレベル変換は可能でしょうか?初心者なんで,宜しくお願いします

    返信削除
  4. ヴ バン カンさん、はじめまして

    返信が遅くなりまして済みません。
    RS422 とArduino UART のレベル変換は問題なくできます。

    (この記事のキーボードは TTL レベルを受け付けたのでIC 省略してしまいましたが、、、)

    返信削除