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

Solution: BLE Vehicles Key

1 功能概述

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

2 环境要求

  • board: pan108xxb1_mesh_dongle

  • uart (option): 显示串口shell

  • 测试硬件:智能手机

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

3 编译和烧录

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

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

4 演示说明

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

Start uart fifo demo..
Set up key1 at GPIO_P1 pin 0
controller initializing....
Bluetooth initialized
Advertising successfully started


[00:00:00.032,000] <inf> fs_nvs: 8 Sectors of 4096 bytes
[00:00:00.032,000] <inf> fs_nvs: alloc wra: 0, f80
[00:00:00.032,000] <inf> fs_nvs: data wra: 0, 90
[00:00:00.130,000] <inf> bt_hci_core: No ID address. App must call settings_load()
[00:00:00.134,000] <inf> bt_hci_core: Identity: C9:07:1B:E8:6B:DC (random)
[00:00:00.134,000] <inf> bt_hci_core: HCI: version 5.1 (0x0a) revision 0x0003, manufacturer 0x07d1
[00:00:00.134,000] <inf> bt_hci_core: LMP: version 5.1 (0x0a) subver 0x0000
[00:00:00.140,000] <inf> bt_adv: Start Advertising as 48:EB:23:E9:73:83 (random)

uart:~$
  clear    date     device   devmem   flash    help     history  kernel
  log      pwm      resize   sensor   shell    vcmd
uart:~$ vcmd
  tx_power        rssi_open_thr   rssi_close_thr
uart:~$ vcmd
  1. 智能手机蓝牙设置中找到PAN Vehicle Key设备,选中连接直接配对。

uart:~$ Connected via connection (0) at 72:1C:DD:8C:DC:3F (random)
Security changed: 72:1C:DD:8C:DC:3F (random) level 2
ccc 0001
ccc consumer 0001
image

手机配对界面

  1. 然后我们就可以通过支持的test命令来模拟蓝牙自拍杆的相关动作

5 支持的模拟测试命令

测试命令

功能描述

vcmd tx_power

设置发射功率

vcmd rssi_open_thr

设置“开”状态的阈值

vcmd rssi_close_thr

模拟“关”状态的阈值

相应命令支持的函数可以参考shell命令实现:

SHELL_STATIC_SUBCMD_SET_CREATE(vcmd_test,
			       SHELL_CMD(tx_power,       NULL,   "Set RF Tx Power",  cmd_tx_power),
				   SHELL_CMD(rssi_open_thr,  NULL,   "Set RSSI Threshold Value",  cmd_rssi_open_thr),
				   SHELL_CMD(rssi_close_thr, NULL,   "Set RSSI Threshold Value",  cmd_rssi_close_thr),
			       SHELL_SUBCMD_SET_END /* Array terminated. */
			       );

SHELL_CMD_REGISTER(vcmd, &vcmd_test, "Vehicle Test commands", NULL);

6 Dongle硬件说明

image

dongle工作状态

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

  2. 红灯用于rssi阈值模拟开关状态,如果超出rssi设定的某个阈值,该红灯会灭掉。

  3. 蓝灯表示连接状态,亮表示处于连接中,灭表示已经断连。

  4. UART1 P06,P07可以用于输出串口流数据,图形化观察RSSI变动,使能开关为CONFIG_RT_RSSI_UART_GRAPH。

7 实时观察RSSI

image

RSSI实时状态

通过UART1(P06,P07)连接串口模块(波特率为921600,可参考上图设置),即可实时观察RSSI状态,其中示意图中绿色的为滤波后的RSSI,蓝色为处理前的原始RSSI。

RSSI波形串口工具下载地址:SerialTool1.4.0a_Win32_Setup.exe

8 RAM/Flash资源使用情况

Memory region         Used Size  Region Size  %age Used
FLASH:      141724 B       256 KB     54.06%
SRAM:       43918 B        50 KB     85.78%