狠狠撸

狠狠撸Share a Scribd company logo
キーボード自作のスヽメ
株式会社レトリバ
? 2017 Retrieva, Inc.
自己紹介
? 名前:河原 一哉(かわはら かずや)
? 年齢:39歳
? 所属:株式会社レトリバ
? 好きなOS:Solaris, MacOS
? 好きなマイコン:ATMEGA328P-AU → ATMEGA32U4
? 好きな護衛艦: いずも、かが、じんりゅう、せきりゅう
? 2017 Retrieva, Inc. 2
今日のお題
? 2017 Retrieva, Inc. 3
自作キーボードがアツい!
? アツい理由1
? こだわりのメカニカルスイッチが使える!
? アツい理由2
? キートップをデコれる!
? アツい理由3
? マイコン使って作れる!
? 2017 Retrieva, Inc. 4
自作キーボードレベル
? 入門:自作キット買って作る
? 初級:基盤や部品を買い揃えて作る
? 中級:設計済みPCBを発注して作る(難易度低版)
? 上級:設計済みPCBを発注して作る(難易度高版)
? プロ級:回路から設計して作る
? 2017 Retrieva, Inc. 5
自作キーボードレベル:入門
? Massdrop(https://www.massdrop.com)などで買えます
? Mechanical Keyboardsコミュニティで時々販売
? ErgoDox, Minivan, Planckなど
? 必要な部品が揃ってる
? ハンダ付けするだけ
? FWなども設定済み
? カスタマイズ可能
? キーキャップやスイッチ選べる
? ケースの色も選択可
? 2017 Retrieva, Inc. 6
自作キーボードレベル:初級
? Mehkeeなどで基盤が買える
? 必要な部品を別途買い揃える
? マイコン(Pro Microとか)
? ダイオード
? キースイッチなど
? はんだ付けが必要
? マイコンなどがあり、ちょっと難易度up
? ファームウェアの書き込みが必要
? ちょっと知識が必要
? 2017 Retrieva, Inc. 7
自作キーボードレベル:中級
? PCB(基盤)の作成
? 基盤の設計ファイルが共有されている
? 設計ファイルを基に基盤作成サービスに発注
? 1週間ぐらいでできる(けどちょっと高い)
? 必要な部品を別途買い揃える
? マイコン、キースイッチ、ダイオードなど
? はんだ付けが必要
? ファームウェア書き込みが必要
? 2017 Retrieva, Inc. 8
自作キーボードレベル:上級
? PCB(基盤)の作成
? 基盤の設計ファイルが共有されている
? 設計ファイルを基に基盤作成サービスに発注
? 1週間ぐらいでできる(けどちょっと高い)
? 必要な部品を別途買い揃える
? マイコン、キースイッチ、ダイオードなど
? 表面実装系の難易度の高いはんだ付けが必要
? ファームウェア書き込みが必要
? 2017 Retrieva, Inc. 9
自作キーボードレベル:プロ級
? 勝手にやってください
? 2017 Retrieva, Inc. 10
有名な自作キーボード:ErgoDox
? Dox氏(Dominic Beauchamp氏)らによって作られた
? DIYキーボードのための設計図?ファームウェアなどを公開
? 人間工学に基づいたキー配置、左右セパレート型
? キー配置のカスタマイズ可能
? 完成品やキットも売ってる
? 超有名
? 2017 Retrieva, Inc. 11
有名な自作キーボード:MiniVan
? 40% keyboardプロジェクトの代表格
? 日本じゃあまり有名ではない?
? Vortex COREみたいなキー配置
? いろんなキー配置ができるのもある
? キー配置のカスタマイズ可能
? 2017 Retrieva, Inc. 12
有名な自作キーボード:Planck
? 40% keyboardプロジェクトの代表格
? ortholinear(直行配列)
? “一般的なキーボードのキーが互い違い (staggered) に配置されてるの
は、かつてのタイプライターの機構上の都合 でしかない”
? ミニマルデザイン
? ホームポジションの隣のキーのみ
? 47?48キーしかない
? キー配置のカスタマイズ可能
? 2017 Retrieva, Inc. 13
有名なキーボード:Let’s Split
? Planck割っちゃいました(通称レツプリ)
? 日本の自作キーボードの火付け役?
? 簡単な自作キットがなく、難易度初級以上
? PCBのセット販売あり
(片方は引っくり返して使う)
? ケースは自作する必要あり
(売ってるのもあるが。。。)
? ファームウェアの焼き込みが必要
? 2017 Retrieva, Inc. 14
個人的な押しキーボード:Gherkin
? 30% keyboard!(ガーキン:ピクルスに使うキュウリ)
? 正直キーが少なすぎて使えるのかわからん
? キットとかないのでPCBの発注が必要
? PCB最小発注単位は5からが多い
? メインのPCBだけで20$以上
? グループバイを狙うのも手
? ファームウェアの焼き込みが必要
? 2017 Retrieva, Inc. 15
個人的な押しキーボード:foobar
? Gherkin割っちゃいました(名前テキトーすぎ。。。)
? Let’s Splitの30% keyboard版(てかパクリ?)
? キットとかないのでPCBの発注が必要
? PCB最小発注単位は5からが多い
? メインのPCBだけで20$以上
? グループバイを狙うのも手
? ファームウェアの焼き込みが必要
? 2017 Retrieva, Inc. 16
自作キーボード基礎知識:メカニカルキー
? 機械式のキースイッチ
? キーボードのスイッチとしていっぱい並べる
? 軸の色で押し心地が違う
? 好みのスイッチで自作するのが醍醐味
? Cherry MXが有名
? 2017 Retrieva, Inc. 17
自作キーボード基礎知識:抵抗
? 電流を制限する電子素子
? オームの法則を思い出せ!
E(V) = I(A) x R(Ω)
? 5Vマイコンだと使うのだいたい2種類
? 1K, 4.7K, 10KΩ:プルアップ抵抗に使う
? 470Ω:LEDに使う(10mAぐらいに制限)
? 2017 Retrieva, Inc. 18
自作キーボード基礎知識:ダイオード
? 電流を一定方向にしか流さない電子素子
? 電流が逆流するのを防ぐ
? 逆につけちゃうと回路が動かなくなるので注意
? 自作キーボードだといっぱい使う
? 2017 Retrieva, Inc. 19
自作キーボード基礎知識:マイコン
? 2017 Retrieva, Inc. 20
? Arduino互換ボードを使うことが多い
? SparkFun社のAtmega32U4搭載ボード(通称:Pro Micro)
? USBシリアル機能が内蔵
? ワンチップでキーボードができちゃう!
? マイコン直接使う場合
? 動作電圧 :5V
? 動作クロック :16MHz
? ピンアサイン :デジタル入出力ができるピンを使用
? ポート名、物理ピン番号、Arduinoピン番号の対応に注意
参考情報:ATmega32U4ピンアサイン
? 2017 Retrieva, Inc. 21
? 物理ピン数:44ピン
? ポート
? PA,PB,PC,PD,PE,PFの6ポート
? ポートごとに機能が違う
? 各ポートに入出力が数個
例)PA1:ポートAの入出力1
? 欠番あり
? Arduinoピン番号も参考に
自作キーボード基礎知識:出力回路
? 2017 Retrieva, Inc. 22
マイコン
GND
VCC
出力:HIGH
端子
マイコン
GND
VCC
出力:LOW
端子
VCC(HIGH)が
出力される
GND(LOW)が
出力される
自作キーボード基礎知識:入力回路
? 2017 Retrieva, Inc. 23
マイコン
端子
GND
VCC
スイッチ回路
オープン時の
電圧が不安定
マイコン
端子
GND
VCC
プルアップ回路
オープン時:HIGH
クローズ時:LOW
マイコン
端子
GND
VCC
プルダウン回路
オープン時:LOW
クローズ時:HIGH
安定
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 24
マイコン
端子
GND
VCC
プルアップ回路
オープン時:HIGH
クローズ時:LOW
GND
VCC
ピ
ン
1
ピ
ン
2
ピ
ン
3
ピ
ン
4
ピ
ン
5
ピ
ン
6
マイコン
キーの数だけ
マイコンの入力が必要
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 25
マイコン
GND
VCC
内部プルアップ
外部抵抗が不要!
マイコン
VCC
入力
出力
GND
出力:LOW
スイッチ押すと
電流が流れる
マイコン
VCC
入力
出力
GND
出力:HIGH
スイッチ押しても
電流が流れない
スイッチの有効化?無効化
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 26
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
入力ピンと出力ピンを使って
スイッチのオンオフを検知
入力ピン数 x 出力ピン数の
スイッチのオンオフを検知可能!
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 27
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
LOW HIGH HIGH HIGH HIGH
確認したい列の出力:LOW
それ以外の列の出力:HIGH
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 28
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
LOW HIGH HIGH HIGH HIGH
入力チェック
入力側は内部プルアップ
スイッチオン:LOW
スイッチオフ:HIGH
入力チェック
入力チェック
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 29
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH LOW HIGH HIGH HIGH
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 30
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH HIGH LOW HIGH HIGH
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 31
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH HIGH HIGH LOW HIGH
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 32
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH HIGH HIGH HIGH LOW
出力側のHIGH/LOWを高速
に切り替えスキャニングする
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 33
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH
オシタ!
LOW HIGH HIGH HIGH
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 34
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH
キタコレ!
LOW HIGH HIGH HIGH
スイッチの状態を検知
スイッチオン:LOW
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 35
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH LOW HIGH HIGH HIGH
オシタ!オシタ!
オシタ!
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 36
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH LOW HIGH HIGH HIGH
キタコレ?
対象のスイッチが押されてな
くても誤認識してしまう。
自作キーボード基礎知識:キーマトリックス
? 2017 Retrieva, Inc. 37
出
力
1
出
力
2
出
力
3
出
力
4
出
力
5
入力1
入力2
入力3
HIGH LOW HIGH HIGH HIGH
キタコレ?
ダイオードで逆流防止!
自作キーボード基礎知識:ファームウェア
? 自作キーボード向けのファームウェアが公開されてる
? TMK Firmware:自作キーボード向けの様々な機能を提供
https://github.com/tmk/tmk_keyboard
? QMK Firmware:TMKの派生、機能拡張されてて便利
https://github.com/qmk/qmk_firmware
? 2017 Retrieva, Inc. 38
自作キーボード基礎知識:FW機能(一部)
? キーマップの切り替え
? 複数のキーマップを定義して切り替えられる(最大32レイヤー)
? ファンクションキー
? 定義したアクションやマクロなどを実行できる(最大32キー)
? キーアクション
? 複数の修飾キーと1つの通常キーの組み合わせなどを1キーで押せる
? レイヤーアクション
? 一時的や永続的にレイヤーの切り替えを行うことができる
? 2017 Retrieva, Inc. 39
本題:foobar作りました!
? 2017 Retrieva, Inc. 40
foobar作成:作業のあらすじ
? PCB発注
? 部品調達
? 組み立て
? ファームウェア書き込み
? 2017 Retrieva, Inc. 41
foobar作成:PCB発注
? 設計ファイルダウンロード
? https://github.com/di0ib/Misc/tree/master/foobar
? foobar1_1.zip, foobarplate.zip, foobarbottom.zip
? 解凍する必要はない
? 2017 Retrieva, Inc. 42
foobar作成:PCB発注
? JLCPCBへ発注
? https://jlcpcb.com/
? 10cm x 10cmの基盤作成が2$?
? 早くて安い!
? 発注チュートリアル
? https://vimeo.com/234046247
? 2017 Retrieva, Inc. 43
? 2017 Retrieva, Inc. 44
さっきのファイル
アップロードするだけ
foobar作成:部品調達(部品リスト)
? キースイッチ(GATERONなど) x 30:AliExpress
? キートップ(DSAなど) x 30 : AliExpress
? ダイオード(1N4148) x 30:秋月電子通商
? マイコン(Pro Micro) x 2:AliExpress
? 5.2mm SMTスイッチ x 2:Amazon
? TRRSジャック(Sparkfun PRT-12639) x 2 :千石電商
? TRRSケーブル(0.5m – 1.0m) x 1 :千石電商
? 12mmスペーサー x 12 :Amazon
? M2ネジ x 24 :Amazon
? 2017 Retrieva, Inc. 45
foobar作成:部品調達
? AliExpress
? 輸送に時間がかかる恐れあり(10日?30日程度)
? 最近はちゃんと届く
? 秋月電子通商
? 平日18:30閉店なので注意
? 千石電商
? ジャックは1号館( Sparkfunコーナー)
? ケーブルは2号館(レジ横あたり)
? 2017 Retrieva, Inc. 46
foobar作成:組み立て(手順)
? キースイッチ並べ ← はじめにやる、向きに注意
? ダイオードつける ← 向きに注意
? TRRSジャック、SMTスイッチ、ピンヘッダつける
? キースイッチつける
? マイコンつける ← 必ず最後につける、向きに注意
? 底用基盤ねじ止め
? 2017 Retrieva, Inc. 47
foobar作成:組み立て(キースイッチ並べ)
? 2017 Retrieva, Inc. 48
foobar作成:組み立て(キースイッチ並べ)
? 2017 Retrieva, Inc. 49
foobar作成:組み立て(キースイッチ並べ)
? 2017 Retrieva, Inc. 50
注意:向きを揃える
foobar作成:組み立て(ダイオード)
? 2017 Retrieva, Inc. 51
向きに注意
■にダイオードの線を合わせる
キースイッチ側につける
(逆に付けるとマイコンにぶつかる)
はんだ付け後
ピンヘッダの足を切る
(基盤にぶつかる)
foobar作成:組み立て(ピンヘッダなど)
? 2017 Retrieva, Inc. 52
表面実装のはんだ付けテクニック
?部品を置く前に1箇所はんだを盛る
?部品をおいて盛っておいたはんだを温める
?他の部分をはんだ付けする
キースイッチ側と逆に付ける
しっかり押し付けてはんだ付けする
foobar作成:組み立て(キースイッチつけ)
? 2017 Retrieva, Inc. 53
必ずマイコンをつける前に
はんだ付けする
foobar作成:組み立て(マイコンつけ)
? 2017 Retrieva, Inc. 54
マイコンの向きに注意
Bar側はマイコンが裏になるように付ける
foobar作成:組み立て(マイコンつけ)
? 2017 Retrieva, Inc. 55
マイコンの向きに注意
foo側はマイコンが表になるように付ける
foobar作成:FW書き込み(環境構築)
? git
$ brew install git
? avrdude
$ brew install avrdude –with-usb
? ファームウェアのダウンロード
$ git clone https://github.com/di0ib/tmk_keyboard
? カレントディレクトリの変更
$ cd tmk_keyword/keyboard/foobar
? 2017 Retrieva, Inc. 56
foobar作成:FW書き込み(左側)
? 左側(メイン基板の裏がbar)セットアップ
マイコンにUSBケーブルつなぐ
$ COM_PORT=/dev/tty.wchusbserial1410 
make eeprom-left(3秒以内に基板のSMTスイッチ押す)
$ COM_PORT=/dev/tty.wchusbserial1410 
make program(3秒以内に基板のSMTスイッチ押す)
? 2017 Retrieva, Inc. 57
foobar作成:FW書き込み(右側)
? 右側(メイン基板の裏がfoo)セットアップ
マイコンにUSBケーブルつなぐ
$ COM_PORT=/dev/tty.wchusbserial1410 
make eeprom-right
(3秒以内に基板のSMTスイッチ押す)
$ COM_PORT=/dev/tty.wchusbserial1410 
make program
(3秒以内に基板のSMTスイッチ押す)
? 2017 Retrieva, Inc. 58
foobar作成:FW書き込み(動作確認)
? 左側のマイコンにUSBケーブルをつなぐ
? 右側と左側をTRRSケーブルでつなぐ
? パソコン側でキーボードの設定を行う(USキーボードに設定)
? 2017 Retrieva, Inc. 59
? 2017 Retrieva, Inc. 60
デフォルトキーマップ:レイヤー0
Retrieva, Inc.
A S D F G H J K L ESC
Q W E R T Y U I O P
Z X C V BS SPC B N M ENT
61
デフォルトキーマップ:レイヤー0 長押し
Retrieva, Inc.
LCTL LALT TL3 TL4 TL2 TL1 TL5 RALT RCTL RSFT
62
デフォルトキーマップ:レイヤー1
Retrieva, Inc.
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10
1 2 3 4 5 6 7 8 9 0
TRNS TRNS TRNS TRNS DEL TRNS TRNS TRNS TRNS TRNS
63
デフォルトキーマップ:レイヤー2
Retrieva, Inc.
F11 F12 TRNS TRNS TRNS TRNS TRNS TRNS TRNS TRNS
! “ # $ % & ‘ ( ) 0
TRNS TRNS TRNS TRNS DEL TRNS TRNS TRNS TRNS TRNS
64
デフォルトキーマップ:レイヤー3
Retrieva, Inc.
TRNS TRNS TRNS TRNS TRNS , . / ; `
TRNS TRNS TRNS TRNS TRNS - = [ ] ?
TRNS TRNS TRNS TRNS TRNS TRNS ← ↓ ↑ →
65
デフォルトキーマップ:レイヤー4
Retrieva, Inc.
< > ? : “
_ + { } |
TRNS HOME PGDN PGUP END
TRNS TRNS TRNS TRNS TRNS
TRNS TRNS TRNS TRNS TRNS
TRNS TRNS TRNS TRNS TRNS
66
? 2017 Retrieva, Inc.

More Related Content

キーボード自作のススメ