SparkFun Pro Microを使って自作キーボードをUSB-C化した記録
USB-C 対応の SparkFun Pro Micro を購入しセットアップするときに躓いたので、そのときの手順を記録します。
前置き(飛ばしてください)
自作キーボードの世界と出会って早 1 年。
割れキーと自由なレイアウトはタイピングをとても快適にしてくれました。
そんな中、不満点が出てきたのは持ち運びのこと。
割れキーはばらしたり組み立てたり、ケーブルが必要だったり、ラップトップの上に起きにくかったりしてあまり持ち運びに向いてないことが分かってきました。
そんな中先日素晴らしいキーボードと出会い、外用として 2 台目の自作キーボードを作成しました。
cocot46
というこのキーボードは。
- 非分割
- 40%
- カラムスタッガード配列
- 親指キー4 つ
- 左右で腕が多少開くように逆ハの字型になっている
という、自分が外用キーボードに求めるすべての要素を兼ね揃え、
それだけでなく、
- トラックボール、ロータリーエンコーダ搭載
- アクリル積層プレートとシリコンシートのオプションあり
という特徴も持ち合わせたオールインワンキーボードでした。
使用感の満足度がとても高かったこともあってか、逆に不満点が浮き彫りになってきました。
microUSBとUSB-Cの変換ケーブルは種類が少ない
これに尽きます。
自分は以下の条件を満たすケーブルが欲しかったのですが、探しても探しても見つかる気配がありませんでした。
- USB-C 〜 microUSB の端子になっている(Macbook に直接接続できる)
- Macbook 側は通常の L 字端子
- microUSB 端子はマグネットの L 字端子
変換端子等も検討しましたがやはりスマートでない。。
それに対して USB-C 〜 USB-C のケーブルだと。
- L 字 〜 ストレートのケーブル
- ストレート → L 字変換のマグネット端子
を購入するだけでそれが実現できそうではないか!
※実際に購入したものはこちら。
ということで ProMicro を USB-C 対応したものに変更することにしました。
まずは買い物
遊舎工房さんで購入。
※後々気づきましたが別でもう少し安く買えるかも?
セットアップ手順
Chrome に日本語訳してもらいながら読みました。
だいたい飛ばし飛ばし読んでます。
1. ドライバーインストール
手順が書かれてますが同じようにセットアップアシスタントの画面は開きませんでした。。
問題ないのかも?
Windows の方は 1 つ上の見出しをどうぞ。
2. Arduino
こちらに書かれている通りですが、Arduino というソフトをインストールして起動します。
次に「設定」を開き、追加のボードマネージャのURL
の欄に。
https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
を入力し、「OK」でウインドウを閉じます。
「ツール」 > 「ボード」 > 「ボードマネージャ」
を選択。
検索欄に sparkfun
と入力すると SparkFun AVR Boards
という項目が出てくるので「インストール」をクリック。
※↓画像はインストール済みの状態です。
「ツール」から、
- 「ボード」=
「SparkFun AVR Board」 > 「SparkFun Pro Micro」
- 「プロセッサ」=
5V
のほう - 「ポート」=
/dev/su.usbmodemXXXXXX
みたいなやつ(COM ポート?)
を選択。
動作確認例として挙げられている以下コードを Arduino の初期画面にコピペしてから「マイコンボードに書き込む」のボタンを押すとしばらくすると LED が交互に点灯するようになります。
※このステップは飛ばせるかも。
/* Pro Micro Test Code
by: Nathan Seidle
modified by: Jim Lindblom
SparkFun Electronics
date: September 16, 2013
license: Public Domain - please use this code however you'd like.
It's provided as a learning tool.
This code is provided to show how to control the SparkFun
ProMicro's TX and RX LEDs within a sketch. It also serves
to explain the difference between Serial.print() and
Serial1.print().
*/
int RXLED = 17; // The RX LED has a defined Arduino pin
// Note: The TX LED was not so lucky, we'll need to use pre-defined
// macros (TXLED1, TXLED0) to control that.
// (We could use the same macros for the RX LED too -- RXLED1,
// and RXLED0.)
void setup()
{
pinMode(RXLED, OUTPUT); // Set RX LED as an output
// TX LED is set as an output behind the scenes
Serial.begin(9600); //This pipes to the serial monitor
Serial.println("Initialize Serial Monitor");
Serial1.begin(9600); //This is the UART, pipes to sensors attached to board
Serial1.println("Initialize Serial Hardware UART Pins");
}
void loop()
{
Serial.println("Hello world!"); // Print "Hello World" to the Serial Monitor
Serial1.println("Hello! Can anybody hear me?"); // Print "Hello!" over hardware UART
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(1000); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED OFF
TXLED1; //TX LED macro to turn LED ON
delay(1000); // wait for a second
}
3. QMK Toolbox
ファームウェアを書き込む前にコンスルーでキーボードと接続します。
SparkFun Pro Micro はコンスルー対応(?)していて、Pro Micro 側にもはんだ付けが不要です。
上下方向やコンスルーの接続向きは通常の Pro Micro と同様です。
次にファームウェアを書き込むために hex ファイルを用意します。
※cocot46 はビルドガイドから。
- QMK Toolbox の
Local file
の欄で同ファイルを選択 -
Auto-Flash
にチェックを入れて - 本体のリセットスイッチをダブルクリック
4. あとはリマップ等
ここまでですでにキーボードとして動作するようになりました!
あとは REMAP 等を使ってレイアウトを設定すれば完了です!
お疲れ様でした!🍵
余談
REMAPでのレイヤー切り替えキー
REMAP を初めて使ったのですが、デフォルトで設定されているレイヤーキー用の、
無変換 Layer(1)
変換 Layer(2)
の設定はキーの Tap と Hold を検出している関係でか、Tap の設定を切っても Layer キーとして判定されるまでにちょっと時間がかかってストレスがありました。
HOLD/TAP
ではなく、通常の KEY
で Keycode=TT(1)
等に設定することで瞬時にレイヤーキーとして動作させることができます。
(キーマップを公開しました)
※英/かな切り替えは、Karabiner を使って左右 Cmd キーの Tap に割り振っています。
Macbookのキーボードをオフにする
もともと外用にこのキーボードを購入したのですが、Macbook 上に乗っける尊師スタイルではキーボードが押されてしまうサイズ感でした。
これも Karabiner の device 設定で cocot46 を接続したら Macbook のキーボードがオフになるように設定することで自動的に切り替わるように設定できました。
参考記事
Discussion