ArduinoでThinkPadキーボードUSBアダプターを作る:5ステップ

ArduinoでThinkPadキーボードUSBアダプターを作る:5ステップ

目次:

Anonim

ビジネスクラスのラップトップの中で、ThinkPadは最高のキーボードを持っています。アイランドスタイルのキーボードへの変更があっても、私はThinkPadキーボードがまだキーボード部門でそのすべてのラップトップの競合他社の手に勝ったと言うでしょう。 ThinkPadのキーボードのキーは他の人とは異なり、指に合うように湾曲しています。デスクトップのフルサイズのキーボードとほぼ同じ表面積で、十分な間隔を置いて配置されています。

ThinkPadのノートパソコンはよくできています。しかし、それらは同じスペックを持つ競合他社と比較して、また非常に高価です。それで、あなたがキーボードだけが好きなら、あなたは何をしますか?あなたはTrackPointと一緒に公式のUSBまたはブルートゥースレノボThinkPadキーボードを買うか、あなたが親愛なるキーボードのためにあなた自身のアダプターを作ります。

このInstructableでは、T60キーボードとその互換キーボード用のUSBアダプタを作るための一般的な手順を説明します。キーボードがT60と同じレセプタクルを共有している場合。手順1を参照してください。

始めましょう!

更新:必要なすべてのコンポーネント(Arduinoを除く)を含むキットがhttp://www.tindie.com/products/rampadc/arduino-thinkpad-usb-keyboard-adapter/で入手可能になりました

用品:

ステップ1:あなたのレセプタクルを入手

簡単な部分に飛び込む前に、すなわち。アダプタボードをプログラミングして設計するには、キーボードをPCBに接続する方法を見つける必要があります。

ほとんどの古典的なThinkPadキーボードは基板対基板コネクタを使用しています。 eBayによると、T60キーボードを検索すると、ThinkPad T60、T60p、Z61p、Z61t、Z60、T61、R400、R500、T400、T500、X41 …は同じキーボードを共有していることもわかります。互換性があります。

ThinkPad T60のインターネット上の回路図(写真参照)から、T60はJAE AA01B-S040VA1-R3000を使用していることがわかりました。これらが独自のものであるため、これらを販売するベンダーはそれほど多くありません。売る人のほとんどは、最低注文数量100で売っています。それぞれ約4.90ドルのプラス送料で、それはひどく高価です。それで、あなたがそれらのうちのいくつかを手に入れることに興味があるならば、私にメッセージを送ってください。

ThinkPad T60コンセントの詳細については、Felixの写真および寸法を参照してください。http://electronics.stackexchange.com/questions/64112/how-to-find-socket-for-keyboard-connector

ステップ2:キーボード回路図を操作する

前のステップの回路図から、T60キーボードマトリックスは8行16列、ホットキー(FN)は1を使用し、TrackPointはクロックライン、データラインおよびリセットラインを使用します。 Arduino Micro / Leonardoには合計20本のデジタルピンが必要です。

CD4017のような10進カウンタを使用して行を切り替え、MCP23S17のようなSPI 16ビット入力ICを使用して16列の入力を読み取ると、Arduino側のピンの総数は10行に減少します。

一般に、キーボードマトリックスは受動的です - それらは行または列が入力または出力である必要があるかどうか指定しません。しかし、このプロジェクトでは、16列出力にはより多くの外付けIC、受動部品が必要になり、設計が複雑になります。したがって、私は8出力と16入力を持つことを選びました。

これまでのところ、パーツリストは次のようになっています。

  • Arduino Micro:公式モジュールは〜32ドル、クローンは〜13ドル(eBayのクローン)
  • CD4017
  • MCP23S17
  • MCP23S17のプルアップ抵抗として16 x 10kの抵抗
  • Arduinoのマウントボードとレセプタクルボード用(次の数ステップ)
  • AA01B-S040VA1レセプタクル

ステップ3:回路図とPCBを設計する

T60のレセプタクルは0.5mmピッチの表面実装部品なので、他の部品にもSMDを使用することにしました。

このプロジェクトでは、ボードを2つのボードに分割することにしました。

  1. Arduinoマイクロマウントボード
  2. 抵抗と支持ICを備えたレセプタクルボード。

これにより、将来のボードの改訂がよりモジュール化され、長期的にはより安価になる可能性があります。たとえば、Bluetooth接続を追加することにした場合、そのUSB機能のためにArduino Microを使用する必要はもうありません。代わりにArduino Nanoを使用することができ、Arduino側のPCBを設計するだけでよく、使用するマイクロコントローラの種類にかかわらず、リセプタクルボードは同じように機能することがわかっています。

私は、ElecrowのPCBレイアウト、回路図、および製造済みボードの例を含めました。ボードは両面で、50×50mm以内に収まります。

ステップ4:コーディングする

このプロジェクトは、Arduinoの巨大なコミュニティを使ってコーディングするのに十分単純でした。私は簡単なスケッチを書きました。このコードはGitHubで入手できます。http://github.com/rampadc/arduino-thinkpadkb-usb

コードはマトリックススキャンを高速化するために最適化を使用することができます。 FN + NumLock機能、キーパッドキー、およびカスタムキーボードの組み合わせ機能は、スキャン速度を大幅に低下させるため、コードから削除されました。

ステップ5:結果と結論

Arduinoプラットフォームは、USBアダプターの構築を非常に簡単にします。しかし、それはいくつかの深刻な弱点があります。

•限られたキーコードをサポート:キーパッドキー、印刷画面、スクロールロック、一時停止、中断、その他多数の定義なし

•Keyboard.press()およびKeyboard.release()の厄介な実装。変更せずにキーコードを受け入れて送信するのではなく、Arduino APIはユーザーに代わりに印刷可能文字を送信するように強制します。

•リモートウェイクアップしない:コンピュータがスタンバイ状態になっても、キーボードのキーを押したりマウスを動かしたりしてもウェイクアップしません。

•ピン数が少ない

• スロー。コードの最適化や改善は可能ですが、Arduinoの直接ポート操作からの抽象化を使用するとレイテンシが大幅に増加し、ピン数が少なくなるため、ユーザーは拡張ICを使用することを余儀なくされます。

テスト目的で、私は2つのボードを一緒に接続するためにジャンパーケーブルを使用しました。最終製品では、ボードに直接はんだ付けされ、キーボードの下を走る、もっと細いワイヤをいくつか使用します。

これが実際のキーボードのビデオです。http://youtu.be/gDHS0D_EtOc

デザインの改善やコードの最適化に関する提案を歓迎しました。