Solution: Electric Meter¶
1 功能概述¶
此项目是一个智能电表的解决方案,目前支持国家电网标准的 realtek 协议,此方案已完成蓝牙综合台体的12项的检测。另外国外的 Nordic 协议也支持,需要请联系公司的FAE。
重要
此例程仅存在于特殊版本的SDK中,如有需要请联系Panchip。
2 环境要求¶
board: pan108xx 相关的 evaluate board
uart: 显示串口log和shell交互
测试软件 (option): nRF Connect
执行多连接时,需要多个支持蓝牙的设备。
3 编译和烧录¶
例程位置:zephyr\samples_panchip\solution\electric-meter
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
4 项目说明¶
4.1 工作模式说明¶
蓝牙工作在两主三从模式下,能同时与 2 路(采集器、台体自动线、手持设备)主机和 3 路从(外置负荷开关、报警装置、各类外置传感器)建立连接并发数据,典型网络拓扑如下:
4.2 软件架构介绍¶
4.2.1 蓝牙连接的通信流程¶
如上图,蓝牙作为主机的时候需要去扫描特定的广播地址,这个广播地址由电表的 MCU 通过 uart 协议设置的(这儿不详细阐述设置逻辑),当主机扫描到了广播地址后,主动连接配对加密,然后查找服务,更新连接参数等。
蓝牙作为从机的时候,只需要支持配对加密,支持主机需要的服务,具体的服务结构层次如下:
primary services
UUID_SERVICE = {0x79, 0x41, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x01, 0x00, 0x40, 0x6E}
UUID_CHAR_WRITE_WITHOUT_RESP{} = {0x79, 0x41, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x01, 0x00, 0x40, 0x6E}
UUID_CHAR_NOTIFY = {0x79, 0x41, 0xDC, 0x24, 0x0E, 0xE5, 0xA9, 0xE0, 0x93, 0xF3, 0xA3, 0xB5, 0x03, 0x00, 0x40, 0x6E}
Client Characteristic Configuration
4.2.1 蓝牙芯片与电表主机的串口通信协议¶
具体协议细节内容参考<Realtek电表私有通信协议规范v1.46.pdf>
,这儿简单协议命令的一些功能
5 演示说明¶
5.1 接一个电表进行测试¶
测方法需要外接一个支持 realtek 协议的电表进行测试
5.2 串口命令测试¶
测方法需要对照<Realtek电表私有通信协议规范v1.46.pdf>的串口协议,通过一个串口工具,向EVB 板子的P06(uart TX) P07(uart RX)进行命令和场景的模拟。
5.3 自动进行多连接压力测试¶
测方法主要测试自动连接3个从机的方法,既可以压力测试设备作为从机功能,也可以测试设备作为主机的功能。测试过程中,可以通过nrf connection 软件连接测试模拟一个完整2主3从功能
主机设备,打开prj 文件最后的测试宏, 编译下载1个设备
CONFIG_METER_MASTER_TEST=y
从机设备,打开prj 文件最后的测试宏,编译下载3个设备,注意每个设备要自己设置好
CONFIG_METER_SLAVE_TEST=y
从机设置地址的位置, 在ble_interface.c 文件中,修改 addr,第一个地址,剩下3个地址不要修改
slave1 设置为 0xc1, 0, 0, 0, 0, 3
slave2 设置为 0xc1, 0, 0, 0, 0, 3
slave3 设置为 0xc1, 0, 0, 0, 0, 3
#ifdef CONFIG_METER_SLAVE_TEST
m_link_timeout = 20;
m_meter_ble_info.pair_info[0].key = 123456;
m_meter_ble_info.pair_info[1].key = 123456;
m_meter_ble_info.pair_info[2].key = 123456;
m_meter_ble_info.pair_info[3].key = 123456;
uint8_t addr[24] = {0xc1, 0, 0, 0, 0, 3, 0xff, 0, 0, 0, 0, 3,
0xff, 0, 0, 0, 0, 4, 0xff, 0, 0, 0, 0, 5};
memcpy((void *)m_meter_ble_info.addr_list.addr, addr, 24);
#endif
6 其它说明¶
6.1 配置¶
项目配置文件: prj.conf
,其中包含了 Bluetooth
、shell
、debug
等的一些配置。
其中支持的最大连接数量由如下参数配置:
CONFIG_BT_MAX_CONN=5
spart controller 特殊的配置
CONFIG_BT_SPARK_BLE_CONTROLLER_EN=y 使能SPARK controller 反之选择的是 Origin controller
CONFIG_BT_CTLR_MAX_MST_CONN=3 支持3个 master
CONFIG_BT_CTLR_MAX_SLV_CONN=2 支持2个 slave
7 RAM/Flash资源使用情况¶
Memory region Used Size Region Size %age Used
FLASH: 100932 B 384 KB 25.67%
SRAM: 44373 B 46 KB 94.20%