更新时间:2024-06-25 10:00:13下载pdf
本文档于 2021 年 8 月 24 日停止更新。 如果您想查看更新的内容,请参考 《TuyaOS》蓝牙设备接入。
涂鸦 BLE SDK 完整示例 Demo 由两部分组成:
如果没有所选芯片的 Demo Project,您可以下载 Tuya BLE SDK 并根据 SDK 中的文档说明自行移植(下载地址:Tuya BLE SDK)。
Tuya BLE SDK Demo Project 下载地址见下表所致。请参考各分支下的 README.md
文件完成工程导入。
芯片平台 | 型号 | 下载地址 |
---|---|---|
Nordic | nrf52832 | tuya_ble_sdk_Demo_Project_nrf52832.git |
Realtek | RTL8762C | tuya_ble_sdk_Demo_Project_rtl8762c.git |
Telink | TLSR825x | tuya_ble_sdk_Demo_Project_tlsr8253.git |
Silicon Labs | BG21 | 正在规划中,敬请期待 |
Beken | BK3431Q | Tuya_ble_sdk_demo_project_bk3431q.git |
Beken | BK3432 | tuya_ble_sdk_Demo_Project_bk3432.git |
Cypress | Psoc63 | tuya_ble_sdk_Demo_Project_PSoC63.git |
软件环境
IDE 根据芯片原厂 SDK 要求进行安装。
硬件环境
硬件平台可以选用芯片原厂对应的开发板,或者使用自研 PCBA,Tuya BLE SDK Demo Project 是基于芯片原厂开发板开发测试。
README.md
文件说明导入工程,编译固件,下载固件到硬件开发板或者其他硬件 PCBA。Demo Project 中包含的文件的功能说明如下表所示。
文件名 | 功能 |
---|---|
tuya_ble_app_demo.c | application 示例主文件,存放 SDK 初始化函数、消息处理函数等 |
tuya_ble_app_demo.h | 头文件 |
tuya_ble_app_ota.c | OTA 相关代码 |
tuya_ble_app_ota.h | 头文件 |
custom_app_product_test.c | 自定义产测项目相关实现 |
custom_app_product_test.h | 头文件 |
custom_app_uart_common_handler.c | UART 通用对接实现代码文件,不使用可忽略 |
custom_app_uart_common_handler.h | 头文件 |
custom_tuya_ble_config.h | application 配置文件 |
在 tuya_ble_app_demo.h
填入在涂鸦开发者平台创建的智能产品 PID。
#define APP_PRODUCT_ID "xxxxxxxx"
将其中 xxxxxxxx
替换为PID。
在 tuya_ble_app_demo.c
填入申请的授权码(uuid 和 auth key)。
static const char auth_key_test[] = "yyyyyyyy";
static const char device_id_test[] = "zzzzzzzz";
其中 yyyyyyyy
替换为 auth key, zzzzzzzz
替换为 uuid.
修改好后编译代码,并下载固件至硬件运行(根据所选的芯片型号有可能还需要下载 stack 和 bootloader),观察 log 日志 ,并用第三方蓝牙调试 App(例如 IOS 下的 lightBlue)扫描确认设备有没有正常广播。
下图为 nrf52832 示例 Demo 的开机日志。
在 App Store 或者 Google Play 中下载 涂鸦智能 App。
注册账号并登录。
单击 添加设备 > 自动发现 > 开启蓝牙 > 开始搜索。
搜索到设备后单击下一步开始注册配网,配网完成后默认进入设备面板。
单击每个 DP 进行数据收发测试。
修改tuya_ble_app_demo.h
里的固件版本号,例如原来是 1.0 可以改为 1.1。
//固件版本
#define TY_APP_VER_NUM 0x0101
#define TY_APP_VER_STR "1.1"
编译固件生成 OTA 文件(bin 或者 HEX 根据芯片平台而定)。
在涂鸦开发者平台新建的产品页面配置固件升级。
单击固件升级进入固件升级配置页面,单击创建新固件上传新固件,填写正确的固件版本号。
单击测试白名单管理,输入要升级设备的设备 ID,设备 ID 查找如下图所示。
设备应用 通过 ID 为 TUYA_BLE_CB_EVT_DP_WRITE
的 CALL BACK EVENT 接收处理 DP 数据,调用 tuya_ble_dp_data_report()
可以发送 DP 数据,例如:
static void tuya_cb_handler(tuya_ble_cb_evt_param_t* event)
{
int16_t result = 0;
switch (event->evt)
{
case TUYA_BLE_CB_EVT_CONNECTE_STATUS:
TUYA_BLE_LOG_INFO("received tuya ble conncet status update event,current connect status = %d",event->connect_status);
break;
case TUYA_BLE_CB_EVT_DP_WRITE:
dp_data_len = event->dp_write_data.data_len;
memset(dp_data_array,0,sizeof(dp_data_array));
memcpy(dp_data_array,event->dp_write_data.p_data,dp_data_len);
TUYA_BLE_LOG_HEXDUMP_DEBUG("received dp write data :",dp_data_array,dp_data_len);
tuya_ble_dp_data_report(dp_data_array,dp_data_len);
//custom_evt_1_send_test(dp_data_len);
break;
case TUYA_BLE_CB_EVT_DP_DATA_REPORT_RESPONSE:
TUYA_BLE_LOG_INFO("received dp data report response result code =%d",event->dp_response_data.status);
break;
case TUYA_BLE_CB_EVT_DP_DATA_WTTH_TIME_REPORT_RESPONSE:
TUYA_BLE_LOG_INFO("received dp data report response result code =%d",event->dp_response_data.status);
break;
case TUYA_BLE_CB_EVT_UNBOUND:
TUYA_BLE_LOG_INFO("received unbound req");
break;
case TUYA_BLE_CB_EVT_ANOMALY_UNBOUND:
TUYA_BLE_LOG_INFO("received anomaly unbound req");
break;
case TUYA_BLE_CB_EVT_DEVICE_RESET:
TUYA_BLE_LOG_INFO("received device reset req");
break;
case TUYA_BLE_CB_EVT_DP_QUERY:
TUYA_BLE_LOG_INFO("received TUYA_BLE_CB_EVT_DP_QUERY event");
tuya_ble_dp_data_report(dp_data_array,dp_data_len);
break;
case TUYA_BLE_CB_EVT_OTA_DATA:
tuya_ota_proc(event->ota_data.type,event->ota_data.p_data,event->ota_data.data_len);
break;
case TUYA_BLE_CB_EVT_NETWORK_INFO:
TUYA_BLE_LOG_INFO("received net info : %s",event->network_data.p_data);
tuya_ble_net_config_response(result);
break;
case TUYA_BLE_CB_EVT_WIFI_SSID:
break;
case TUYA_BLE_CB_EVT_TIME_STAMP:
TUYA_BLE_LOG_INFO("received unix timestamp : %s ,time_zone : %d",event->timestamp_data.timestamp_string,event->timestamp_data.time_zone);
break;
case TUYA_BLE_CB_EVT_TIME_NORMAL:
break;
case TUYA_BLE_CB_EVT_DATA_PASSTHROUGH:
TUYA_BLE_LOG_HEXDUMP_DEBUG("received ble passthrough data :",event->ble_passthrough_data.p_data,event->ble_passthrough_data.data_len);
tuya_ble_data_passthrough(event->ble_passthrough_data.p_data,event->ble_passthrough_data.data_len);
break;
default:
TUYA_BLE_LOG_WARNING("app_tuya_cb_queue msg: unknown event type 0x%04x",event->evt);
break;
}
}
说明:DP 数据格式以及 Tuya BLE SDK 提供的其他 API 请参考 Tuya BLE SDK 开发指导文档,文档位于 Tuya BLE SDK目录下的
doc
子目录下。强烈建议您在开发前阅读该指导文档,熟悉相关内容。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈