前一陣老友提了個需求,感覺現在市面上的鍵盤都不咋好用,想搞一套自己隨意定義鍵位的機械鍵盤。稍微查了一下,現在市面上這種客製化鍵盤基本都是arduino開發的一些方案,倒是也沒啥不好,就是感覺爲了把燈做的更絢麗就又加了一塊MCU,然後還沒有什麼雙模的開源解決方案,其中最讓人受不了的就是,鍵位設定很難受,朋友表示作爲一個資深程序員無法接受這種訂製不到位的鍵盤,於是乎我們抽了幾天時間,重新開發了一套鍵盤。這份博客就是我用自己的鍵盤寫的,感覺還不錯。下面分幾段來慢慢記錄這個鍵盤的完成過程。
先附鏈接:https://github.com/BG2CRW/CoopBoard
定位板生成網站http://builder.swillkb.com/
先用上面網站生成配列,這是我的40%鍵盤配列,個人追求小且好用
修改完成後就複製raw data,然後打開下面的網站
接下來就是導入AD中
選文件-導入即可
生成特定外形的PCB
再接着就是個精細的機械操作了,選中軸的器件拖動到對應的鍵位上,可以按住ctl加鼠標滾輪放大縮小,並且可以按方向鍵精確調整位置,總之這裏的位置一定要精確,不要差太多,也不要把鍵所在位置搞錯,平下心慢慢來,這裏真急不得!
這裏放完所有軸之後就可以放衛星軸和螺絲固定孔位了
衛星軸在pcb上
說白了就是四個無焊盤的通孔,可以根據cherry的mx軸規格表現畫,原理圖庫和封裝庫均在github上,即本文開始時放的鏈接
在覈心板上我們在設計的時候就要考慮電源管理,usb接口,藍牙接口,不過我現在出的這版是純USB的版本,不帶電源管理和藍牙通信模塊,不過核心板上留的串口是爲了擴展用的。
然後在往加工廠發定位板的時候,發1mm的就好,然後dxf文件上同樣也一定記得在對應位置上打孔,這個大家隨便畫一下就好。
然後一大塊就是畫殼,我使用solidworks畫的,然後用自家3D打印機打的
尺寸再大點我家機器估計就hold不住了。個人感覺顏值還是很高的,stl文件也在我的github中有,大家可以一看。
小板還沒出的時候,其實我們就已經可以開始組裝了,顏值還是很高的,大家上眼瞧
當然,我的審美不太好,大家也不要吐槽。安裝過程中在衛星軸的安裝那個地方大家需要自己百度一下安裝方法,不同的衛星軸安裝方法不太一樣,並且挺麻煩。
接下來就可以開始考慮核心板的程序問題了,單片機採用STM32F103RCT6,一款物美價廉,性能強悍的單片機。功能在設計的時候爲了方便每一個用戶可以自由更改按鍵定義,並且在沒有STLINK的時候,也可以通過USB進行程序升級和燒寫,於是我開發了一個新的bootloader程序,這段代碼在燒寫的時候佔在程序區的前面一塊,程序在上電的時候如果沒有檢測到第一列按鍵被按下則跳轉到後面的程序,即正常的鍵盤工作代碼。如果按下了鍵盤第一列的任意按鍵,那麼上電的時候,鍵盤就會卡在USB燒寫程序的位置,設備管理器中會出現一個DFU,然後使用專用的燒寫工具即可將生成的固件hex燒寫進入單片機。具體燒寫方法在最後會詳細進行說明。
目前程序開發也不完全,僅僅完成了鍵盤功能的開發,對燈還沒有進行開發,但是硬件上是支持每個單色LED可控,在我們的IO板上大家可以看到均使用74HC595進行控制,並且在輸出加掛了三極管進行驅動,已測試每個燈都能達到較大亮度。
程序頂層全部C++進行開發,在編譯的時候要勾選use mircolib,否則無法編譯。