请教!有关CH582M MESH例程的应用

测了例程adv_ali_light_multi_element可以通过天猫精灵控制;

然后测试了以下例程:

adv_vendor_friend

adv_vendor_self_provision_with_peripheral

self_provisioner_vendor_with_peripheral

用华为荣耀平板运行WCH Mesh客户端一直搜不到终端设备。

当烧写例程:self_provisioner_vendor_with_peripheral用“蓝调试器”可以搜到“Simple Per”并且可以通信;请教的问题如下:

1)、WCH Mesh客户端一直搜不到终端,是什麽原因?若不用安卓的客户端,用两块板子直接运行例程可以不?该用哪两个例程?

2)、若用CH582M Mesh网络来做为家居控制,建议用那个例程来实现呢?比如:网关用哪个,终端用那个?

3)、有测试射频质量的例程么?现在平板距离开发板1m左右,信号质量RSSI:在 -59 dB 到-66 dB之间,这个射频不算太理想吧?



您好,WCH MESHapp是需要配合最新版evt中的手机配网例程使用的,参考下方博客。

https://www.cnblogs.com/JayWellsBlog/p/16567549.html

配网方式介绍见下方博客,主要根据节点数量以及是否想要自动管理网络来选择配网方式。

https://www.cnblogs.com/JayWellsBlog/p/16266404.html

rssi数值跟测试条件有一定关系,如果需要更准确的测试,可以参考EVT包中的定频测试例程,您留个邮箱获取定频测试配套软件,我这边节后发给您。


TECH_JW您好!

         十分感谢您的回复,我先看下您发的博客链接,有问题再请教您,我的邮箱是:个人信息保护,已隐藏 谢谢!

           


TECH_JW您好!

      看了您发的博客链接,目前有以下问题:

1)、对Hex文件合并烧写后,在WCH Mesh客户端看到一个“T”点击连接时APP闪退,过程中终端串口打印信息如下:

2.png

2)、根据您博客的内容属于“配网器配网”就是想在原有的zigbee网关上添加蓝牙Mesh功能来增加控制蓝牙终端,目前要求终端数量能在100个左右就可以。

是不把以下两个例程编译烧写就可以测试了呢,有相关教程,或文档么?

self_provisioner_vendor

self_provisioner_vendor_with_peripheral



您好,请下载官网的最新EVT使用最新库。闪退问题可能是机型适配问题,您可以将测试机的品牌、机型、系统等信息发至上面的邮箱,我们会提供优化适配。

目前我司芯片不支持zigbee,在zigbee的基础上增加mesh功能可能需要多芯片方案。需求100个节点通信,在数量上可以实现,还要考虑发包频率,节点实际布置方案等方面,您也可以将具体需求与机型信息一同发至邮箱,这边评估一下。

self_provisioner_vendor 和 self_provisioner_vendor_with_peripheral都是配网器例程,区别是带有with_peripheral的工程支持通过BLE连接手机。配网器本身作为一个节点,需要其他节点与其通信。需要配网器为其配网的节点例程有下图中的几个。

9269d0bfb7ece4c05989eb0aa028c7a.png


TECH_JW您好!

1)、在原有的zigbee网关上添加蓝牙Mesh功能,这个怨我没说清;是通过另外添加支持蓝牙Mesh功能的芯片来实现。

2、 那就是把以下两个例程中的其中一个编译同时烧写到两块板子就可以测试了是嘛?有相关教程,或文档可参考么?相对于您说的这几个例程,那个例程更适合作为网关来用呢。

self_provisioner_vendor

self_provisioner_vendor_with_peripheral



您好,多芯片方案做好芯片间的协商是可行的。

两个都是配网器代码,看需求要不要连手机通信或是调试,需要的话就必须用self_provisioner_vendor_with_peripheral。

比如说一个板子上烧写?self_provisioner_vendor_with_peripheral ,另一个板子上烧写 adv_vendor ,都上电后,配网器会先自己给自己配网,然后给未配网的 adv_vendor 配网,之后两块板子可以走mesh通信。支持天猫精灵的例程,也可以用配网器给它配网,注意修改一下CONFIG_MESH_UNSEG_LENGTH_DEF宏,网络中要统一。


TECH_JW您好!

       更换1.12版本的wch mesh的app后目前没出现闪退现象,测试后有以下问题需要向您请教;

1、adv_vendor_self_provision_with_peripheral例程用APP连接后我发送十六进制格式的数据“36”,在终端收到串口打印的数据如下:

APP_DBG simpleProfile_WriteAttrCB> simpleProfile_WriteAttrCB len: 4

profile ChangeCB CHAR1.. 

APP_DBG App_peripheral_reveived> CMD: a5

APP_DBG App_peripheral_reveived> CMD_TRANSFER 1 

APP_DBG vendor_model_srv_rsp_handler> len 4, data 0xa5 from 0x0001

APP_DBG App_trans_model_reveived> Receive trans data, len: 4

APP_DBG vendor_model_srv_rsp_handler> len 4, data 0x85 from 0x0001

感觉和我发送的数据没什么关联。

2、self_provisioner_vendor_with_peripheral烧写后用wch mesh的app搜不到任何终端,重启终端也一样,终端重启后打印如下:

CH58x_BLE_LIB_V1.41

MESH_LIB_V1.60

APP_DBG blemesh_on_sync> Bluetooth initialized

APP_DBG prov_complete> 

APP_DBG blemesh_on_sync> Mesh network restored from flash

APP_DBG blemesh_on_sync> Mesh initialized

Initialized..

Advertising..

APP_DBG keyPress> 1

3、两块板子分别烧写例程self_provisioner_vendor_with_peripheral和例程adv_ali_light_multi_element然后给烧写self_provisioner_vendor_with_peripheral先上电,烧写例程adv_ali_light_multi_element的板子后上电没看到有组网现象。

                                                                                                                   谢谢!



手机APP给节点发包是通过BLE的,需要在BLE包中包含MESH网络中的目标地址,故最前面的0xa5是应用层指令标志(第一个字节的标志在App_trans_model_reveived 和 App_peripheral_reveived 函数中的 case 后可以看到),后面两个字节是目标地址,这3个字节是帮助BLE数据转发到MESH网络中的,之后的数据是您输入的0x36。

打印中出现了Mesh network restored from flash,说明是从芯片的flash中恢复的配网数据,恢复之后即为已配网状态,不会广播配网信标,此时再用WCH MESH去配网,是搜不到的。您可以在下载程序是,选择清空dataflash,清除配网信息。

配网器+多元素的参考代码我会发至您邮箱,您比对一下源文件看看作了哪些修改。


TECH_JW您好!

     首先,感谢您的回复和帮助,我选择了“清空DataFlash”,烧写软件截图如下:

QQ图片20221010195122.png

终端烧录好打印信息如下: 

1.png

   用平板的客户端WCH Mesh搜不到任何终端设备、用公版蓝牙助手可以看到"Simple Per"的终端,而且可以连接和通信。




清除dataflash之后,在wch mesh app的首页点击“增加节点”也搜不到吗,换用其他手机或移动设备,点“增加节点”能否搜到。没有配网的话点击“连接”是不能搜到的。还是不行的话可以通过邮件将平板的品牌、机型反馈一下,我们查查看是否为适配问题。


TECH_JW您好!

      例程adv_vendor_self_provision_with_peripheral用APP客户端WCH Mesh是可以搜到和通信,我等会儿把平板型号发到您邮箱里,谢谢!



TECH_JW您好!

对于例程:elf_provisioner_vendor请教一些问题如下:

1)、若要判断是哪个终端发送过来的数据是不就在函数static void vendor_message_cli_trans(struct bt_mesh_model? ?*model,struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *buf)里,以下判断语句里修改添加呢?

if(vendor_model_cli->handler)

{

vendor_model_cli->handler(&vendor_model_cli_status);//是否在此处增加修改就可以呢?

}

2)、若要给指定的终端发送数据该在哪个函数里实现?



您好,确实可以在这里获取到发送节点的地址,不过app_vendor_model_cli.c是我司提供的透传模型源文件,找更底层的bug时可以用到,一般尽量不要修改。代码在app.c中将数据传递出来了,发送端地址和数据都可以获取到,见下方博客中的介绍。

https://www.cnblogs.com/JayWellsBlog/p/16285717.html

使用透传模型发送可以在app.c的App_ProcessEvent函数中,以TMOS事件的形式实现。TMOS系统的简单应用见下方博客。

https://www.cnblogs.com/debugdabiaoge/p/15775521.html


TECH_JW您好!

          我对self_provisioner_vendor代码进行了添加,遇到以下问题,请帮助指导一下:

一、添加任务事件:

           我在app.h文件中做了定义; #define UART_DATA_RT      (1 << 3)

       在app.c文件中做了如下添加:

       1)、在void App_Init(void)函数中添加了:

               tmos_start_task(App_TaskID, UART_DATA_RT, 5000);

      2)、在static uint16_t App_ProcessEvent(uint8_t task_id, uint16_t events)函数中做了如下修改:

1.png

串口打印信息如下:

3.png

                   请教一下,为什么我添加任务事件无效呢?

二、按键无反应:

2.png

         当按下按键时,无任何信息打印,对比了其它例程没发现不同的地方。为什么按键无效?



您好,TMOS事件判断进入标志改个符号如下

6447a1d20de9a97ef786e9c767c9f3a.jpg


我司582评估板上的Key对应PB4,默认代码的按键应该是开启的,排查一下下面几个地方是否被更改。

cd7adf97bb0d7af7ac22c8705e628d2.png

b61e1b9b8ab31b32f9b1982ce9f9e92.jpg

03f96e636e01fb6cdc3f7ecea96077c.jpg

3f490a5347bdab47fc5b0bb79f814fc.jpg

92902e4ea9ae58930bf85548d25763d.jpg


只有登录才能回复,可以选择微信账号登录