鍵盤adb轉usb USB鍵盤轉藍芽鍵盤的裝置

2021-10-11 20:26:19 字數 1719 閱讀 6566

鍵盤可以算作pc上最古老的裝置了,它的出現使得人類可以用非常簡單的方法與電腦進行互動。同樣的,由於各種歷史原因,鍵盤也是pc上最複雜,相容性問題最多的裝置之一(類似的還有硬碟,不過從ide到sata的進化過程中,標準明確,相容性問題少多了)。

硬體部分arduino uno , usb host shield 和 hid 藍芽晶元。強調一下這裡使用的是 hid 藍芽晶元,並非普通的藍芽串列埠透傳晶元。關於這個模組可以參考我在【參考1】中的實驗。

硬體連線很簡單,usb host shield插在 arduino上,然後vcc/gnd/tx/rx將arduino 和 hid藍芽模組連線在一起。

原理:首先,為了通用性和程式設計簡單,我們用usb host傳送命令把鍵盤切換到boot protocol 模式下。這樣即使不同的鍵盤,每次發出來的資料也都是統一的格式。然後,我們直接讀取緩衝資料就可以解析出按鍵資訊了。最後,將取下來的按鍵資訊(scancode)按照hid藍芽模組的格式要求通過串列埠送到模組上,主機端就收到了。

上述連線就可以正常工作了,但是為了美觀和提高可靠性,我找到之前買的乙個麵包板shield。

插好之後就是這樣

原理上就是用 arduino 來控制 usb host shield 解析鍵盤資料,隨後將資料按照藍芽模組的格式傳送出去。從接收端的角度來看,整體就是乙個藍芽鍵盤,通過這樣既可實現usb鍵盤對藍芽的轉接。

限於篇幅,具體**請搜尋 「arduino打造usb藍芽鍵盤轉接器」。

特別注意:

1. 因為我們使用的是最簡單的boot protocol,所以如果你的鍵盤上有音量鍵之類的有可能失效;

2. 我不確定是否所有的鍵盤都會支援 boot protocol ,從之前玩usb滑鼠的經驗來看,確實有可能;

3. 供電部分沒有經過優化,不知道電力消耗如何,不確定乙個充電寶能夠工作的時間;

最後講乙個小故事:有一次我去實驗室,發現他們在折騰鍵盤。那是一款帶著音量控制功能的鍵盤。系統測試的時候發現,按一下鍵盤音量鍵之後,螢幕上顯示的音量會跳2格。從原理上說,按下那個鍵之後,鍵盤發出特定的scan code,系統中還有個專門響應這個scan code的程式然後在螢幕上繪製音量指示方塊。蠻有意思的一件事情是:很多人認為大公司有操控**商的能力,**商在大廠面前會唯唯諾諾,這也是高層會有的想法,問題是底層人員未必吃這一套。每次想起這個事情,我都要想起敏感字關於矛盾的辯證法的論證。這個事情就是雙方的下層在不停的扯,更準確的說,是鍵盤廠商,軟體開發商和我們在一起糾纏,鍵盤廠商說同樣的鍵盤在其他人家用起來沒問題,軟體開發商說我的軟體在之前的機型上一直用,我們的人說,少扯淡,趕緊解決,前後乙個多月都沒有搞定…….那時候,組裡剛買了乙個usb邏輯分析儀,我用著感覺很好玩。於是,我就用邏輯分析儀測試了一下鍵盤,測試的結果是,鍵盤發出來的 scan code沒有問題,每次按鍵都是乙個press乙個release,所以真相肯定是寫上位機程式的軟體廠商搞錯了什麼。截圖附帶著資料報一起丟給三方。這是最底層的傳輸,如果依然嘴硬,那只能落下笑柄而已。然後很快軟體廠商就服軟自己去修改了。只是說說我經歷的事情,如果非要說出一些道理的話這個故事是為了說明:usb邏輯分析儀很有用……

就是這樣.

藍芽透傳實驗 USB鍵盤轉藍芽鍵盤的裝置

鍵盤可以算作pc上最古老的裝置了,它的出現使得人類可以用非常簡單的方法與電腦進行互動。同樣的,由於各種歷史原因,鍵盤也是pc上最複雜,相容性問題最多的裝置之一 類似的還有硬碟,不過從ide到sata的進化過程中,標準明確,相容性問題少多了 硬體部分arduino uno usb host shiel...

APE結合鍵盤控制角色運動 轉

在as3物理引擎ape試用一文中,我簡單記錄了關於ape的基本呼叫,並實現了在重力作用環境下,乙個自由落體的碰撞過程。現在我們把 來改進一下,修改為乙個橫版的動作遊戲場景 雖然目前它還算不上遊戲,呵呵 首先,我定義了6個固定的高度為10的矩形物件。作為地圖場景,而規定了乙個寬高均為20的正方形物件來...

SendInput模擬鍵盤輸入的問題 《轉》

最近接觸到這個函式,因此了解了一下,總結一下列在這。我了解它的出發點是如何通過它向活動視窗輸入字元,這是很多程式都有的功能 我猜visual assist x就用了這個功能 根據msdn,此函式模擬按鍵操作,將一些訊息插入鍵盤或滑鼠的輸入流中,windows對它進行處理,生成相應的wm keydow...