步驟1:獲取插座
部分,即。對適配器板進(jìn)行編程和設(shè)計,您需要找到一種將鍵盤連接到PCB的方法。
大多數(shù)經(jīng)典的ThinkPad鍵盤都使用板對板連接器。根據(jù)eBay的說法,如果您搜索T60鍵盤,則會發(fā)現(xiàn)ThinkPad T60,T60p,Z61p,Z61t,Z60,T61,R400,R500,T400,T500,X41 。..共享相同的鍵盤,并且它們的鍵盤矩陣也可能
從互聯(lián)網(wǎng)上浮動的ThinkPad T60的示意圖中(參見圖片),我發(fā)現(xiàn)T60使用JAE AA01B-S040VA1-R3000。由于這些產(chǎn)品是專有產(chǎn)品,因此沒有多少供應(yīng)商出售它們。多數(shù)確實(shí)出售這些產(chǎn)品的人,其最低訂購量為100。每件產(chǎn)品的價格約為4.90美元,加上運(yùn)費(fèi),價格非常昂貴。因此,如果您有興趣獲得這些信息,請給我發(fā)消息。
有關(guān)ThinkPad T60插座的更多信息,請查看Felix的照片和尺寸:http://electronics.stackexchange.com/questions/64112/how找到用于鍵盤連接器的插座
步驟2:使用鍵盤示意圖
從上一步的示意圖中可以看出,T60鍵盤矩陣使用8行16列,其中1個用于熱鍵(FN),TrackPoint使用時鐘線,數(shù)據(jù)線和復(fù)位線。總共需要28個數(shù)字引腳,而Arduino Micro/Leonardo只有20個數(shù)字引腳。
使用CD4017這樣的十進(jìn)制計數(shù)器在行中循環(huán),并使用MCP23S17等SPI 16位輸入IC進(jìn)行讀取。輸入為16列,Arduino端的引腳總數(shù)減少到10行。
通常,鍵盤矩陣是被動的-它們不指定行或列必須是輸入還是輸出。但是,對于該項(xiàng)目,16列輸出將需要更多的外部IC,無源元件,并使設(shè)計復(fù)雜化。因此,我選擇了8個輸出和16個輸入。
到目前為止,零件清單已經(jīng)到了:
Arduino Micro:官方模塊?32美元,13美元用于克?。ㄔ趀Bay上克隆)
CD4017
MCP23S17
16 x 10k電阻作為MCP23S17
的上拉電阻Arduino安裝板和插座板(接下來的幾個步驟)
AA01B-S040VA1插座
在https://www.tindie.com/products/rampadc/arduino-thinkpad獲取該套件-usb-keyboard-adapter/
步驟3:設(shè)計原理圖和PCB
由于T60的插座是間距為0.5mm的表面安裝組件,因此我決定將SMD用于其他組件。
在此項(xiàng)目中,我決定將該板分成兩塊板:
Arduino Micro安裝板
帶有電阻和支持IC的插座板。
這可以使將來的主板修訂版更具模塊化,并且從長遠(yuǎn)來看可能會更便宜。例如,如果我決定添加藍(lán)牙連接,則不再需要使用Arduino Micro的USB功能。我可以改用Arduino Nano,而只需要在Arduino一側(cè)設(shè)計PCB,就可以清楚地知道我的插座板將以相同的方式工作,無論我決定使用哪種微控制器。
我提供了以下示例我的Elecrow的PCB布局,原理圖和預(yù)制板。板子是雙面的,適合50x50mm。
第4步:編寫代碼!
該項(xiàng)目非常簡單,足以與Arduino龐大的社區(qū)進(jìn)行編碼。我寫了一個簡短的草圖。該代碼可在GitHub上找到:https://github.com/rampadc/arduino-thinkpadkb-usb。
該代碼可以使用一些優(yōu)化來加速矩陣掃描。從代碼中刪除了FN + NumLock功能,鍵盤鍵和自定義鍵盤組合功能,因?yàn)樗@著降低了掃描速度。
步驟5:結(jié)果和結(jié)論
Arduino平臺使構(gòu)建USB適配器非常容易。但是,它有一些嚴(yán)重的缺點(diǎn):
?有限的鍵碼支持:沒有鍵盤鍵,打印屏幕,滾動鎖定,暫停,中斷等的定義。?Keyboard.press()和Keyboard.release()的笨拙實(shí)現(xiàn)。 )。 Arduino API不會接受和發(fā)送未經(jīng)修改的鍵碼,而是強(qiáng)制用戶發(fā)送可打印的字符。
?無遠(yuǎn)程喚醒:如果計算機(jī)進(jìn)入待機(jī)狀態(tài),則按鍵盤上的某個鍵或移動鼠標(biāo)都不會將其喚醒。
?引腳數(shù)少
?慢。可以進(jìn)行代碼優(yōu)化和改進(jìn),但是使用Arduino從直接端口操縱中提取的東西會大大增加延遲,增加低引腳數(shù),迫使用戶使用擴(kuò)展IC進(jìn)一步降低了速度。
出于測試目的,我使用跨接電纜將兩塊板連接在一起。對于最終產(chǎn)品,我將使用一些細(xì)得多的電線直接焊接到板上并在鍵盤下方運(yùn)行。
這是操作鍵盤的視頻:http://youtu.be/gDHS0D_EtOc
設(shè)計建議改進(jìn)和代碼優(yōu)化!
-
適配器
+關(guān)注
關(guān)注
8文章
1965瀏覽量
68116 -
鍵盤
+關(guān)注
關(guān)注
4文章
859瀏覽量
39773 -
Arduino
+關(guān)注
關(guān)注
188文章
6474瀏覽量
187434
發(fā)布評論請先 登錄
相關(guān)推薦
評論