iamyutakaの備忘録

自作キーボード初心者が経験を記録してくブログ

SU120とOLEDを組み合わせて、猫がペチペチするキーボードを作ってみました

そろそろ新しいキーボードを作成したいと思っていたところ、OLEDで猫がペチペチとキーボードを打つ様子を表示するコードが公開されているのを知りました。また、プチブロックでキーボードのケースを作成している記事を見ました。どちらも見た目が可愛らしかったので、それらの情報を参考に自作キーボード基板SU120を使って、自分でも作ってみました。名前はBongo-Sasamiです。この投稿はその時の記録になります。

f:id:iamyutaka:20220314195109j:plain

Bongo Sasami

salicylic-weekly.hatenablog.jp

blog.alglab.net

e3w2q.github.io

作ったもの

使用した道具や部品

Mint60を作った際に購入したハンダゴテや、ニッパーを使いました。それに加えて、購入した物のリストになります。

SU120
  • TALPKEYBOARDでマクロパッドセットを1個とカラーの単体2個を購入
  • ダイオードやゴム足は別途購入したので、マクロパッドセットである必要はなく、単体3個でも良かったかもしれません
  • 後日、トッププレートも注文しました😃
キースイッチ
  • TALPKEYBOARDでTecsee製の綺麗な見た目のスイッチを色々、合計40個を購入
  • どれも、かなり柔らかい感じで、良いです
1N4148 ダイオード
  • TALPKEYBOARDで100PCsを1個購入
CherryMXスイッチ用 Kailh PCBソケット
  • TALPKEYBOARDで5個セットを10個購入
ポリウレタン銅線
  • 東急ハンズで購入
  • 素人なのでハンドクラフト用の銅線を買うところでしたが、ハンダゴテが売っている近くに置いてあるのがポリウレタン銅線でした
ネジとナット
  • 東急ハンズで購入
  • 最初はM1.4、長さ3mmのさら精密ネジだけで繋いでいましたが、黒いSU120基板の穴の周りには金属っぽい加工がしてあり、空回りして留めることが出来ませんでした。代わりにM1.2、長さ5mmの精密ネジとナットを買ってきて、指先で少し入れてから、ペンチの先でしっかりと締めました
Pro Micro
  • 遊舎工房で購入
  • SU120はPro Microの足を指す穴がジグザクになっているのでコンスルーを使わなくても、ハンダなしで取り付けることが出来ます。これは凄く良い工夫!
  • 逆にコンスルーが付いているPro Microは、穴にハマってくれませんでした
OLED
  • 遊舎工房で購入
  • ソケットも買いましたが、特に使いませんでした
プチブロック
  • 参考にした記事と同様に、ダイソーでナンヨウマンタを2個と、E6系こまち 中間車両を3個購入
  • ついで、整理用にボックスを買ったのですが、余ったパーツを仕舞うのに便利なのでついでに購入するのをお勧めします

SU120でキーボードを組み立て

そもそもどうやってOLEDを組み合わせるのかわからず、ブレッドボードとジャンプワイヤを使って色々試しました。

f:id:iamyutaka:20220314195244j:plain

 

Mint 60やQuick7を作った際は、Pro Microのことをあまり意識しませんでしたが、「自作キーボード設計入門」や下記の記事を参考に、あらためてピンの意味や、繋ぎ方を学びました。

以前、O'REILLYの「Arduinoをはじめよう」を読んだ際にスイッチサイエンスの「Arduinoをはじめようキット」を購入したのですが、そのキットに含まれていたブレッドボードやジャンプワイヤが今回、役に立ちました。この「Arduinoをはじめよう」を読んでおいたおかげで、GNDってなんのこと、といった最低限の前提知識は得られたかと思います。

booth.pm

www.eisbahn.jp

toys.poppo-ya.com

ここでの実験で、Pro Microの特定のピンがキースイッチ用のポートとI2C用のSDAとSCLを兼用していることに(つまり、SU120でPro Microを載せる部分のAの穴に、行を繋ぐ線とOLEDに繋ぐ線の両方を繋ぐ)気付いたり、PCBのどこからGNDとVCCを繋げれば良いのか(ジャンパを繋いでから、分割キーボードのためのイヤホンジャックを付けるところ)という確認ができました。特にこの図は穴が開くほど見た気がします。

私がハマったポイント
  • SU120のトラブルシューティングにもありましたが、行や列単位でキーが反応しないときは、Pro MicroとPCBの穴の接触不良が疑われます
  • PCBソケットとPCBとの半田付けがうまくいっていないと、単一のキーが反応しませんでした。ソケットが浮かないよう、上からしっかりと押さえて半田をつけます
  • ポリウレタン銅線は、皮膜をしっかりと取り除く必要があります。ハンダで10秒以上、白煙が出なくなるまでじっくりと熱しました

QMKでOLEDとキーマップを設定

まずは、SU120のREADMEにあるように、必要なフォルダを手元のQMKのフォルダコピーします。

github.com

ペチペチ猫であるbongo catはこちらのレポジトリにあります。How to useセクションに、変更すべきファイルと行番号が書いてあるので、その通りにやればそんなに難しくないと思います。

github.com

bongo.hの最後の方の時計を表示する箇所はコンパイルが通らなかったので、単純な文字列を表示するよう、以下のように変更しました。

if (!minimal) {
// print wpm
oled_set_cursor(0, 0);
sprintf(wpm, "WPM:%03d", get_current_wpm());
oled_write(wpm, false);

// print bongo!!
oled_set_cursor(0, 2);
oled_write("bongo!!", false);
}

さらに、keymap.hの中で、bongo.hをincludeして

#include "bongo.h"

draw_bongoを呼び出せば完成です。手軽で作者さんに感謝です 。

bool oled_task_kb(void) {
draw_bongo(false);
return false;
}

 

また、QMKでOLEDを有効化する方法ですが、以下をrules.mkに追記するのが最新のバージョンでは正しいようです。

OLED_ENABLE = yes

github.com

私がハマったポイント
  • QMK Toolboxで変更したファームウェアをPro Microに書き込んでも、変更が反映されないことがありました。そのときはQMK Toolboxの右下にあるClear EEPROMを押してから、再度Flashすることで反映されました。何度かクリアしなければいけないこともあったので、すこし謎です。
  • Macに繋いだ際に日本語配列キーボードとして認識されました。何度もキーボード設定アシスタントで英字キーボードとして設定しても、日本語配列として認識されて困ったのですが、一度ログアウトしてから試すと、何事もなかったように英語配列キーボードとして正しく認識してくれました。

プチブロックでケース作り

動くことを確認したら、プチブロックでケースを作っていきます。参考にした記事ではひと回り小さいキーボードを対象としていたので、はみ出る部分は自分なりに試行錯誤して作っていきます。特に設計図的なものも作らず、感性だけでなんとか作れました。

f:id:iamyutaka:20220314195157j:plain

おわりに

仕事の隙間時間で作っていきましたが、調査なども含めて制作時間は一週間ほどかと思います。SU120とBongo Catのコード、さらにはプチブロックでケースを作るアイデアという、先人達の力を借りれたからこそ、短期間で迷わずに作成できたのだと思います。今はトッププレートがないので、若干キーがぐらつきますが、十分実用に耐えうるキーボードが作れたと思います。猫も可愛いですし🐱

あとはキーマップを煮詰めるだけです。この少ないキー数でどこまで行けるのか少し不安ではありますが。。

この記事は辿々しいながらも、Bongo Sasamiで書きました。