自作キーボード(ではない何かか)を作る
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をつないで、マウス機能も付加するとか、考えられる。
けど、とりあえずは別のやりたいことにシフト。
関連記事
直近の活動予定
直近の対外的な活動予定を記載しています。 今後のイベント 特になし (技術書、も ...
Ubuntu22.04でArduino IDEを動かす
Ubuntu22.04で、apt install arduinoでインストールす ...
技術書典6サークル参加と近況報告
しばらく忙しくて、更新の間が空いてしまいました。 技術書典6にサークル参加します ...
最小クラスのUSBキーボード作ってみた
自作キーボードをいかに小さくするかを考えていたら、ふと寝る前にネタを思いついたの ...
Rubyのスレッドはタイムスライスで切り替わる?
(English Version) Rubyのスレッド切り替えのトリガーは? ...
(Hacked) mruby/c can work on Arduino Uno
As you know, Arduino Uno has only 2KB RA ...
ディスカッション
コメント一覧
まだ、コメントがありません