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 下載到開發板上。

沒有留言:

張貼留言

網誌存檔