2020年3月25日 星期三

Ducky 87 鍵盤改 Teensy 2.0 控制器

動機

幾個月中,改了3把鍵盤加裝 TrackPoint 模組,有一些心得。第一把的 Ducky 87 鍵盤是向網友買的,不知怎的,使用一個 USB HUB 連接鍵盤和 TrackPoint 模組,滑鼠的移動就會不順。測了好久,確定無法使用 HUB 來合併兩者的訊號。不得已只好再鑽一個洞,另外接出 TrackPoint 模組的信號。

在計劃改鍵盤時,因為看到網路有人用 Teensy 2.0 來連接 TrackPoint 模組,所以同時也買了 Teensy 2.0 板子。但後來使用 PS/2 to USB converter 可以順利連接,而且便宜很多,體積又很小,Teensy 2.0 就擱在一邊。改了3把鍵盤之後,平常工作有鍵盤可以使用,就回過頭來把那支無法內藏 HUB 的 Ducky 87 鍵盤的控制器改成 Teensy 2.0。


參考網頁

 kira3628800 的介紹文章: 使用QMK來搞一把鍵盤吧!QMK加上小紅點吧!
QMK 的說明: QMK FirmwareKeyboards with AVR Processors
要連接 TrackPoint 模組,需要再參考: PS/2 Mouse SupportPS/2 Mouse - QMK

MCU 控制板的選擇,可參考
Pro Micro vs. Teensy 2.0 review

實作參考
Connecting thinkpad trackpoint mouse+buttons to teensy 2

鍵盤矩陣

首先把原來的控制 IC 整個拆掉,因為解焊太麻煩,也沒這技術,就直接用鋸子破壞掉。參見下面的相片,左邊 DIP 開關上方的 IC 整個被挖掉。

因為只有 87 鍵,電路稍做修改,可以少用一支 pin,不然 Teensy 2.0 的接腳不夠用。配合 qmk 程式的設定,接腳編號由 0 開始。


鍵盤矩陣總共需要的控制信號數為 8+12=20,另外想用1個信號控制 Caps Lock 以及 2個信號連接 Trackpoint 的 dat 和 clk,所以總共要 23個控制接腳。所以必須使用有 25個IO的 Teensy 2.0,無法使用 Arduino Pro Micro,Pro Micro 標準是 18 個 IO,就算可以把 RX/TX 改成 IO,也只有 20pin。雖然 Pro Micro 便宜多了,有更多人在賣,但也只好放棄。

在下面這個連結有一些相關的討論串,看來只能選擇較貴的 Teensy 2.0。

Arduino vs Teensy? - Geekhack
Most open firmware is written for the Teensy (2.0 mainly), but the Arduino / Pro Micro (cheap clone - quality may vary) has exactly the same chip (ATMega32u4 - worth checking on Arduino/Pro Micro boards). Its pretty easy to make a keyboard with the Arduino software, as its one of the examples.

關於連接 Trackpoint 的說明需參見 PS/2 Mouse - QMK,最好是使用 USART mode。

另外,Caps Lock LED 的控制: LED Control

Teensy 2.0 開發板的接腳。


Teensy 與 Trackpoint module 之間的接線。使用 USART mode
CLK: PD5 (XCK1)
DAT: PD2 (下圖的 PD4,經測試之後,好像是不能正常工作的。)另外,因為使用相同的工作電壓,不一定需要 4.7K 的 pull high 電阻即可運作。

PIN I/O 對應

鍵盤矩陣的 PIN 對應
ROW
PIN

ROW
PIN

COL
PIN

COL
PIN

COL
PIN
0
B0

4
D1

0
E6

4
F5

8
B5
1
B1

5
D3

1
F0

5
F6

9
B4
2
B2

6
C6

2
F1

6
F7

10
D7
3
B3

7
C7

3
F4

7
B6

11
D4

其他的 PIN 對應
PIN
說明
D6
Caps Lock,Teensy 2.0 開發板的 LED 指示燈
D5
TrackPoint 控制模組 PS2 界面的 CLK
D2
TrackPoint 控制模組 PS2 界面的 DAT

總共使用 23 個 PIN IO

直接把 Teensy 2.0 的板子用雙面膠黏在鍵盤的 PCB 上,旁邊黑色膠帶包著的是接 Trackpoint 模組的電容電阻。


電路板黏貼的位置和線路整理,要配合原來鍵盤的空間,才能將鍵盤密合的組裝。

上網找了一個適用的手托,嵌入滑鼠的按鍵,看起來稍有整體感。

Firmware 編譯環境

docker-compose.yml
# Teensy development environment
qmk_dev:
  build: .
  working_dir: /work
  volumes:
    - "./work:/work"
    - "./work:/home/ajax"
  stdin_open: true
  tty: true
  user: 1000:1000
  entrypoint: /bin/bash

Dockerfile

# ref: https://docs.qmk.fm/#/newbs_getting_started
FROM ubuntu:18.04
#FROM ubuntu:16.04

RUN apt-get -y update

RUN apt-get -y install build-essential gcc-avr binutils-avr avr-libc && \
    apt-get -y install git python3 python3-pip

RUN python3 -m pip install --upgrade pip && \
    python3 -m pip install qmk

# RUN yes | qmk setup

RUN groupadd ajax -g 1000 && \
    useradd -g 1000 -u 1000 ajax

CMD ["/bin/bash"]

docker run shell

echo "set prompt command: "
echo "export PS1='\[\033]0;\u@\h:\w\007\]\[\033[01;31m\]qmk_dev@docker\[\033[01;34m\] \w \$\[\033[00m\] '"

docker-compose -f docker-compose.yml run --rm qmk_dev


編譯
qmk config user.keyboard=Teensy_tst
qmk config user.keymap=default qmk compile

編譯好,再在 windows 下用 loader 將產生的 firmware 下載到開發板上。

2020年3月19日 星期四

ikbc Table E401 鍵盤 + 小紅點 (Trackpoint) 指標 -- 完成

機械鍵盤的手感遠勝於 Thinkpad 的薄膜鍵盤,而 trackpoint 卻是寫程式的利器,若能在機械鍵盤上加裝 trackpoint (Mechanical keyboard with Trackpoint) 就能結合這兩者的優點,這一直是我的夢想啊。這次是要把小紅點 (Trackpoint) 指標控制器加裝到 ikbc Table E401 鍵盤,因為它附有手一體式托,頗類似外接的 Thinkpad 鍵盤。

好不容易完成了,把小紅點 (Trackpoint) 指標控制器加裝到 ikbc Table E401 鍵盤。搭配這個鍵盤的一體式手托,改裝後,從正面看完整度比較高。不過它的加大按壓面積鍵帽,在剛開始使用時,常常會按到旁邊的鍵。適應一兩天後,也就習慣了。不過,用久了還是覺得它有塑膠外殼的噪音,頗為擾人,最後還是回去用 Ducky 的機械鍵盤。

關於 iKbc 鍵盤使用時的噪音,原本以為是在裡面塞入線路,造成組裝不密實而產生噪音。但拿另一個未改裝的鍵盤來比較,發現只要把鍵盤拿起來,晃一晃,整個外殼就會略微變型,產生噪音。相較而言,Ducky 的外殼比較堅實,不會有異音。iKbc 則只要壓一下,就會有擾人的異音。


但是看背面,就挖了一個大洞,露出小紅點的固定板,而且有點突出,必需將前面或後面墊高一點,固定板才不會碰到桌面。因為手托有點向下傾鈄,若墊高後面,例如將腳架扳起一段,在使用上,手腕會不舒服。在前面的下面用2支30公分直尺墊高一點,用起來就比較舒服點,高度大約 4mm。

正面看,GHB三個鍵要切掉一些,可以讓小紅點有移動的空間。在空白鍵下,切出可讓指標按鍵露出來的方孔。為了儘量完美,這個裝指標按鍵的孔,花了一整個下午才完成。


GHB鍵之間的孔。

用軟性油土翻的模,有點歪,堪用而已。材料是比較稀,長時間凝固的AB膠。下面是模型用的防鬆脫螺帽,可以固定在延長指標的螺絲上,不會鬆脫,也不會晃。


這個鍵盤是使用 type C 的 USB 接頭,SMD 的接頭,無法自己焊接。確定它是 USB 2.0 的界面,只用到 4條線,就把它改成 micro USB 的座,自己另外挖孔和固定。這個鍵盤可能是要出藍牙版本,留有很大的空間,用來放電池,因此在裡面塞一個 USB 2.0 的 HUB 和 PS2 轉 USB 的小電路板,空間非常夠。

改裝的過程,等以後有空再慢慢補齊了。

2020年3月4日 星期三

網誌存檔