基于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台设备自由切换
更多项目更新详情,可通过下方链接查看:
https://gitee.com/openharmony-sig/vendor_oh_fun/tree/master/hihope_neptune-oh_hid
在之前的版本中,我们已经了解了硬件环境搭建和USB串口(CH340)获取等相关信息,这一次让我们把重点放在开发者们最关注的“碰一碰”的实现和HUAWEI DevEco Device Tool一站式编译、烧录步骤上,让我们一起来了解吧~
2.“碰一碰”的实现
2.1从体验角度诠释“碰一碰”实现
用户使用“碰一碰”实现蓝牙键盘连接的示意图如下:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723113817.02195516041335122747968112957084:50520726014616:2800:2C06C9DE9F0065BEA410E06F2C800334D71D6E886485EDB640050613C1ACF481.png)
- 用户通过碰一碰NFC标签拉起FA应用
- 获取蓝牙设备(开发板)MAC信息;
- 同时,手机中的蓝牙扫描将获取到的蓝牙列表与开发板MAC信息进行比对;
- 当匹配到相同开发板MAC信息将反馈连接蓝牙结果,连接该蓝牙设备;
- 同时连接成功的结果将通过被拉起的FA应用通知用户,用户可在界面上看到成功连接的提示。效果可看视频
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地址的蓝牙设备。
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114202.98081833665755163558417841321509:50520726014616:2800:5C1BC0BD97916FFCB99F0992304B75954AEA3181D302A4BAC9F0FF5452CA4513.png)
下面让我们来详细解析一下这个过程,由于我们已有Product ID且服务已发布,我们将聚焦在如何实现FA应用信息及开发板MAC地址写入NFC标签的过程中。
2.3 从动手流程学习“碰一碰”实现
接下来就让我们来详细了解一下FA应用信息及开发板MAC地址写入NFC标签过程。
2.3.1.了解写入NFC的数据样例结构
我们将为各位开发者提供一段用于写入到NFC的数据样例结构,开发者只需做很小部分的改动即可直接写入NFC标签中
数据样例结构字符串如下:
D20C1A6170702F68776F6E65686F702001004800393935330081060005200685919106286DCD824FEF
其中:
39393533表示9953的Ascill码,9953即是我们为该FA应用是已经申请好的Product Id;
286DCD824FEF用于表示BLE设备硬件编码(MAC地址),后续我们将通过获取目标BLE设备的MAC地址并将其替换掉;
2.3.2.获取BLE设备MAC地址
在“华为应用市场”安装“BLE调试助手”( 该工具用来获取目标ble设备的MAC地址),打开改工具,找到蓝牙键盘,获取蓝牙键盘的MAC地址:286DCD7C0E67
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114223.35344908329818789249641838823585:50520726014616:2800:787F81D3AEA93287C3CDE44A1E680E485A2CD4270E1453E2129FD869C9C692EB.png)
2.3.3替换目标设备的MAC地址
将2.3.2中通过BLE调试助手获取的MAC地址:286DCD7C0E67替换样例的MAC地址:286DCD824FEF,组装后的字符串为:
D20C1A6170702F68776F6E65686F702001004800393935330081060005200685919106286DCD7C0E67
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
如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114302.95063847246394807704669838188381:50520726014616:2800:5E1B93B388F29E6A5A781CE1273F4BD50552F7A6F53FFE641EB9C459C38454F9.png)
安装完毕后,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114321.24101568115850986010242317909373:50520726014616:2800:4420AA8A86EF44C122C3333A25A90AAAAE45073E19830B3188A04C248B042C62.png)
2)输入邀请码
打开该工具后,点击“add”,将要求输入一个邀请码,输入“b4zd8bz3”即可:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114338.15482113798831941957300704257290:50520726014616:2800:FD279977FDF281FAAD4BDAA98C540BBFB09CDCE44D966D0419C0540D6A9B4978.png)
3)置入缓存区
点击NFC,选择当中的NFC WRITE,进入NFC数据输入区,此时状态为“缓存区待写入”:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114346.38303623201197392786342997124026:50520726014616:2800:7E063E19EA2EAA6758210122B9BF14E9C2978CFB37C69601DB77AAC9703B07AB.png)
勾选“byte code”,将第3步获取到的组装后的字符串
D20C1A6170702F68776F6E65686F702001004800393935330081060005200685919106286DCD7C0E67
输入其中,点击“置入缓存区”,此时状态为“已写入缓存区”。
4)写入NFC贴纸
将开发好的FA应用安装到手机上,打开手机NFC功能,用手机背面(NFC传感器)靠近指定的NFC标签,完成写入。
请注意,写入时需关闭手机网络,并且尽量选用空白的NFC标签进行写入。
写入完成后,HW AirLink底部会弹出“写入成功”弹框,即表示写入成功。
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114357.17075177481942812986895632786946:50520726014616:2800:155830A82AA2E31B1740BA07B46428A219B691A01887DBC8FE0F2EB90BBD1FF5.png)
至此,我们已经清晰了解了碰一碰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
实现目录初始化,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114440.85703097927469386510521615066121:50520726014616:2800:F13E2567B7A1AE9E4E65AECB944F4CAA068BE546D0F829E8A06BF782636FA948.png)
输入:
hpm i @hihope/neptune_bluetoothkeyboard
下载对应组件及依赖包,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114524.14815143545452912473349514279048:50520726014616:2800:93E4D9A66208584650BB8172BE990D74B563BA94B206E8F4AC2FE60A663BA3CE.png)
执行完毕,显示“Installed”,表示成功下载, 如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114534.32392811908115509476778775035867:50520726014616:2800:F4A6257DE4441324186BC7F3C49A26CC2716CB52ADD886D5DB71D64F22321045.png)
最后,执行编译命令
hpm dist
如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114556.08918403086161665020866520992341:50520726014616:2800:29A3C7CCB49BFB1CF67EE698BB200E0A335706F575FA99A777B6263DB347A8C7.png)
执行完毕,显示:“Build success!”,表示编译成功,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114614.42516574901842105943425829685148:50520726014616:2800:A4B5684FD64271A1E9D6CAFB0B2122AFFE8A81439C9FFEA7399FE885170B5425.png)
编译生成的img文件,位于out目录,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114625.67186213095700239986547251432344:50520726014616:2800:9EA03C8E3E97AD2F836AD9322EF730DF2144BE5BBA0CAB45221C45389E24DC47.png)
打开“out/neptune/wifiiot_neptune/"文件夹,可找到“w800.img”文件,其就是生成的固件,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114636.95553889339859927076259576956586:50520726014616:2800:F406EDBD48FB909938373CD302C0EEA55EFF34183F4567A4AE405B713024FAA3.png)
3.2 烧录
3.2.1.获取编译好的固件
同样的,本次烧录我们将在Linux环境下完成。我们将对“out/neptune/wifiiot_neptune/"文件夹中的“w800.img”文件进行固件烧录。同时,我们也为开发者们提供已经编译好的固件,可在以下链接获取:
https://gitee.com/openharmony-sig/vendor_oh_fun/tree/master/hihope_neptune-oh_hid
3.2.2固件烧录
Linux环境下烧录固件的流程详细步骤如下:
1)将Neptune开发板通过串口连接到虚拟机
将Neptune开发板通过串口连接到电脑的USB口。如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114705.34799962922097114899536817939840:50520726014616:2800:4A4B47A9F21D7657E0A54135026F4904F7784EF7EA633A59072866D8B78C1F38.png)
在弹出的“检测到新的USB设备”窗口中,选择连接到虚拟机,虚拟机名称选择Ubuntu64位,点击确认。
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114715.61045490638181750910916593412917:50520726014616:2800:1977B9888B55A0ACFBF8327413D48BC02B6A812B9EC66B146E7473DF6986F422.png)
打开VMware,依次点开:虚拟机->可移动设备->QinHeng USB Serial->在状态栏中显示,查看是否显示,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114739.21927590785038545779366147601202:50520726014616:2800:1850218C4767C778C5EC675F0A8C8002C48F703B7AC6ADFABDD35DD6AED5CDC8.png)
此时,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),如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114750.01272105552739028003911907075948:50520726014616:2800:8C6784861E19ADBE883EA84C594DD29F144FCC8FCF1998AC71394200EC0BC062.png)
3)设置烧录固件位置
点击Partiton Configuration(步骤①),点击文件夹图标(步骤②),如图所示:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114800.51631236191913154934457926803261:50520726014616:2800:E959EB5760AB993629F5ADB3E62189182869B58B0628EC47A896D37B579ED41E.png)
找到固件所在文件夹位置,(可以自定义路径,请提前把目标固件拷贝到该位置),如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114810.26779339953276121778753193340435:50520726014616:2800:44BE794A02BBDB6712280AF88A767B22BC40130FABDCD8A921626BF30975E6F8.png)
选择目标固件“OpenHarmony_HID_V0.3.img”(步骤①),点击按钮:“Open “OpenHarmony_HID_V0.3.img””(步骤②),如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114819.98450154744155101158325840504273:50520726014616:2800:976970D3710274B233683A77A7B7C7AFDF6FC78C46919F9F4F81CAE321BDE8F1.png)
点击Save保存。
完成板子选择和烧录固件位置设置后,我们需要进行端口和烧录协议配置。
4)设置端口和烧录协议
点击:”w800“, 如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114830.79230864545751336352358982280438:50520726014616:2800:0ED2F2DD1CBA5AD7505C19EF125F97FB730517E23B7C4569123FD3EF17BC7987.png)
设置烧录端口,upload_port,选择默认值“/dev/ttyUSB0”,如果没有,可以输入“/dev/ttyUSB0”
填写烧录协议,upload_protocol,选择“xmodem”,即选择串行通信的文件传输协议。
设置upload_partitions,选择”partition:w800_app“, 即选择需要烧录的文件是哪一个。选择结果如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114840.11382307021784845162484206293753:50520726014616:2800:2149D95EA50E14C351420D6A643D9DA6825E686CEC22FC29A8244F47AFFBCE99.png)
配置完毕后,点保存配置Save即可。
5)查看已经打开的工程
点击Open,打开工程。点击Visual Studio Code左上角的Explorer图标,查看已经打开的工程:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114850.39587897877879856798745042580533:50520726014616:2800:B4B9506EB813E0BCB27A1006A8A5F7B93459377FF162ED588D50C6A53F2C41FA.png)
移除不相干的项目,防止编译异常,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114900.80372056343046498150374898578382:50520726014616:2800:DE79303D3DA183E7F4CB624D612DEC13867E23C05390B9D5F40BE4AF4E3B6D49.png)
6)烧录固件
点击DevEco,在弹出的PROJECT TASKS中选择Upload,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114910.17421363445947801312012840882840:50520726014616:2800:B5E03BACE8675BD9403D4EF926F7C8BBA979D03AE0992AA0D3679CC77121F9A5.png)
根据提示“Please reset the board”,单击开发板的RST按键,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114920.65970284079542894528182655234683:50520726014616:2800:350992E36562E81BC82D76E1E61A4B14CC052AD0CCBDE5E36E58F87797F43395.png)
此时会显示正在烧录,待进度条显示100%且下方出现“SUCCESS”字样,表示烧录成功,如图:
![image.png](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210723114930.64404270135144202716885588651768:50520726014616:2800:72E04181697356910A88761920F704D77176ADBD52E0E38787DA02442DCC585E.png)
4.结尾
经历了多个版本的更新,本次基于Neptune开发板的键盘蓝牙模块0.3版本将为开发者们带来碰一碰拉起FA,通过蓝牙实现手机与键盘连接,从而让键盘成为手机外设,控制手机输入,而实现该版本的程序已经烧录其中,NFC标签的写入也已实现,大家可以通过gitee上下载详细的“操作文档”来了解~同时开发者们可以在Linux环境下使用DevEco Device Tool对开发板(W800)进行编译烧录,感兴趣的开发者们赶紧试试这个新版本吧~
HarmonyOS开发之旅
▼▼▼玩转开发板开源社区链接▼▼▼
https://gitee.com/openharmony-sig/vendor_oh_fun
▼▼▼扫码注册华为账号,开启HarmonyOS开发之旅,获取最新学习资源。▼▼▼
![](https://communityfile-drcn.op.hicloud.com/FileServer/getFile/cmtybbs/483/046/512/2850086000483046512.20210713172519.67177083497695183755733682205709:50520726014616:2800:FE080F00BF1C8028A59CB9E82A9F6A12EFE9C4A58C2D7844C4A38A7A2A23CE81.jpg)
▼▼▼PC端下载DevEco Studio▼▼▼
▼▼▼体验全场景分布式开发乐趣▼▼▼
https://device.harmonyos.com/cn/ide#download
欢迎广大伙伴和开发者朋友加入HarmonyOS
每一位开发者都是我们要汇聚的星星之火
一起创造万物互联时代的无限可能
原文链接:https://developer.huawei.com/...
原作者:HarmonyOS Device