stm32 diy 機械鍵盤


程序員對機械鍵盤的需求不止於情懷,當然,對於算法工程師、邏輯復雜而代碼量小的軟件工程師來說,平時對鍵盤的操作並沒有那么多,可能對機械鍵盤並不感興趣。而我曾經是一個日常大量編碼、運維的數據工程師,邏輯簡單,鍵盤操作卻很多,特別是對十幾台服務器ssh不能用鼠標,更增加了鍵盤的用量。為了統一工作流程,我使用vim作為Windows、Linux的唯一編輯器,讓c/c++/python/shell的工作統一到了一個環境中,效率也增加不少。但是這種工作模式讓小拇指難以承受,經常到晚上下班時小拇指疼,加班的時候就不能很爽的敲鍵盤了。
造成小拇指負荷的主要因素是薄膜鍵盤的手感不佳,和ctrl鍵的鍵位不合理。一般使用的台式機薄膜鍵盤按鍵按下時發澀,阻力不確定,有時順暢,有時突然卡一下。筆記本鍵盤稍好,但關鍵問題是薄膜鍵盤的觸發是在按鍵全部按下后,薄膜觸點接觸時按鍵按下,沒有滯回效果,按下后需要持續發力,只要發力不均勻,即使按鍵位置在最底端沒動,實際信號仍有可能中斷,對組合鍵持續操作產生致命影響。由於我已經將vim的上下翻頁鍵配置成組合鍵alt+j/k,日常最多的操作就是快速持續翻頁,薄膜鍵盤的特性讓這個操作時常卡頓,很不舒服。
而機械鍵盤就可以解決這個關鍵問題,其按鍵的觸發僅取決於按鍵位置,並具有滯回效果,只要保持按鍵按下,即使手指的力度已經發生顫抖,按鍵信號仍然不變。對於長時間的工作,可以使用紅軸,讓按鍵力量最小,減少手指疲勞。
我的第一款機械鍵盤是code,一個厚重的全鍵盤,大小寫轉換按鈕可配置為ctrl,這樣,小拇指的運動距離縮短了不少,施力角度也省力,保證了全天的鍵盤操作,加班也能狠狠的敲。
但是code的鍵盤布局與普通鍵盤並沒有太大的變化,常用的操作:上下左右、home、end、page up、page down在右側,操作時,需要右手離開主鍵盤,造成操作中斷。
而HHKB的60鍵布局解決了這些問題,其ctrl鍵原生就在大小寫轉換開關的位置上,通過fn組合鍵實現上下左右等按鍵,以及F1~F12功能鍵,讓手部活動降低很多。

但是HHKB的空格鍵很長,Fn組合鍵不好按,上下左右與vim不統一。受minila的啟發,我決定自己做一個機械鍵盤。

minila鍵盤圖片:

自制機械鍵盤使用59鍵布局,以小為美(便宜)采用短空格,充分利用大拇指,將fn放在大拇指位置,不僅實現被省略按鍵的組合(兼容vim習慣),還實現一些常用功能,如shift+del、alt+printscreen等。還加入了鼠標功能,由組合鍵實現。當然,既然自己做了,就把鍵盤燈也加上,每個按鍵有一個LED,可實現20級亮度調節。

 使用stm32f103vbt6作為主芯片,led使用壓降3v的高亮管,1k限流電阻,大約1ma電流,59鍵大約60ma,主芯片單片可承受。

感謝網站http://www.keyboard-layout-editor.com提供了鍵盤設計自動化圖紙生成:

網站 http://builder.swillkb.com/ 可轉換為dxf文件,直接導入pcb軟件,大大簡化了設計。這種按鍵配置的鍵帽肯定是沒有現成的,只能買無刻鍵帽湊合一下。甚至有些按鍵的長度和高度也找不到匹配的,所以最后空格鍵選用了很長的右shift,左右各留了一點空隙。實際按鍵的鍵帽與設計不符,自己用自己知道就好。就是別人用我的鍵盤的時候會很麻煩

此鍵盤的按鍵並不是掃描鍵盤,而是每個軸體都有一個引腳。通過一個引腳時分復用,實現led亮度調節和按鍵狀態傳感。這是此鍵盤與眾不同之處。我沒看過其他鍵盤的方案,自己的機械鍵盤也沒有拆解過,所以全憑自己想象來了。部分按鍵原理圖:

這一版用的3.3V電,走asm1117-3.3線性穩壓,效率低。下一版應該改成usb 5V直接給LED供電,改大限流電阻,或者找更高導通電壓的led
掃描和燈的控制共用0.5ms的時隙,10ms為一組,每個時間組首先掃描按鍵,掃描完成后按照燈的亮度設定設置引腳是否需要輸出。10ms后重新設置為輸入模式掃描按鍵。所以按鍵掃描頻率為100Hz,led的PWM頻率為100Hz,占空比為20檔。
USB描述符配置申請500mA電流,使用100mA時,鍵盤容易掉。
我的焊工並不專業,湊合看吧。一開始使用的助焊劑有問題,未洗板上電短路,廢了2塊板子。后來改用松香助焊,看着磨嘰,好使。

  

 芯片還好焊,主要是按鍵定位孔開大了,按鍵左右擺,要焊完把歪的軸體扭正。usb線本來是要用microusb接口,但是可能買的接口質量太差,插兩次就接觸不良。后來改用飛線將usb引到外置轉接板上,再用熱熔膠固定到殼體上,這樣插拔時的側向力能夠得到緩沖,就好使了。再后來直接將usb線焊接到電路板上,殼體打孔引出,加熱熔膠固定。

 一般人第一眼看到這鍵盤都會說,你這怎么空了一塊,不能補上嗎?我就會說:這就是diy的個性風格(不會補)。主要是擔心裸露的PCB吃灰進水。這是使用兩年效果:

還不算臟,但軸體吃灰會導致不靈敏,所以長期放置需要套袋,或者蓋布。另外,吃外賣的時候會濺到油,弄到電路上沒事,弄進按鍵里邊就不好擦了,不過所有鍵盤都是這樣的。
刨去diy過程中個性定制的logo、LED圖案和新奇感,使用時帶來了不少便利,是很實在的,偶爾換回普通鍵盤感覺還是很明顯:
1、優先使用大拇指,實現組合鍵
2、將Ctrl移動到caplock處,取消caplock,減輕了小拇指負擔
3、方向鍵使用vim風格,home end pageup pagedown也使用hjkl實現
4、使用鍵盤模擬鼠標,用於連貫動作,減少鍵鼠切換,主要鼠標操作仍通過實體鼠標實現
5、鍵盤尺寸小,降低空間占用,減少手的移動范圍,便於攜帶
6、無段落感的紅軸,減緩手部疲勞,易於使用組合鍵並通過按鍵時長實現光標鼠標移動以及滾屏的連續控制
7、使用消音膠墊,進一步讓感覺變軟、變輕,降低噪音
最后給個開源的鏈接:包括pcb圖和基於keil的源碼,未使用固件庫
自己做鍵盤看似簡單實際上挺折騰,關鍵是麻煩,各種小物件要分別采購,而且非標鍵盤很難配件,還要焊接。所以有很多朋友要做都沒有做成。但是如果習慣了vim體系的操作,不妨花些功夫定制一套,會離不開的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM