パンダスルーホール ビルドガイド
- 抵抗とコンデンサを取り付ける
- TRRSジャックを取り付ける
- LEDを取り付ける
- スライドスイッチを取り付ける
- ICソケットを取り付ける
- MCP23017を取り付けて全てのキーが反応するか動作確認する
- スイッチソケットを取り付ける
- 片側に予備ハンダする
- ソケットを乗せてはんだを温める
- 反対側の端子を温めながら内側からハンダを流し込む
- 十分にはんだを流し込むと基板上のパッドを伝ってこて先にはんだが付く
- 動作確認する
- ゴム足を付ける
写真
LUFA MassStorage Bootloaderを使う
環境
- Ubuntu 18.04
開発者がすること
cd qmk_firmware/lib/lufa/Bootloaders/MassStorage
- 40% Keyboards: Self Flashing Planck に沿って
makefile
を書き換える
MCU = atmega32u4 ARCH = AVR8 BOARD = LEONARDO F_CPU = 16000000 FLASH_SIZE_KB = 32 BOOT_SECTION_SIZE_KB = 4
BootloaderMassStorage.c
を適切に書き換える#if (BOARD == BOARD_LEONARDO)
から#elif ((BOARD == BOARD_XPLAIN) || (BOARD == BOARD_XPLAIN_REV1))
までの間に書くPORT
がプルアップ,DDR
が出力,PIN
が入力値を表す?(わかってないけど雰囲気で書き換えたら動いた)- 適当にビット演算して代入してください
col0がF4, row0がB1であり, ダイオードがcol2rowのときの例:
#if (BOARD == BOARD_LEONARDO) PORTF |= (1 << 4); //F4を入力にしてプルアップ DDRB |= (1 << 1); // Set pin B1 as low B1をGNDに PORTB &= ~(1 << 1); Delay_MS(25); JumpToApplication = ((PINF & (1 << 4)) != 0); //F4がfalseならブートローダーを起動 /* Disable pull-up after the check has completed */ PORTF &= ~(1 << 4);
Arduino as ISPが /dev/ttyACM0
のとき
avrdude -p m32u4 -c avrisp -P /dev/ttyACM0 -b 19200 -e -v avrdude -p m32u4 -c avrisp -P /dev/ttyACM0 -b 19200 -U lfuse:w:0xff:m -U hfuse:w:0xd8:m -U efuse:w:0xc9:m -v
avrdude -p m32u4 -c avrisp -P comXXX -b 19200 -B 4 -U flash:w:"BootloaderMassStorage.hex" -v
- qmk_firmwareを
make keyboard:keymap:flashbin
としてmakeFLASH.bin
ができる
- ユーザーに
FLASH.bin
を渡す
ユーザーがすること
FLASH.bin
を受け取る- 指定されたキーを押しながらキーボードを接続
LUFA BOOT
として認識される
Ubuntu
FLASH.bin
をsudo dd if=FLASH.bin of=/dev/sdb seek=4
で転送(LUFA BOOT
が/dev/sdb1
のとき)LUFA BOOT
をアンマウントする
Windows
FLASH.bin
をドラッグ&ドロップするLUFA BOOT
を「安全に取り外し」- キーボードを抜いて再度接続する
まとめ
Ubuntuでドラッグ&ドロップで転送する方法を見つけられなかったのが悔しい。
ツールをインストールすることなくOS標準のコマンドで転送できるだけで価値があると思う。
.binを作るWebアプリを誰か作ってください(他力本願)
参考
キーボードファームウェアに実装したい機能
- 文字を打つ
- 音量調節
- 一時的レイヤー機能
- 多段階レイヤー機能
- 長押しでレイヤー, 短押しで文字
- マウスエミュレーション
CircuitPythonで制御するキーボードを作りたい
なぜ
- 接続するとストレージとして認識されるからコードをドラッグ&ドロップするだけで動作させられる
- 環境構築が不要
- キーマップの変更がとても簡単になる
実験に必要なもの
- Trinket M0
- ROM容量が少ないと判断した場合, 容量の大きいナントカExpressが必要
- 処理速度が足りない場合はナントカM4に変更
- IOエクスパンダ2つ
- 分割型で両手とも同じ機器構成にしたいから
- いわゆるModulo モジュラーな自作キーボードアーキテクチャを求めて - たのしい人生
- I2Cのプルアップに必要な抵抗は手元にある
- スイッチ適量
- アンチゴーストしないのでとりあえずダイオードは不要
- Moduloの仕様書
本番に必要なもの
- 基板×2
- ICソケット×2
- TRRSジャック×4
- TRRSケーブル×2
- Kailhスイッチソケット×40
- スイッチ×40
まとめ
追記(2019/02/05)
Trinket M0でLSFT_T
, LCTL_T
を実装したあとTAP_DANCE
を実装しようとしたらメモリ不足でエラーになった。M4機が必要である。