自作キーボード(ではない何かか)を作る
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をつないで、マウス機能も付加するとか、考えられる。
けど、とりあえずは別のやりたいことにシフト。
関連記事
直近の活動予定
直近の対外的な活動予定を記載しています。 今後のイベント 特になし (技術書、も ...
M5Stack/ESP32 Arduino向けのmruby/cライブラリを作る
Wio LTE Arduino用にライブラリ化したmruby/cを少しだけ改造し ...
独習mrubyバイトコード[OP_LOADNIL]
OP_LOADNIL Arguments A:レジスタ番号 How it wor ...
技術書典5振り返り~技術同人誌の書き方覚書~
技術書典5ご報告 技術書典5、弊サークル(Kishima Craft Works ...
Progress of mruby/c library for Wio LTE Arduino
I confirmed basic functionalities of mru ...
TokyuRuby会議12で抽選してきた(mruby/cによる抽選マシーン制作)
2018/7/29、台風が接近して開催が危ぶまれましたが、なんとか無事Tokyu ...
ディスカッション
コメント一覧
まだ、コメントがありません