自作キーボード(ではない何かか)を作る
Project, TechArduino, c, Embedded, HW, Japanese
モチベーション
RaspberryPiとかのセットアップでUSBキーボードが欲しくなる場面が時々あるが、小型のものでも少し大きく感じるので、小さいキーボードに興味があった。
過去にはタクトスイッチとTeensyで、こんなの作ってみたりもした。
でもまだ大きさには満足できず、もっと小さいスイッチを探したり、PCBを自分で起こしてみたい、などと考えていた。
それと並行して、ワンキーキーボードとか、ネタ的には面白いかも?と考えていた。
RubyKaigi2018のお昼休みに、実際に現物を見て、普段使い用の実用的自作キーボードにも興味が湧いて出てきた。
Lunch time(11:45〜)に大ホール出た左側のheroku スペース(写真のところ)で自作キーボード会議やります。みんなで集まってご飯食べながらキーボードについて話すだけのゆるい感じでやる予定です。興味のある方は誰でも参加OKですのでお気軽にどうぞ。 #rubykaigi pic.twitter.com/a5ywCdRmiB
— Toshio Maki (@Kirika_K2) June 2, 2018
いずれにせよ自作PCBは何かで挑戦してみたいので、自作キーボードは良いお題に思える。
その前に、キースイッチの取り回しの確認も兼ねて、簡単に作れそうなワンキーキーボードを作ってみることにした。
準備
下記のような部品を準備。
- ProMicroの互換品
よく自作キーボードで使われているもの。Aliexpressだと500円くらいで買える。 - 液晶
http://akizukidenshi.com/catalog/g/gP-07005/ - キースイッチ
https://www.amazon.co.jp/gp/product/B0721RVRZC/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1 - ロータリエンコーダ
http://www.aitendo.com/product/7443 - ユニバーサル基板
https://www.amazon.co.jp/gp/product/B010GXAZ9G/ref=oh_aui_detailpage_o07_s00?ie=UTF8&psc=1
キーキャップはとりあえず耐久性無視して3Dプリンタで自作。
ロータリエンコーダになんとなくプルアップ抵抗つけているけど、Atmega32U4内部のものを使えば足りると思う。
設計
ロータリエンコーダで文字リストのポインタ位置を制御して、キーを押されたタイミングで、選択中の文字をキー入力としてPCへ送信する。
ProMicroで使えるArduino用のUSBキーボードのライブラリがあるので、とても簡単に実現できる。
配線ではどのピンに何をつなぐか確認。割り込みに使えるPinが限られているので注意(一敗)
組み立て
まず、秋月の液晶は変換基板にはんだ付けして、ブレッドボードで動作確認。
うまくユニバーサル基板に乗るように配置してはんだ付けして、配線する。
液晶の基板がProMicroに微妙に干渉するので、ハンドグラインダーの研磨砥石で1mm程度削った。
あと、キースイッチ取付用にユニバーサル基板にドリルで穴を開けた。
ケース
ユニバーサル基板や部品の位置などをデジタルノギスで採寸して、Fusion360でケースをデザインして、3Dプリンターで印刷。
無駄な張り出し残してしまったので、干渉している部分をラジオペンチで剥ぎ取った。
うちのプリンターだとどうしても長方形が微妙に歪むので、上と下の箱を合わせるのが難しい。面倒なので適当に重ねて無理やり瞬間接着剤でつけている。
ソフト
液晶については、こちらの方のライブラリで制御。
https://synapse.kyoto/hard/MGLCD_AQM1248A/page001.html
余裕があれば、フォントを大きく表示できるように改造したい。
加えて、ロータリエンコーダの信号を割り込みで検出して、
ボタンについては、画面更新と合わせて、ポーリングで検出。
ボタンが押されれば、選択中の文字に対応するキーイベントを送信する、という単純なもの。
完成
動画
https://twitter.com/kishima/status/1006909707032805377
とりあえずジョークデバイスとして作ってみましたが、次はちゃんとしたキーボード作ってみたい。
まずは、PCBの練習も兼ねて、テンキーあたりからがよいかな?
結構キースイッチとキャップも値が張るので。
せっかくつくったので、もし真面目に使うなら、1文字入力ではなくて、キーワード入力できるようにするとか、一応拡張用に残したI2CにGPIO拡張ICをつないで、マウス機能も付加するとか、考えられる。
けど、とりあえずは別のやりたいことにシフト。
関連記事
直近の活動予定
直近の対外的な活動予定を記載しています。 今後のイベント 特になし (技術書、も ...
Wio LTEでmruby/cを動かすArduinoライブラリを作った
英語版はこちら。 先日、第60回 kawasaki.rbで↓のようなLTしてきま ...
独習mrubyバイトコード[GETGLOBAL]
OP_GETGLOBAL Arguments A: レジスタ番号 Bx: シンボ ...
独習mrubyバイトコード[OP_LOADNIL]
OP_LOADNIL Arguments A:レジスタ番号 How it wor ...
格安USBホストIC(CH559)を試す
簡単にUSBホスト機能を自作のプロジェクトに追加できる方法を知ったので紹介したい ...
mruby meetup #1 を開催しました
レポートを書こうと思っていたら、だいぶ遅くなってしまいました。 7/12にmru ...
ディスカッション
コメント一覧
まだ、コメントがありません