PointCloud

ものづくりに関すること。3Dプリンター、レーザーカッター、3Dスキャナー、3DCAD、RaspberryPi、Arudionoとか。

ノートPCを自作する(9) キーボード

ノートPC自作プロジェクト キーボード編の続き


前回はキーボードから出ているフレキケーブルにコネクタをつけるところまで。
今回は実際にキーボードとしてPCにテキスト入力をする。



1 USBに変換

USB化するのに使用したのはArduino Leonardo。
手元にあったからまずはこれで動かしてみる。うまく動けばその後に小型化&コストダウンで互換品をつかうのもよい。

Arduino Leonardoで使える入出力は0~13と18~23(A0~A5)の計20本。
(このサイトを参考にした。)

いくつかのキーで入力できるようにブレッドボード上に配線をしてプログラムを書く。
配線はこんな感じ。

30ピンコネクタの先はキーボードに接続されているとする。
Arduinoの6,5,4ピンを出力。→30ピンコネクタの22,23,24番へ
30ピンコネクタの10、11,12番からArduinoの10,9,8ピンへ入力。入力は10KΩの抵抗でプルダウン。
キーを押したところが導通して5V入力されるしくみ。




この配線だけでも↓のマトリクスの黄色セル部分が入力できる。
当然、使用するキーボードによってマトリクスや配線のパターンも変わるので、入力できる文字も変わる。



スケッチは人様に見せられるようなものではないので割愛するが↓サイトをみればなんとなくかける。
Arduino - KeyboardPress



実際には、ここに至るまでにフラットケーブルのアセンブリで苦労したり、コネクタの接触が悪かったりプログラムが思うように動かなかったりとなかなか時間を費やしてもいるが、これでUSBキーボードとしての基本的な動作は完成してしまう。




2 IOの拡張

以前に調べたマトリクスから、キーボード上のすべてのキーを賄うにはIOが24本必要。使うキーを絞っても20or21本は必要。Arduino LeonardoのIOでぎりぎり賄えないこともないが、互換品等ではすべてのピンが出ていなかったりすることも考慮して、IOを拡張することにした。

拡張に使用するのは「IOエクスパンダ― MCP23017」
秋葉原の電子部品屋で200円以下で入手できる。
これ1つで16本のIOが追加できて、ArduinoとはI2Cで接続する。

スケッチを書くにあたっては、便利なライブラリがあるのでこちらを使う。

Adafruit-MCP23017-Arduino-Library


このライブラリを使えばArduino上のIOと同じ感覚でスケッチを書くことができるようになる。
ちなみに16本のIOは以下のように定義される。
  //MCP PINS 21-28 = 0-7 FOR GPA
  //MCP PINS 1-8   = 8-15 FOR GPB
(参考にしたサイト




拡張した結果、IOに余裕をもった状態で一通りのキー入力が可能になった。



配線の簡略化、Arduinoを小型化、スケッチの見直しなど改善点は山ほどあるが、次に進む。