Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
拡張性/自由度の高いキー押下検出システムを作った話
Search
すら
February 18, 2024
13
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
拡張性/自由度の高いキー押下検出システムを作った話
すら
February 18, 2024
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.3k
RailsConf 2023
tenderlove
30
1.6k
Google's AI Overviews - The New Search
badams
0
1.6k
Paper Plane
katiecoart
PRO
5
54k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Transcript
拡張性/自由度の高い キー押下検出システムを 作った話
・コロナ禍の前頃に作っていた実証機を紹介します ・少し技術的な話が多くなってしまうかも・・・ ・眠くならないように頑張ります ざっくり
自己紹介 ・ハンドルネーム:すら ・仕事:都内でSEやってます ・趣味:音楽とかプログラミングとか電子工作とか ・ほか ・回路周りは正直素人レベルです.. 😭 お手柔らかに..
キッカケ ・2018年頃に友人から自作キーボードの世界を知ることに ・一緒にイベントに回ったり色んなキボボを見て回ったり ・次第に・・・ ・自分も一から設計してみたい! ・でも既存の設計をなぞるだけだと面白みに欠ける.. ・見た目がユニークで、技術的にも面白くて、 それでいてコミュニティに貢献できそうなもの..
そうだ
配線を超単純化して どんな形のキーボードでも 自由自在に作れるシステムを作ろう...
結果、生まれたもの ・技術実証用のデモボード ・二本の電源線を接続していくだけで キー押下を拾えるシステム ・スキャンレートは100キーあたり 1000Hz以上(たしか) ・仕組み上、ゴーストや
ロールオーバーなし
・「接続」の特徴 ・回路的に完全並列 ・IN/OUTの概念なし ・「回路」の特徴 ・コンデンサとダイオードで電力を維持 ・抵抗を挟んだ電力を マイコンが吸い込んで信号を生成 ・「通信」の特徴 ・親マイコンと子マイコンがやり取り ・全ての子が一意のIDをもつタイプ
・子は親から信号が飛んできた時のみ返答
・C言語とインラインアセンブラで実装 ・通信のコア部分はアセンブラで ・その他の部分はC言語を使って 吐かれるアセンブラを見ながら記述 ・プロトコルは自前で 少し変わった手法で通信 ざっくりとした内部実装
このシステムによって何を実現出来るか
たとえば・・・ LEDボードのようにキースイッチを 好きな場所にブスブス刺して 完全に自由な配置を作れたり... 出典:https://www.amazon.co.jp/dp/B09MT57M61
こういう金属棒を2つだけ繋げていって スチームパンク風なキーボードを 作れたり.. 出典:https://www.netsea.jp/shop/562263/parts-metalcharm161
それこそ「粘土をこねた」ような 複雑な形状のキーボードでも デザインの制約を受けずに 並列に繋げるだけで機能したり..
つまり・・・ デザインの幅が一気に広がります
公開前後にあったこと ・DUMANG DK6 の登場 (2020年1月ごろ) ・スイッチを自由な場所に配置できるキーボードが登場 ・システムがほぼ出来上がっていた頃だったので、 わりと心理的ダメージが大きかった出来事・・・ ・これは正直、自分がだらだら作業しすぎたせい ・コロナ禍の到来
(2020年3月ごろ) ・次の大きなイベントでこのシステムをベースにした キーボードを作って出そうと計画していたところにコロナ禍が直撃 ・出すはずだったイベントも無くなってしまい計画は自然消滅・・・
ついでに、もう少し込み入った技術のお話 ・一般的な通信 ・信号の立ち上がり/立ち下がりを基準に01を決定 ・今回のシステムの通信 ・立ち上がり/下がり時の時間差を基準に01を決定 ・メリット ・同期をとる必要がないため 送信側で任意のレートに動的に可変できる ・速度とエラー率を自律的にキャリブレーション可能 ※イメージ図
・子マイコンの固定IDの長さ ・2byte = 16bit ・0101010101010101 親が子マイコンから押下情報を取得するとき 固定ID(16bit)の信号を都度送るのは無駄が大きい・・・ そこで・・・ 起動時に子の固定IDをキー個数分のIDに再割り当て (キーの数が30個ならID:0~29)
・全ての子マイコンでカウント値を保持 ・親が1パルスを送出して全ての子マイコンがカウント+1 ・自分の再割り当てIDに一致しているかを確認 ・押下情報を返答 ・従来のスキャンレートの10倍近くの速度を達成
これからのこと ・対応したいもの ・エンコーダー類ほか ・もう少し入力の多いマイコンを使えば キースイッチに限らず様々な入力を扱えるようになる ・LEDを光らせる ・電流の課題があって回路が一気に複雑化する可能性あり ・実装の突き詰め ・キーIDの再割当てロジックの改良 ・ドキュメント/ソースコードの整備
いずれ綺麗に整備して公開できたらな
みんなも面白いキーボードを作ってみよう!
ご清聴ありがとうございました