
评测五 电表蓝牙配置(小项目) 之前申请评测就讲过电力物联网的事,现在电表配的蓝牙功能要符合国网电科院的规定,具体为MAC地址、profile、类型等等诸多要求,效果如下:一、设备名 设备名这个没要求,可选,规GAP管,在app_ble.c的广播函数Adv_Request把a_LocalName=“Meter”,同时连接后GAP名字也要改,具体Ble_Hci_Gap_Gatt_Init的aci_gap_init的name=“Meter”,同时实际长度APPBLE_GAP_DEVICE_NAME_LENGTH=5, ![]() 图1 电表广播 二、MAC地址MAC有要求,类型为静态随机地址,在app_conf.h修改CFG_IDENTITY_ADDRESS、CFG_BLE_ADDRESS_TYPE均为GAP_STATIC_RANDOM_ADDR,同时要把表地址设进MAC地址,把随机数a_srd_bd_addr设成表地址如上图。 ![]() 图2 MAC要求 三、service 很明显,新建profile是最直接的路子,通过aci_gatt_add_service、aci_gatt_add_char、aci_gatt_add_char_desc接口来添加服务、特征、描述符等,详见《AN5289 - Building a Wireless application》6.1 Initialization phase章节描述,比如p2pserver源码在p2p_stm.c里P2PS_STM_Init强函数中。电表蓝牙profile如下: ![]() 图3 电表通信profile配置 但在短时间内不熟悉情况下很难完成,于是改造原来已存的服务为电表抄表服务,于是在p2p_stm.c的事件回调里PeerToPeer_Event_Handler往UUID=7941dc24-0ee5-a9e0-93f3-a3b50200406e写入DL/T645请求报文,回复报文在UUID=7941dc24-0ee5-a9e0-93f3-a3b50300406e以通知方式发送:
主站请求:68 AA AA AA AA AA AA 68 13 00 DF 16 电表回复:68 11 11 11 11 11 11 68 93 06 44 44 44 44 44 44 67 16 成功读到表地址为11 11 11 11 11 11: ![]() 图4 成功读到表地址 |
【NUCLEO-WBA65RI评测】围绕BleApplicationContext_t的端侧蓝牙开发逻辑
STM32入门系列-学习STM32要掌握的内容
【NUCLEO-WBA65RI评测】Android Studio手机端蓝牙开发
【NUCLEO-WBA65RI评测】6.手机蓝牙控制电机运动
【NUCLEO-WBA65RI评测】Android端蓝牙OTA升级
【NUCLEO-WBA65RI评测】USB HID设备测试
【NUCLEO-WBA65RI评测】5.OTA后不能Debug的原因和解决方案
新手必看!STM32单片机应该怎么学?
【NUCLEO-WBA65RI评测】使用BLE-Serial-comm进行BLE调试,蓝牙BLE动态运行
【NUCLEO-WBA65RI评测】评测小结