常见问题

更新时间:2022-11-24 09:20:03下载pdf

如何移植蓝牙 SDK?

请参考 SDK 移植

如何给设备授权?

  • 开发调试阶段:常使用 授权码清单 给调试设备授权,在代码中写入授权信息。具体操作方式,请参考 SDK 移植 蓝牙 SDK 初始化函数章节。

    static tuya_ble_device_param_t tuya_ble_device_param = {
    	.use_ext_license_key = 1, //1-调试阶段设置为1,表示使用以下应用程序传入的 license;固件release后,需要将此设置为 0,SDK 将不会使用传入的license,而是通过涂鸦生产烧录软件进行授权。
    	.device_id_len       = 16, //如果 use_ext_license_key 为 0,License 通过涂鸦产测工具授权获得。此时,不需要传入 license,将 device_id_len 赋值为 0 即可。
    	.p_type              = TUYA_BLE_PRODUCT_ID_TYPE_PID,
    	.product_id_len      = 8,
    	.adv_local_name_len  = 4,
    	.firmware_version    = 0x00000201,  //固件版本 2.1
    	.hardware_version    = 0x00000100,  //硬件版本 1.0
    	.device_id           = "tuyaf3752699xxxx"  //license 中的参数,可通过以下渠道获取~
    	.auth_key            = "4gBM3DK6SRmRn9LTLbyOUAz3bHMGxxxx" ////license中的参数,可通过以下渠道获取~
    	.mac_addr_string     = "DC234D12XXXX"  ////license 中的参数,可通过以下渠道获取~
    	.product_id          = "suq5jmo5" //填入涂鸦 IoT 平台新建产品时自动生成的 PID
    	.adv_local_name      = "demo"  //应用程序自定义蓝牙广播名字的变量
    };
    
    void tuya_ble_sdk_demo_init(void)  //封装初始化函数,应用程序必须调用此函数完成初始化
    {
    	if(device_param.use_ext_license_key==1)
    	{
    		device_param.device_id_len = 16;  //若使用调试传入license方式,device_id_len=16,否则=0
    	}
    	tuya_ble_sdk_init(&tuya_ble_device_param); //蓝牙 SDK初始化函数,否则 SDK不能运行。
    	TUYA_APP_LOG_HEXDUMP_INFO("auth key", tuya_ble_current_para.auth_settings.auth_key, AUTH_KEY_LEN);   //打印 auth_key
    	TUYA_APP_LOG_HEXDUMP_INFO("device id", tuya_ble_current_para.auth_settings.device_id, DEVICE_ID_LEN);  //打印 device_id
    
    	tuya_ble_callback_queue_register(tuya_ble_sdk_callback);//注册事件回调函数
    
    }
    
  • 生产阶段:需要使用工装和 涂鸦云模组烧录授权平台 授权生产设备。请参考 授权说明

    1. 购买生产凭证 token,安装上位机产测工具。

    2. 将设备和上位机通过 UART 连接好。

    3. 点击上位机运行,即与设备交互,写入授权信息。

    4. 授权所使用的固件版本和名称要与 IoT 平台上传的固件信息一致。

      使用 涂鸦云模组烧录授权平台 授权设备, 此时代码中需要将 use_ext_license_key 设置为0,device_id_len 设置为0 。

授权码中的 Mac 需要写入吗?

需要写入,虽然目前使用自定义的 Mac 地址也可以工作,但是后续蓝牙设备接入规范会基于 Mac 地址管理注册设备。

芯片 SDK 代码中的 h_id 是什么?

h_id 是 SDK 内部设备管理使用的,您无需更改 h_id

如何上报下发数据?

数据上报下发等相关应用方法,请查看 应用开发

广播和连接间隔等参数有何要求?

涂鸦蓝牙 SDK 不负责不参与广播间隔和连接间隔的设置,设备的应用程序需要根据产品功能和性能需求自定义广播和连接参数。

iOS 系统对连接参数有一定的限制,如果不满足 iOS 的规范,设备在更新连接参数时会遭到手机拒绝。目前 iOS 要求的连接参数需满足以下要求(广播间隔不宜超过 1 秒,否则很难被手机扫描发现连接):

  • 最小间隔 ≥ 15 ms (或者 15 ms 的倍数)
  • 最小间隔 + 15 ms ≤ 最大间隔 (最大间隔 == 15 ms 是允许的)
  • 最大间隔 * (子节点延迟 + 1) ≤ 2 秒
  • 最大间隔 * (子节点延迟 + 1) * 3 < connSupervisionTimeout
  • 子节点延迟 ≤ 30
  • 2 秒 ≤ connSupervisionTimeout ≤ 6 秒

涂鸦提供 bootloader 吗?

  • 如果您选用的蓝牙芯片型号,在涂鸦有对应的芯片平台 SDK,则涂鸦提供的资料里有 bootloader 示例。
  • 如果没有,则需要您自己移植涂鸦蓝牙 SDK 以及编写 bootloader 和固件 OTA 相关代码,bootloader 的编写要考虑固件验证,防止非法固件写入运行。
    • 基线 SDK 完全包含在名为 tuya_ble_sdk 的文件夹内,主要实现了涂鸦智能设备和涂鸦智能 App 之间的
    • 通信协议以及通用的事件调度机制,具备跨平台特性。
    • 平台 SDK 完全包含在名为 tuya-ble-sdk-demo-project-xxxx(xxxx 指代不同平台)的文件夹内,平台 SDK 是基线 SDK 在不同芯片平台的具体实现,已经完成了常用的 OTA 功能、低功耗功能、授权功能等,并提供了一整套完善的串口测试机制和一些常见的应用例程。

为什么设备无法被 App 搜索到?

  1. 请确认是否正确完成移植操作,蓝牙 SDK 是否正常运行。更多详情,请参考 SDK 移植
  2. 请确认授权信息和 PID 是否填写正确。更多详情,请参考 蓝牙 SDK 初始化函数
  3. 请确认设备广播是否正常,设备是否处于未绑定状态。更多详情,请参考 蓝牙配网

涂鸦蓝牙 SDK 对功耗有什么影响?

涂鸦 SDK 不会影响蓝牙芯片原有功耗架构。请按照 涂鸦蓝牙 SDK 移植 正确移植 SDK,并检查功耗相关代码。

一般影响功耗的因素有:

  • 是否开启低功耗模式(sleep)
  • 低功耗模式下是否关闭外设
  • 蓝牙广播间隔
  • 蓝牙连接间隔

建议您查看蓝牙芯片手册,结合以上功耗因素检查代码,降低设备功耗。