働きたくない

5000兆円欲しい

Helixを作った

Helixという自作キーボードを作った際のメモです。

f:id:vita_brevis:20190601215423p:plain

いいところ・悪いところ

いいところ

  • 左右分離キーボード、間に皿を置くことで、食事中もPCができる!!! (新たな発見…絶対需要ある)
  • 人生において「キーボードを自作した」という実績を解除できる
  • 好きなスイッチを、毎日好きなだけ押せる

悪いところ

  • 基板を左右別々に専用のものにしたほうが分かりやすそう
  • チップLEDのハンダ付けは確かに初心者向けではない…LEDの予備が片手毎3つしかないことを考えると、あまり練習もできない

どうでもいいところ

  • ソフトウェア・インフラ・ネットワークエンジニアの人でIoTに手を出した人の集まりと、組み込み系エンジニアでIoTに手を出した人の集まり、全然繋がりがなさそう

購入

遊舎工房で購入

yushakobo.jp

説明文に以下のようにあるように、いくつかの部品を別に購入する必要があります。

組み立てにはこの他にキースイッチとキーキャップが必要です。 また左右の接続の為のTRRSケーブルと、PCと接続するためのUSBケーブルが別途必要です。

私は、キースイッチとしてKailhロープロスイッチを買いました。 5行版はキーが64個必要だったため、割とバカにならないお値段になってしまいました。

yushakobo.jp

キーキャップには「Kailh用刻印あり」のものを購入しました。 作っていて分かりましたが、Helixは、例えTab, Shift等のキーでも全部キー幅が同じなのですが、このキーキャップはTab等は幅が異なるため、一部使えないです…。

yushakobo.jp

作成

ビルドガイド

github.com

詰まった点:

  • 本当にダイオードとLEDは裏面からの実装で良いのか不安になる(本当にそれでいい)
  • LEDのハンダ付け(後述)
  • アクリル板の保護シートを剥がし忘れた
  • Arduino Pro Microへの書き込み(後述)
  • 左右どっちにUSBケーブルを接続すればよいのか分からない(答え:左?。少なくとも基板上で指定する場所はなく、ソフトウェアで認識?)

やっといたほうが良いこと:

  • ダイオードは片側だけハンダ付けしてカソードが正しいことを確認
  • LEDは全部付けたら点灯を確認
  • キーキャップは1列付けたくらいで認識することを確認(後述)

(参考)作業環境

LEDのハンダ付け

温度

LED(SK6812MINI)は、素子の樹脂が高温だと溶けてしまうので、本当に220度程度でのハンダ付けが必要です。

LEDのデータシート p.10を見てみると、リフローはんだ付けでの最高温度(Tp)は、有鉛で215℃、鉛フリーで255℃となっています。 そのため、私はコテ温度を245℃にしてハンダ付けしました(1つの故障もなくできました)。

https://cdn-shop.adafruit.com/product-files/2686/SK6812MINI_REV.01-1-2.pdf

結局、以下のようにやると効率が良かったです:

  • まずは基板側のランドすべてに予備ハンダ
  • 低温にしてLEDをハンダ付け(この際、GNDはベタグラウンドに熱を奪われるため、最後に付ける)

高さ調節はしませんでした。そもそもLED全部が基板の穴に押し込めないようになっているため。

動作確認
  • 一旦片手分を全部ハンダ付け(Arduinoに近い側のN個だけでも良いかも?) → ファームウェア書き込み済みArduino Pro Micro(スプリングピンヘッダ使用のため基板に抜き差し自由)をUSB接続すると可能

(参考) emizping.hatenablog.com

(※逆に、LEDごとに電圧をかけて動作確認が出来なさそうです。∵このLEDはDinにデジタルデータ入力が必要)

キーの動作確認

1行ごとに、キーの入力有無を視認できるソフト(kbv:https://forest.watch.impress.co.jp/docs/review/1068076.html)で確認

Arduino Pro Microへの書き込み

Windows機で普通にできました。

参考:ファームウェアの書き込みガイド

github.com

書き込みタイミング
  • Helix基板上のResetボタンを 二度 押し
  • リセット後8秒程度だけ、Bootloaderとして認識される(QMK上でもCaterina device connected: Arduino Micro bootloader (COM8)のように表示されるはず…ただつなげたり、8秒経つとArduino Micro (COM7)のようになる)(2020/07/05 補足 必ずしもデバイス認識音が鳴るとは限らない)
  • 間髪を入れずFlashボタンを押す

最初戸惑うかも。デバイスマネージャも見ながらやるといいかも

参考:learn.sparkfun.com

2020/07/05 補足

リセット時のデバイスマネージャ画面を録画してみました。参考にしてみてください。

youtu.be

失敗時のログ:Arduino Microとして認識された場合

*** Caterina device connected: Arduino Micro (COM7) -- 0000:0000:0000 {4d36e978-e325-11ce-bfc1-08002be10318}
*** Caterina device connected: USB 入力デバイス -- 0000:0000:0000 {745a17a0-74d3-11d0-b6fe-00a0c90f57da}
*** Caterina device connected: USB Composite Device -- 2341:8037:0008 {36fc9e60-c465-11cf-8056-444553540000}
*** Attempting to flash, please don't remove device
>>> avrdude.exe -p atmega32u4 -c avr109 -U flash:w:"C:\Users\***\Desktop\helix_rev2_default_oled_backlight.hex":i -P
C:\Users\
***\AppData\Local\QMK\QMK Toolbox\0.0.10\avrdude.exe: option requires an argument -- P
Usage: avrdude.exe [options]
Options:
-p Required. Specify AVR device.
(中略)
-? Display this usage.
avrdude version 6.3, URL: http://savannah.nongnu.org/projects/avrdude/

f:id:vita_brevis:20190601213348p:plain
BootloaderではなくArduino Microとして認識されるときのログ。このように引数が足りないと言われるが、どちらにせよ失敗する

成功時のログ:Arduino Micro Bootloaderとして認識された場合

*** Caterina device connected: Arduino Micro bootloader (COM8) -- 2341:0037:0008 {4d36e978-e325-11ce-bfc1-08002be10318}
*** Attempting to flash, please don't remove device
>>> avrdude.exe -p atmega32u4 -c avr109 -U flash:w:"C:\Users\***\Desktop\helix_rev2_default_oled_backlight.hex":i -P COM8
avrdude.exe: warning at C:\Users\
***\AppData\Local\QMK\QMK Toolbox\0.0.10\avrdude.conf:14976: part atmega32u4 overwrites previous definition
C:\Users\****\AppData\Local\QMK\QMK Toolbox\0.0.10\avrdude.conf:11487.
Connecting to programmer: .
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=128 bytes.
Programmer supports the following devices:
Device code: 0x44
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% -0.00s
avrdude.exe: Device signature = 0x1e9587 (probably atmega32u4)
avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file "C:\Users\fenrir\Desktop\helix_rev2_default_oled_backlight.hex"
avrdude.exe: writing flash (27572 bytes):
Writing | ################################################## | 100% 2.07s
avrdude.exe: 27572 bytes of flash written
avrdude.exe: verifying flash memory against C:\Users\fenrir
\Desktop\helix_rev2_default_oled_backlight.hex:
avrdude.exe: load data flash data from input file C:\Users\fenrir\Desktop\helix_rev2_default_oled_backlight.hex:
avrdude.exe: input file C:\Users\fenrir
\Desktop\helix_rev2_default_oled_backlight.hex contains 27572 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 0.27s
avrdude.exe: verifying ...
avrdude.exe: 27572 bytes of flash verified
avrdude.exe done. Thank you.
*** Caterina device disconnected: Arduino Micro bootloader (COM8) -- 2341:0037:0008 {4d36e978-e325-11ce-bfc1-08002be10318}

f:id:vita_brevis:20190601212511p:plain