基于Neptune开发板-如何实现BLE功能操作分析 原创 精华
润和的Neptune开发板是一款高性价比Wi-Fi&蓝牙双模SoC开发板,基于W800芯片,是一款具有极高性价比与可玩性鸿蒙开发板。因为Neptune开发板具有BLE功能,但却一直无法使用BLE功能,近期通过阅读W800 SDK与润和基于Neptune开发板的键盘蓝牙模块的开源代码,清楚了Neptune开发板如何实现BLE功能。
话不多说,主要操作与分析如下:
一、W800 SDK操作与分析
步骤一:通过git下载W800 SDK
git clone git@gitee.com:wendal/wm_sdk_w800.git
步骤二:进入W800 SDK目录下使用make 命令编译
cd wm_sdk_w800
make
步骤三:将wm_sdk_w800目录下bin/w800中w800.img烧录到Neptun开发板中,烧录完毕后运行如下图:
这里之所以会输出user task 因为wm_sdk_w800/app/main.c 程序中只有这一条printf(“\n user task \n”);运行指令
步骤四:使用W800 SDK中BLE DEMO程序
1.进入wm_sdk_w800/demo/wm_demo.h中
2.将需要使用的DEMO程序由DEMO_OFF->DEMO_ON 修改如下:
8行:#define DEMO_CONSOLE DEMO_ON
97行 #define DEMO_BT (DEMO_ON && DEMO_CONSOLE)
3.使用make 命令编译,烧录,运行如下图:
4.键入t-bt-on先打开蓝牙 后键入t-ble-server-on打开蓝牙服务
5.使用nRF Connect APP连接蓝牙 蓝牙默认WM-XX:XX:XX:XX 并发送数据
开发板响应如下:
可以看到下方有发送的数据显示,说明手机与Neptune开发板蓝牙通信有效。
分析:通过对W800 SDK中BT DEMO运行与代码的分析其执行的t-bt-on与t-ble-server-on等执行命令函数来源主要来自于wm_sdk_w800/src/app/bleapp中wm_bt_app.c与wm_ble_server_api_demo.c中demo_bt_enable()与demo_ble_server_on()函数,其中demo_ble_server_on()中tls_ble_server_demo_api_init(NULL);是发起BLE服务函数,若我们想使用BLE只需要参考bleapp中demo新增或修改即可。
二、基于Neptune开发板的键盘蓝牙模块的开源代码的修改并openharmonys中使用W800 SDK/BT DEMO程序
步骤一:通过git下载基于Neptune开发板的键盘蓝牙模块的开源代码(v0.1版本)
git clone -b v0.1 git@gitee.com:hihopeorg/Neptune-HarmonyOS-IOT.git
步骤二:将Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/src目录下app文件夹删除并替换成/wm_sdk_w800/src目录下app文件夹。
步骤三:执行pytho build.py w800命令看是否编译成功若没有编译成功则是上一步骤错误(编译有点慢😂)
步骤四:烧录并运行,运行结果如下:
步骤五:按照上述打开W800 SDK/BT BEMO方法打开DEMO程序,编译并烧录,运行如下图所示:
不知为何手机发送数据Neptune开发板莫有输出?????
分析:通过对上述操作与润和基于Neptune开发板的键盘蓝牙模块的开源代码分析,发现润和基于Neptune开发板的键盘蓝牙模块是基于openharmonyos与下层W800 SDK之间解耦来操作蓝牙等应用,其主要键盘蓝牙模块是操作W800 SDK 中bleapp通过新增ble服务和修改ble demo完成其蓝牙功能,当然也有部分ble相关函数有修改具体部分我还没有阅读到。
附注主要入口与注意事项:
主要入口:
Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/platform/sys/wm_main.c
Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/app/main.c
注意事项:Neptune-HarmonyOS-IOT/vendor/winnermicro/w800/src/app有两个关于蓝牙的操作应用其bleapp目前协议栈用的是新的,其btapp是旧版本。