初級QMK編譯入門教程(2)——硬件部分

書接上文,上一篇都是軟件編輯方面的工作,看起來很考驗耐心,畢竟真男人都是玩硬的!所以這篇開始詳解硬件部分的工作吧!
開始之前,先上幾張效果圖吸下睛。






首先,要設計一個鍵盤殼子,并且用3D打印機打印出來。
完成上面那句話的工作,大概用了一周的時間吧……主要時間花在造型設計、建模和做效果圖上了……打印的話,一宿就夠了。
建模軟件我使用的是3DS MAX,版本2015-2018都行不用刻意追新。
具體建模方法,不是一兩句話能說明白的……也跟鍵盤改裝的距離比較遠,所以就不詳述了……當然,也可以去淘寶上直接購買打印好的外殼,搜索店鋪:做東做西。(毫無帶貨痕跡)

有些事,說著簡單,但是做起來難啊……比如外殼的設計和打印,入上圖從右到左,一共經歷了三版,才算基本定稿了。綠色第一版,做好以后,發(fā)現(xiàn)前面放RGB燈條的空間做小了,網上查的尺寸跟收到的實物不同……于是做了中間黑色的,是第二版,結果發(fā)現(xiàn)一個第一版就存在的問題,就是鍵帽間距多留了。于是做到左邊灰色的第三版,算是修整了所有重大漏洞。


大概看下效果,定位板之間的立柱頂?shù)降装?,增加支撐力?/p>
接下來是驚心動魄的飛線環(huán)節(jié),為了不造成恐慌,先放一張接線圖,方便大家理解。

其實只是看著亂,原理還是挺簡單的。參照之前固件中設定的針腳,逐個對應上去就行了。

裝軸,裝屏,裝電位器,然后飛線。強迫癥玩家請自動屏蔽此圖。

紅框中就是RGB電路板,一共有8顆燈珠。

線接到開發(fā)板上,圖中接線不是最終版,后面因為改動了固件內的針腳設置,所以又改動圖中接線。

測試好硬件部分沒有問題以后,蓋上后蓋,四角貼上防滑貼。忘記里面那些漫天飛舞的電線吧……

刷入上篇文章介紹的固件以后,OLED顯示不正常,RGB也無法調節(jié)。所以下一步要對之前的代碼進行再次編輯。

關于旋鈕帽的選擇……其實是件很糾結的事情……所以只能買一大堆回來試著看效果了……
??上一篇帖子中,使用的是全文本的方式進行編程,過程很不直觀,而且容易出錯。經過這段時間的學習,發(fā)現(xiàn)了一個相對簡單一點的編程辦法。其中幾個網站的試用方法在我之前改路透社小鍵盤的帖子里有比較詳細的介紹,這里就大概說下流程,不細講了。
首先來到我們熟悉的http://www.keyboard-layout-editor.com/。

手動擺一個跟小鍵盤相同的配列圖。左上角的按鍵代表編碼器的按鈕。然后復制代碼到kbfirmware.com(以下簡稱KBF)

然后KBF會生成一個布線圖,與我上面接的不太一樣,后面又按照這個布線重新走了一下。最大的不同就是將我之前規(guī)劃的5X4布局改成了6X4布局。
在PINS頁面中設置行列對應的開發(fā)板針腳,WS2812 RGB燈光對應的針腳。
在keymap頁面中設置按鍵定義。
在SETTINGS中設置WS2812 LEDs數(shù)量為8,也就是RGB燈條的燈珠數(shù)量。
最后在COMPILE頁面中,點擊Download .zip

解壓縮這個壓縮文件以后,進入到KB文件夾以后,我們會看到與之前在QMK文件夾中看到的鍵盤案例一樣的文件架構。不過,這里并不是要將這個文件編譯成固件,而是從這些文件中找到自己需要的代碼片段,覆蓋到之前編輯的代碼中。


打開之前編輯的config.h文件(上圖左),再打開KBF下載的config.h文件(上圖右),將新修改的部分代碼復制到之前的文件中。主要是修改行列數(shù)、針腳定義和RGB燈光設置。

后來經過測試,KBF的RGB代碼直接復制過去以后,由于加載了全部RGB動畫效果,所以開發(fā)板容量直接就裝不下了……所以注釋掉上圖那行加載全部動畫的代碼,單獨選兩條燈光效果添加上,即便如此,開發(fā)板的空間使用量也達到了97%。

最后還要添加一行代碼,將OLED默認的128*32分辨率改成128*64。這樣就可以避免上面提到的OLED屏幕顯示不正常的問題了。

打開MAK01.H和KB.H,替換部分代碼。通過學習KB.H可以發(fā)現(xiàn)一個規(guī)律,就是上下兩種鍵值是相同的,我之前編輯的代碼中沒有做到這點。

打開兩個keymap.c,將KBF上下載的鍵值覆蓋原有鍵值。將鍵層2上的代碼改為RBG控制按鍵,并且添加了一個RESET按鍵,省得每次刷固件都要去按開發(fā)板上的按鈕了。具體鍵值可以去QMK網站查詢。修改后的鍵值代碼如上圖。

由于OLED的分辨率提高了,可以顯示的內容增加了一倍,之前代碼中顯示的內容不能滿足。所以對之前的代碼進行了豐富。主要修改就是將之前顯示層名稱改成了顯示層按鍵定義。這樣只要看OLED屏上的提示,就可以知道當前的按鍵定義了。
OLED代碼簡介:

每組顯示內容的開頭代碼。

顯示文字內容的開頭代碼。后面的括號引號中,為要顯示的文字。

換行。如果沒有這個代碼,所有文字將在同一行顯示。
代碼的修改策略就是,增加行顯示的內容,保持原有代碼架構不變。

大概標注一下代碼與顯示效果的關系?;旧希a中綠色文字就是最終要顯示出來的。
關于OLED,還可以實現(xiàn)更多功能,但無奈本人技術有限,所以暫時只能根據(jù)原有代碼的架構進行簡單修改。
關于RGB效果,目前代碼只編寫了手動調節(jié)的功能,包括顏色、亮度、純度。其實QMK還有很多預設的RGB動畫效果,只不過直接開啟全部預設效果的話,開發(fā)板的空間直接就不夠用了,只能手動挑選幾條效果了。
關于PCB,其實也在考慮之中,就目前來看,數(shù)量比較少,單獨折騰PCB也沒什么太大必要。后面如果需要的朋友多的話,可以考慮增加。
關于這個鍵盤的定位,我覺得更像是一個固件編寫的學習和測試用鍵盤,因為一般鍵盤常見的元素基本在這個鍵盤上面都有體現(xiàn)了。對于學習QMK編程來說,就很方便了。屬于麻雀雖小,五臟俱全的性質。
代碼修修補補以后,就可以用MSYS2生成固件了。然后刷入開發(fā)板,鍵盤就可以正常工作了。
生成固件方法見:https://www.zfrontier.com/post/detail/19335
刷固件方法見:https://www.zfrontier.com/post/detail/18651
最后刷幾張完成圖吧,手機直拍無修圖,燈光亮度降低了很多,不然直接過曝。照片中,OLED屏有顯示不全的問題,是因為手機攝像頭與OLED刷新率不太匹配的緣故,實物觀看沒有這個問題。






滾動的殺馬特RGB效果也可以實現(xiàn)……只不過……上年紀了,實在是有點駕馭不了了,單色常亮就行了……






這篇帖子拖拖拉拉的就寫到這里吧,由于來來回回改了好多次。這么長的帖子,我自己都沒有耐心重頭校對了……所以如果有疏漏或者邏輯不通暢的地方,煩請各位看官留言斧正。有說的不夠清楚的地方,也可以留言,我會盡我僅有的所能去解答。