当前文档版本为 v1.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

Solution: Tencent ble iot vehicle

1 功能概述

此项目演示模拟蓝牙感应钥匙功能,当手机足够接近电动车时,会自动解锁电动车。实际该项目通过灯的状态来观察开关,通过距离远近会影响灯的开关以及亮度。

2 环境要求

  • board: pan108xxb1_mesh_dongle

  • uart (option): 显示串口shell

  • 测试硬件:智能手机,微信小程序

  • PC工具: 软件shell工具(支持串口,波特率921600)

  • 确认zephyr同级目录modules文件夹向下:存在 modules\lib\qcloud-iot-ble文件夹。

3 编译和烧录

例程位置:zephyr\samples_panchip\solutions\tencent_ble_iot_vehicle,编译时board请选pan108xxb1_mesh_dongle

编译时会将modules\lib\qcloud-iot-ble\qcloud_llsync文件夹拷贝到tencent_ble_iot_vehicle项目文件夹下,如果编译失败并且qcloud_llsync中内容为空,建议删除qcloud_llsync重新编译。

默认原生支持EVB为pan108xxb1_mesh_dongle

使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍

4 演示说明

  1. 将tencent_ble_iot_vehicle烧录至EVB板后,使用shell工具连接上EVB开发板(波特率921600),会显示如下log。通过连续双击tab可以显示出当前可用的命令。

Try to load HW calibration data.. DONE.
*** Booting Zephyr OS build zephyr-v2.7.0-1248-gd03ebd76a3f5  ***
*** llcontroller-v1.0.0-0559423d ***
controller initializing....
Bluetooth initialized
Version:0.0.1
Set up key1 at GPIO_P1 pin 0
c8 ad 65 47 bd d8 qiot debug: bind state: 0 ---> 0
device id : 80Q7CA6M37C8AD6547BDD8 device psk : xo33NXGcLMTo/fuImd2fsA== 
qrcode str : https://iot.cloud.tencent.com/bind?d=80Q7CA6M37C8AD6547BDD8&sig=13b4e90b41dd03bbf6ee3e96edb469be
Advertising stopped
qiot debug: bind state: 0 ---> 1

ble qiot dump: broadcast, length: 17
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
===============================================
39 C8 AD 65 47 BD D8 38 30 51 37 43 41 36 4D 33 | 9..eG..80Q7CA6M3
37                                              | 7

Advertising successfully started
qiot info: start wait advertising


[00:00:00.002,000] <wrn> bt_hci_core: Failed to set device name (-12)
[00:00:00.100,000] <inf> bt_hci_core: Identity: D4:A3:B3:49:9B:D8 (random)
[00:00:00.100,000] <inf> bt_hci_core: HCI: version 5.1 (0x0a) revision 0x0003, manufacturer 0x07d1
[00:00:00.100,000] <inf> bt_hci_core: LMP: version 5.1 (0x0a) subver 0x0000
[00:00:00.122,000] <inf> bt_adv: Start Advertising as C8:AD:65:47:BD:D8 (random)

uart:~$ 
  1. 打开微信程序,搜索腾讯连连,打开腾讯连连小程序,扫一扫二维码(tencent_ble_iot_vehicle\wechat_qrcode.png),也可以直接参考下图二维码。

    二维码的生成信息在启动log中会显示,见下(也可以参考上段启动log信息):

qrcode str : https://iot.cloud.tencent.com/bind?d=80Q7CA6M37C8AD6547BDD8&sig=13b4e90b41dd03bbf6ee3e96edb469be

使用https://cli.im/此网站,贴入https://iot.cloud.tencent.com/bind?d=80Q7CA6M37C8AD6547BDD8&sig=13b4e90b41dd03bbf6ee3e96edb469be该信息,点击生成二维码即可。

image

demo中示例入网二维码

  1. 配对成功后我们就可以通过微信小程序进行控制了。

image

二轮电动车微信小程序

  1. 启动无感解锁,无感解锁时需要设置小程序的蓝牙权限总是打开。

image

使能无感解锁

5 支持的测试命令

测试命令

功能描述

test set_ble_mac

设置mac地址,同时也是设置device name(三元组信息之一)。tencent wheeler sdk中要求ble mac地址和设备名称是保持一致的。

test set_product_id

设置product id字符信息(三元组信息之一)

test set_secret_key

设置secret字符信息(三元组信息之一)

test save_tripple_in_flash

保存三元组信息到flash,同时重启芯片。三元组信息请同时修改。

test ble_event_report_property

腾讯连连认证测试命令(详情见认证文档)

test ble_event_get_status

腾讯连连认证测试命令(详情见认证文档)

test ble_event_post_warnning

腾讯连连认证测试命令(详情见认证文档)

test ble_event_post_error

腾讯连连认证测试命令(详情见认证文档)

test ble_rssi_log_enable

使能或者关闭rssi log,无感连接时会一直输出rssi log,可能会影响输入命令查看。

image

腾讯qcloud三元组信息

image

通过命令更新三元组信息

我们可以看到更新三元组后重启后广播地址也发生变化了,并且上电打印的key信息和命令设置中的一致。

下框为关闭打开rssi log功能:

uart:~$ test ble_rssi_log_enable 0
ble_set_rssi_log
disable ble_set_rssi_log
uart:~$ test ble_rssi_log_enable 1
ble_set_rssi_log
enable ble_set_rssi_log
uart:~$ 

6 Dongle硬件说明

image

dongle工作状态

  1. K1按键用于清除配对信息。

  2. 红灯用于模拟报警。

  3. 蓝灯用于模拟鸣笛寻车。

  4. 绿色PWM灯指示是否开锁。

7 腾讯云控制台导入物模型

腾讯云控制台新建产品时导入二轮电动车模型时,可以直接使用modules\lib\qcloud-iot-ble\qcloud_llsync\date_template\two_wheeler.json

详情参考以下蓝牙设备接入指引的创建数据模板章节:

https://cloud.tencent.com/document/product/1081/50969

8 腾讯连连调参指南

8.1 广播周期调整

ble_qiot_ret_status_t ble_advertising_start(adv_info_s *adv)
{
	int err;

    uint8_t len = 0;

    memcpy(manufacturer_buffer, &adv->manufacturer_info.company_identifier, sizeof(uint16_t));
    len = sizeof(uint16_t);
    memcpy(manufacturer_buffer + len, adv->manufacturer_info.adv_data, adv->manufacturer_info.adv_data_len);
    len += adv->manufacturer_info.adv_data_len;

    ad[MANUFACTURER_AD_INDEX].data_len = len;
    ad[MANUFACTURER_AD_INDEX].data = manufacturer_buffer;

	/*此处广播周期由BT_GAP_ADV_FAST_INT_MAX_1来决定,可以在项目找到该宏定义或者合适的宏,甚至自定义相应的值来调整广播周期。自定义的值请遵守蓝牙规范*/
	err = bt_le_adv_start(BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE,BT_GAP_ADV_FAST_INT_MAX_1,BT_GAP_ADV_FAST_INT_MAX_1,NULL),
     ad, ARRAY_SIZE(ad), sd, ARRAY_SIZE(sd));

	if (err) {
		printk("Advertising failed to start (err %d)\n", err);
	}

	printk("Advertising successfully started\n");

    return 0 == err ? BLE_QIOT_RS_OK : BLE_QIOT_RS_ERR;
}

8.2 腾讯连连软件算法调参

//This macro is an encryption function of the LLSync firmware. When turned on, LLSync encrypts data during the binding、
//connection and control phases. (Open this macro to note whether encryption is turned on in the cloud platform)
#define BLE_QIOT_SESSION_ENCRYPT              (1)
#if BLE_QIOT_SESSION_ENCRYPT
    // Sensorless locking macro, which automatically closes the lock when the specified rssi value is reached if it is switched on
    #define BLE_QIOT_SLIENCE_LOCK             (1)
    #if BLE_QIOT_SLIENCE_LOCK
        // The rssi value will fluctuate, this value is the fluctuation range of the anti-shake
		/*去抖参数*/
        #define BLE_QIOT_JITTER_VALUE         (5)

        // The number of times the threshold value is exceeded, after which the lock-off logic is executed
		/*连续达到开关逻辑RSSI阈值的次数*/
        #define BLE_QIOT_MORE_THAN_RSSI_NUM   (6)

        // Testing rssi's mode, 0-off 1-on, Only the scanned rssi values are printed when switched on, no locking action is performed
        #define BLE_QIOT_RSSI_TEST            (0)

        // Slience lock timer detection cycle (ms)
		/*RSSI采样定时器参数*/
        #define BLE_QIOT_SILENCE_LOCK_TIMEOUT (150)

        // Near distance off lock rssi values
		/*触发近距离开关的RSSI阈值*/
        #define BLE_QIOT_CONN_RSSI_NEAR       (-50)
        // Medium distance off lock rssi values
		/*触发中距离开关的RSSI阈值*/
        #define BLE_QIOT_CONN_RSSI_MEDIUM     (-63)
        // Far distance off lock rssi values
		/*触发远距离开关的RSSI阈值*/
        #define BLE_QIOT_CONN_RSSI_FAR        (-73)
    #endif
#endif

BLE_QIOT_MORE_THAN_RSSI_NUM * BLE_QIOT_SILENCE_LOCK_TIMEOUT为实际触发开关的最小时间,请根据实际测试结果进行调参。

9 腾讯连连认证证书

image

腾讯连连认证证书

10 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:      148956 B       384 KB     37.88%
SRAM:       46512 B        50 KB     90.84%