“碰一碰”版本的藍芽鍵盤,來啦!

華為開發者論壇發表於2021-07-27

基於Neptune開發板的鍵盤藍芽模組DIY指南0.3版本,實現“碰一碰”連線、支援Linux下HUAWEI DevEco Device Tool編譯燒錄。 手機敲字回覆,總因為大小寫切換太“隱秘”而接連按錯?登入某乎回答,手機打字不易,電腦登入太難?多臺裝置同時操作,來回切換多個鍵盤把自己搞得昏頭轉向?這種時候,開發者們可能需要一個增強版外設鍵盤,不僅手機輕鬆連,而且支援多臺裝置同時連線。

   

1. 介紹

在之前的推文中,我們曾給開發者們帶來 基於潤和Neptune開發板(以下簡稱Neptune開發板)的鍵盤藍芽模組DIY指南0.1版本,將有線鍵盤改造成藍芽鍵盤,實現一個鍵盤被多作業系統/終端裝置識別使用的功能。經過幾個月的更新,這次我們為大家帶來的是 基於Neptune開發板的鍵盤藍芽模組DIY指南v0.3版本,為大家帶來幾個重磅更新:

1.支援搭載HarmonyOS系統手機“碰一碰”連線

2.支援HUAWEI DevEco Device Tool一站式編譯燒錄

3.  在原有支援4種OS(HarmonyOS、Windows、Linux、Android)的基礎上,新增初步支援ios

4. 從原有的支援最多2臺裝置增加到現在的 支援最多5臺裝置自由切換

更多專案更新詳情,可透過下方連結檢視:

在之前的版本中,我們已經瞭解了硬體環境搭建和USB串列埠(CH340)獲取等相關資訊,這一次讓我們把重點放在開發者們最關注的 “碰一碰”的實現和HUAWEI DevEco Device Tool一站式編譯、燒錄步驟上,讓我們一起來了解吧~

   

2. “碰一碰”的實現

2.1 從體驗角度詮釋“碰一碰”實現

使用者使用“碰一碰”實現 藍芽鍵盤連線的示意圖如下:

  1. 使用者透過碰一碰NFC標籤拉起FA應用
  2. 獲取藍芽裝置(開發板)MAC資訊;
  3. 同時,手機中的藍芽掃描將獲取到的藍芽列表與開發板MAC資訊進行比對;
  4. 當匹配到相同開發板MAC資訊將反饋連線藍芽結果,連線該藍芽裝置;
  5. 同時連線成功的結果將透過被拉起的FA應用通知使用者,使用者可在介面上看到成功連線的提示。效果可看影片:

Play Mute Loaded17.98% Seek to live, currently playing live

“碰一碰”版本的藍芽鍵盤,來啦!

Fullscreen

2.2 從原理角度詮釋“碰一碰”實現

在這個過程中 ,碰一碰NFC標籤能拉起FA應用和獲取開發板MAC地址的關鍵點在於FA應用資訊和開發板MAC地址已經被寫入到NFC標籤中,使用者開啟手機上的NFC開關,手機在NFC標籤時即可讀取相關資訊拉起FA應用並獲取到開發板的MAC地址用於匹配。

但實際上被寫入NFC標籤的是FA應用的Product ID(需在華為官方“應用調測助手”APP中申請獲得),申請完成後透過在華為快服務智慧平臺(以下及圖中均簡略為HAG)建立、釋出該FA服務,將Product ID與FA應用App包名關聯,開發者將Product ID寫入NFC標籤中,當使用者使用NFC標籤碰一碰時,HAG端將透過Product ID查詢對應的包名並將其拉起。

而藍芽裝置則是透過工具獲取裝置MAC地址碼,將MAC地址碼寫入NFC標籤,當使用者使用NFC標籤碰一碰時將獲取到寫入其中的MAC地址碼,與手機當前藍芽列表匹配並連線相同MAC地址的藍芽裝置。

下面讓我們來詳細解析一下這個過程,由於我們已有Product ID且服務已釋出,我們將聚焦在如何實現FA應用資訊及開發板MAC地址寫入NFC標籤的過程中。

2.3  從動手流程學習“碰一碰”實現

接下來就讓我們來詳細瞭解一下FA應用資訊及開發板MAC地址寫入NFC標籤過程。

2.3.1. 瞭解寫入NFC的資料樣例結構

我們將為各位開發者提供一段用於寫入到NFC的資料樣例結構,開發者只需做很小部分的改動即可直接寫入NFC標籤中

資料樣例結構字串如下:

D20C1A6170702F68776F6E65686F702001004800 393935330081060005200685919106 286DCD824FEF

其中:

39393533 表示 9953的Ascill碼,9953即是我們為該FA應用是已經申請好的Product Id;

286DCD824FEF 用於表示BLE裝置硬體編碼(MAC地址),後續我們將透過獲取目標BLE裝置的MAC地址並將其替換掉;

2.3.2. 獲取BLE裝置MAC地址

在“華為應用市場”安裝“BLE除錯助手”( 該工具用來獲取目標ble裝置的MAC地址),開啟改工具,找到藍芽鍵盤,獲取藍芽鍵盤的MAC地址:286DCD7C0E67

2.3.3 替換目標裝置的MAC地址

將2.3.2中透過BLE除錯助手獲取的MAC地址: 286DCD7C0E67替換樣例的MAC地址: 286DCD824FEF,組裝後的字串為:

D20C1A6170702F68776F6E65686F702001004800393935330081060005200685919 106286DCD7C0E67

2.3.4 使用HW AirLink工具寫入NFC

1)安裝HW AirLink工具

我們將下載NFC寫入工具HW AirLink,下載連結如下:

https://developer.huawei.com/consumer/cn/doc/development/smarthome-Library/download-0000001050287714#ZH-CN_TOPIC_0000001056845319__section17953112220224

下載、解壓後使用開啟Windows裝置的cmd命令列工具(請保證Windows裝置安裝了adb工具)進行安裝,執行如下命令,即可完成安裝:

adb –r –d hilinkcert-tool-1.0.0.3.apk

如圖:

安裝完畢後,如圖:

2)輸入邀請碼

開啟該工具後,點選“add”,將要求輸入一個邀請碼,輸入“b4zd8bz3”即可:

3) 置入快取區

點選NFC,選擇當中的 NFC WRITE ,進入NFC資料輸入區,此時狀態為“快取區待寫入”:

勾選“byte code”,將第3步獲取到的組裝後的字串

D20C1A6170702F68776F6E65686F702001004800393935330081060005200685919106286DCD7C0E67

輸入其中,點選“置入快取區”,此時狀態為“已寫入快取區”。

4)寫入NFC貼紙

將開發好的FA應用安裝到手機上,開啟手機NFC功能,用手機背面(NFC感測器)靠近指定的NFC標籤,完成寫入。

請注意,寫入時需關閉手機網路,並且儘量選用空白的NFC標籤進行寫入。

寫入完成後,HW AirLink底部會彈出“寫入成功”彈框,即表示寫入成功。

 

至此,我們已經清晰瞭解了碰一碰NFC如何拉起FA應用並完成藍芽鍵盤的配對。那麼接下來就讓我們進入第2個關鍵更新——如何在Linux平臺下使用HUAWEI DevEco Device Tool(以下簡稱DevEco Device Tool)一站式完成編譯燒錄。

   

3. 一站式編譯燒錄的實現

本次我們將在Linux環境下使用Huawei DevEco Device Tool  (V2.2.0 Beta1 版) 對藍芽鍵盤模組對應的W800開發板進行編譯和燒錄。

3.1 編譯

3.1.1.  HPM 環境搭建

HPM (harmony package manager)即Harmony包管理器,它是華為Harmony推出的元件包管理器,可以方便地從官網獲取所需元件,根據需要只下載當前專案用到的元件,使得工程檔案更加精簡。

我們將在Linux環境下搭建環境並進行編譯,選擇在Ubuntu下安裝工具,並根據開發環境準備進行各軟體的下載和配置。關於Ubuntu開發環境準備可參考以下連結,這裡我們就不贅述了。

· Ubuntu開發環境準備

https://device.harmonyos.com/cn/docs/ide/user-guides/install_ubuntu-0000001072959308

注意:假如某些步驟執行失敗,請重啟ubuntu再試試

3.1.2 HPM 拉取原始碼

hpm 開發環境搭建完畢後,在Ubuntu首先輸入:

hpm init -t dist

實現目錄初始化,如圖:

輸入:

hpm i @hihope/neptune_bluetoothkeyboard

下載對應元件及依賴包,如圖:

執行完畢,顯示“Installed”,表示成功下載, 如圖:

最後,執行編譯命令

hpm dist

如圖:

執行完畢,顯示:“Build success!”,表示編譯成功,如圖:

編譯生成的img檔案,位於out目錄,如圖:

開啟“out/neptune/wifiiot_neptune/"資料夾,可找到“w800.img”檔案,其就是生成的韌體,如圖:

3.2  燒錄

3.2.1. 獲取編譯好的韌體

同樣的,本次燒錄我們將在Linux環境下完成。我們將對 “out/neptune/wifiiot_neptune/" 資料夾中的“w800.img”檔案進行韌體燒錄。同時,我們也為開發者們提供已經編譯好的韌體,可在以下連結獲取:

3.2.2 韌體燒錄

Linux 環境下燒錄韌體的流程詳細步驟如下:

1)將Neptune開發板透過串列埠連線到虛擬機器

將Neptune開發板透過串列埠連線到電腦的USB口。如圖:

在彈出的“檢測到新的USB裝置”視窗中,選擇 連線到虛擬機器,虛擬機器名稱選擇Ubuntu64位,點選確認。

開啟VMware,依次點開:虛擬機器->可移動裝置->QinHeng USB Serial->在狀態列中顯示,檢視是否顯示,如圖:

此時,Neptune開發板已經透過串列埠成功連線虛擬機器。

2)新建Device Tool工程

DevEco Device Tool 以外掛形式部署在 Visual Studio Code 上, 因此我們需要先開啟Visual Studio Code中的“Extentions”,找到並開啟DevEco Device Tool,點選 “ New DevEco Project ” 新建一個工程,輸入工程的相關資訊:

工程名稱:Name(自定義)

開發板型號:Board(選w800),當前我們使用的是W800開發板

Bundle( 選@hihope/neptune_iot),如圖:

3)設定燒錄韌體位置

點選Partiton Configuration(步驟 ①) ,點選資料夾圖示(步驟 ②) ,如圖所示:

找到韌體所在資料夾位置,(可以自定義路徑,請提前把目標韌體複製到該位置),如圖:

選擇目標韌體“OpenHarmony_HID_V0.3.img”(步驟①),點選按鈕:“Open “OpenHarmony_HID_V0.3.img””(步驟②),如圖:

點選Save儲存。

完成板子選擇和燒錄韌體位置設定後,我們需要進行埠和燒錄協議配置。

4)設定埠和燒錄協議

點選:”w800“, 如圖:

設定燒錄埠,upload_port,選擇預設值“/dev/ttyUSB0”,如果沒有,可以輸入“/dev/ttyUSB0”

填寫燒錄協議, upload_protocol ,選擇“ xmodem ”,即選擇序列通訊的檔案傳輸協議。

設定upload_partitions,選擇”partition:w800_app“, 即選擇需要燒錄的檔案是哪一個。選擇結果如圖:

配置完畢後,點儲存配置Save即可。

5)檢視已經開啟的工程

點選Open,開啟工程。點選Visual Studio Code左上角的Explorer圖示,檢視已經開啟的工程:

移除不相干的專案,防止編譯異常,如圖:

6)燒錄韌體

點選DevEco,在彈出的PROJECT TASKS中選擇Upload,如圖:

根據提示“Please reset the board”,單擊開發板的RST按鍵,如圖:

此時會顯示正在燒錄,待進度條顯示100%且下方出現“SUCCESS”字樣,表示燒錄成功,如圖:

4. 結尾

經歷了多個版本的更新,本次 基於Neptune開發板的鍵盤藍芽模組0.3版本將為開發者們帶來碰一碰拉起FA,透過藍芽實現手機與鍵盤連線,從而讓鍵盤成為手機外設,控制手機輸入,而實現該版本的程式已經燒錄其中,NFC標籤的寫入也已實現,大家可以透過gitee上下載詳細的“操作文件”來了解~同時開發者們可以在Linux環境下使用 DevEco Device Tool 對開發板(W800)進行編譯燒錄,感興趣的開發者們趕緊試試這個新版本吧~

HarmonyOS開發之旅

▼▼▼玩轉開發板開源社群連結▼▼▼

▼▼▼掃碼註冊華為賬號,開啟HarmonyOS開發之旅,獲取最新學習資源。▼▼▼

▼▼▼PC端下載DevEco Studio▼▼▼

▼▼▼體驗全場景分散式開發樂趣▼▼▼

https://device.harmonyos.com/cn/ide#download

歡迎廣大夥伴和開發者朋友加入HarmonyOS

每一位開發者都是我們要匯聚的星星之火

一起創造萬物互聯時代的無限可能

原文連結: https://developer.huawei.com/consumer/cn/forum/topic/0202624226147860150?fid=0101587865002800104

原作者: HarmonyOS Device

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69970551/viewspace-2783494/,如需轉載,請註明出處,否則將追究法律責任。

相關文章