用到的东西
系列文章列表
- 為什么要自己做一把藍牙機械鍵盤
- 用到的東西
- 制作左手
- 設(shè)置左右手藍牙BLE
- 制作右手
- 軸體焊接及供電模塊
- 后記
硬件相關(guān)
焊接工具
- 電烙鐵
- 烙鐵架
- 高溫海綿: 在水中充分浸泡, 擠干后放置在烙鐵架
- 焊錫
- 松香: 助焊劑, 焊出來的點比較亮, 不容易虛焊
- 吸錫槍: 如果焊壞了, 將焊點的焊錫吸走, 重新焊
- 電工黑膠帶: 有時候用膠帶輔助固定比較好焊
PCB板等
- PCB板: github上有PCB圖紙ErgoDone, 需要找淘寶店打印, 用軟件kicad打開具體的文件查看PCB圖紙
- 1n4148二極管 * 76: 規(guī)定電路板上電流的走向, 避免按一個鍵, 電流走到其他路徑, 導致其他按鍵也認為被觸發(fā)了, 可以多買些.
鍵盤軸體鍵帽等
- 喜歡的軸休 * 76: 比如我這里大部分是茶軸, 幾個是青軸
- 鍵帽: 4個2U的, 12個1.5U的, 60個1U的, 這里我用的白色無刻的
- PCB衛(wèi)星軸2U * 4: 在焊軸前, 安裝和調(diào)試好衛(wèi)星軸
芯片等
- Arduino Pro Micro * 2: 左右手各一塊, 主控芯片, 其他名字有min leonardo, ATMEGA32u4. 從淘寶上買, 一般會送直腳排針
- MCP23017: IO擴展模塊,因為右手需要接入多塊芯片或模組及處理鍵盤事件, 導致IO口不夠, 所以用這個來擴展IO口. 使用說明datasheet, 需要配合2.2K歐的電阻使用.
- 2.2K歐色環(huán)電阻 * 2: 配合MCP23017使用
- HM-10帶底板 * 2: 左手的Arduino Pro Micro將識別出來的按鍵事件發(fā)送給左手的HM-10, 然后左手的HM-10通過藍牙將事件發(fā)送給右手的HM-10, 右手的HM-10發(fā)送給Arduino Pro Micro, 然后發(fā)送Bluetooth HID模組
- Bluetooth HID模組: HC-03帶底板, 這里用的HC-03刷上RN42的固件, 用來給電腦發(fā)送鼠標鍵盤事件, 可以自己制作, 參考教程, 也可以直接從淘寶上買
電源模塊相關(guān)
- 鋰電池 * 2: 用來給芯片供電, 厚度不要超過6mm, 這里我選了一個厚度6mm, 寬度6mm, 長度10mm, 5000mAh, 并且?guī)ПWo板的電池
- TP4056充電模塊 * 2: 用來給鋰電池充電, 我選的type c口的
- 撥動開關(guān) * 2: SS12D10, 用來控制電源的開關(guān)
- 易拉膠 * 2: 用來固定電池, 使用易拉膠可以方便以后更換電池, 這里我用是蘋果6P的易拉膠
外殼等
- 亞克力外殼: 我在鍵盤上加了搖桿, 這是可選的, 如果不想要搖桿, 可以使用這個不帶搖桿的CAD圖紙, 如果你也想加上搖桿, 用這個帶搖桿的CAD圖紙, 材料是亞克力, 同樣需要找淘寶店加工, 費用大概在120元左右. 可以用AutoCAD打開并編輯這樣的文件, 新用戶有30天試用, 還是比較方便的. 把膜撕了之后, 就是右手透明的樣子, 很好看.
- M2雙通銅柱19MM * 14: 用來固定外殼
- M2螺絲8MM * 28: 用來固定外殼
連接線
- 彎腳排針: 為了避免直接用跳線焊接到芯片或者模組的引腳上, 先焊接上排針, 然后用杜邦線連接, 方便以后更換芯片, 如果覺得不牢靠, 可以用黑膠布再固定一下
- 母對母杜邦線: 用來連接芯片模組和PCB等. 我用到了10CM, 15CM 20CM三種長度的. 當然也可以直接用跳線焊死, 就不用上面的彎腳排針了. 可以買一個公對公的杜邦線, 在沒有焊上軸之前, 當成導線測試二極管焊得對不對.
其他
- USB轉(zhuǎn)Micro USB * 2: 在測試的時候, 同時給兩塊Arduino Pro Micro供電需要用到, 也用來給芯片燒錄程序, 所以要買那種支持數(shù)據(jù)傳輸?shù)?
- 330歐色環(huán)電阻 * 3: 避免電流過大燒壞LED燈.
- 234 LED方燈 * 3: 放在鍵盤上, 可以用來提示CAPS_LOCK, 或者自定義提醒鍵盤布局變化.
- 納米雙面膠: 用來固定芯片或者模組, 粘在外殼上
可選
-
搖桿: 用來控制鼠標, 類似于thinkpad上的小紅點
-
小紅帽: 因為上面的搖桿自帶的搖桿帽太高了, 使用起來不舒服,所以用thinkpad小紅點上的小紅帽替代, 也可以先試試原裝的蘑菇帽, 覺得不行了, 再換成小紅帽試試(可惜沒有矮點的蘑菇帽, 原裝的蘑菇帽手感非常 好), 不是成熟的方案, 我自己也不滿意, 如果有更好的方案, 請指教.
-
502膠水: 因為小紅帽和搖桿不匹配, 塞了點東西, 用脫水粘上
-
隱形筆記本支架: 讓鍵盤有一個比較舒服的角度
-
鼠標墊: 因為加了一塊電池的鍵盤太厚了, 所以加了鼠標墊拖著手, 一手一塊不夠厚, 所以一手兩塊
-
陽極鋁定位板: 我在使用中摔過一次, 定位板碎了, 因為定位板是和PCB板焊在一起的, 更換起來很麻煩, 所以這次用了金屬材料, 陽極氧化鋁, 如果你也需要, 可以用這個定位板的圖紙, 其他不變.
軟件相關(guān)
使用了Arduino IDE, 基于arduino_tmk_keyboard.
代碼使用方法是: 從Release里下載bluetooth_ergodone.zip, 在Arduino IDE里, 通過"項目" -> “加載庫” -> “添加.zip庫”, 把本項目導入.
導入完成后, 還需要
然后點Arduino IDE左上角的"上傳"按鈕, 就可以將代碼上傳到主控芯片里了.
在右手的示例程序里right_hand.ino, 可以通過ERGODONE_KEYMAP去定義自己的鍵盤布局, 支持多個鍵盤布局的切換, 比如我定義了三層, 第三層是鼠標的操作. 還可以自己定義一些宏操作, 比如在第二層里自定義了FN6, 按下這個鍵, 就會輸出Hello, World. 更多玩法, 參考tmk keymap.
并且也是在右手的程序里right_hand.ino通過各種hook函數(shù)控制LED燈.
我自己定義鍵盤布局里, 左手CAPS_LOCK按鍵的位置被我換了, 按成按著的時候, 會切換到第三層, 第三層是鼠標操作, 在第三層, 按下HJKL會移動鼠標. 原來Z鍵的位置, 被我換成按下切換到第二層, 這時候HJKL就變成方向鍵, 原來的Z向右移了一位.
最后的成品
正面
背面
側(cè)面
用起來的樣子
續(xù)航測試, 右手大概在360個小時之后, 開始出現(xiàn)連接不穩(wěn)定, 左手這時候還能繼續(xù)用, 左手沒有繼續(xù)測試下去.
測試過的能連接上的設(shè)備包括Mac電腦, windows電腦, ipad, iphone, 小米6.
延遲測試, 不會有明顯的延遲, 嘗試使用程序測試, 左手某個按鍵按下, 從Arudino打印的時間, 對比電腦上python監(jiān)測程序打印出來的時間, 三四十毫秒到八九十毫秒都有. 不過應(yīng)該是大概二十毫秒, 考慮到藍牙傳輸?shù)难舆t(七點五毫秒發(fā)送一次按鍵事件, 這里乘以二, 因為有兩個), 程序里去抖動延遲五毫秒(由于機械軸觸發(fā)的原理是兩個彈片互相接觸, 機械接觸的話難以避免碰撞, 又因為程序
檢測的速度極快, 所以這段極小的碰撞時間內(nèi)程序檢測到的狀態(tài)是不穩(wěn)定的, 會被認為是按下松開按鍵多次). 網(wǎng)上有人用拍視頻的方式計算, 用視頻里按下按鍵的幀數(shù)到屏幕顯示出來的幀數(shù), 計算出
對應(yīng)的時間. 比較麻煩, 放棄.
總結(jié)
- 上一篇: 使用Nordic芯片的手环OTA(and
- 下一篇: iso8583协议说明