本 demo 基于涂鸦智能云平台、涂鸦智能APP、IoTOS Embeded Ble SDK,使用涂鸦BLE系列模组和TS02N触摸芯片快速实现一个触摸按键驱动。该demo提供了接口,使用者可以自行设定按键输入引脚和按键触发函数,最后使用按键注册函数注册即可使用;按键按下后按键提示灯会亮起,按键松开后提示灯关闭,触发按键回调函数会将按下的按键信息更新到手机app上。
-
IDE 根据芯片原厂 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
-
代码修改
-
在
tuya_ble_app_demo.h
填入在涂鸦 IoT 工作台创建的智能产品 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.
-
-
编译运行Demo代码
修改好后编译代码,并下载固件至硬件运行(根据所选的芯片型号有可能还需要下载 stack 和 bootloader),观察 log 日志 ,并用第三方蓝牙调试 App(例如 IOS 下的 lightBlue)扫描确认设备有没有正常广播。
├── src /* 源文件目录 */
| ├── sdk
| | └── tuya_uart_common_handler.c /* UART通用对接实现代码 */
| ├── driver
| | ├── tuya_app_driver_ts02n_key.c /* 按键驱动相关 */
| | └── tuya_app_driver_led.c /* 指示灯驱动相关 */
| ├── tuya_ble_app_demo.c /* 应用层入口文件 */
| └── tuya_app_ts02n_key.c /* TS02N按键应用代码 */
|
└── include /* 头文件目录 */
├── sdk
| ├── custom_app_uart_common_handler.h /* UART通用对接实现代码 */
| ├── custom_app_product_test.h /* 自定义产测项目相关实现 */
| └── custom_tuya_ble_config.h /* 应用配置文件 */
├── driver
| ├── tuya_app_driver_ts02n_key.h /* 按键驱动相关 */
| └── tuya_app_driver_led.h /* 指示灯驱动相关 */
├── tuya_ble_app_demo.h /* 应用层入口文件 */
└── tuya_app_ts02n_key.h /* TS02N按键应用代码 */
入口文件:/tuya_ble_app/tuya_ble_app_demo.c
void tuya_ble_app_init(void)
对Tuya IoTOS Embeded Ble SDK 进行一些必要的初始化,该函数只执行一次。void app_exe()
该函数用来执行用户应用代码,该函数循环执行
函数名 | tuya_ble_dp_data_report |
---|---|
函数原型 | tuya_ble_status_t tuya_ble_dp_data_report(uint8_t *p_data,uint32_t len); |
功能概述 | 上报dp点数据。 |
参数 | p_data [in] : dp点数据。len[in] : 数据长度,最大不能超过TUYA_BLE_REPORT_MAX_DP_DATA_LEN 。 |
返回值 | TUYA_BLE_SUCCESS :发送成功; TUYA_BLE_ERR_INVALID_PARAM:参数无效; TUYA_BLE_ERR_INVALID_STATE:当前状态不支持发送,例如蓝牙断开; TUYA_BLE_ERR_NO_MEM:内存申请失败; TUYA_BLE_ERR_INVALID_LENGTH:数据长度错误; TUYA_BLE_ERR_NO_EVENT:其他错误。 |
备注 | Application通过调用该函数上报 DP 点数据到手机app。 |
参数说明:
涂鸦云平台是以 dp 点的方式管理数据,任何设备产生的数据都需要抽象为 dp 点的形式,一个完整的dp点数据由四部分组成(具体参考 IoT 工作台上的相关介绍):
-
Dp_id: 1个字节,在开发平台注册的 dp_id 序号。
-
Dp_type:1 个字节,dp点类型。
#define DT_RAW 0
raw类型;
#define DT_BOOL 1
布尔类型;
#define DT_VALUE 2
数值类型;(其范围在iot平台注册时指定)
#define DT_STRING 3
字符串类型;
#define DT_ENUM 4
枚举类型;
#define DT_BITMAP 5
位映射类型;
-
Dp_len:1 个字节或者两个字节,目前蓝牙仅支持一个字节,即单个 dp 点数据最长 255 个字节。
-
Dp_data:数据,dp_len 个字节。
该 dp 点上报函数的参数 p_data 指向的数据必须以下表格式组装上报:
Dp点1的数据 | ~ | Dp点n的数据 | ||||||
---|---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | ~ | n | n+1 | n+2 | n+3 |
Dp_id | Dp_type | Dp_len | Dp_data | ~ | Dp_id | Dp_type | Dp_len | Dp_data |
调用该函数时,参数 len 的最大长度为 TUYA_BLE_REPORT_MAX_DP_DATA_LEN
(当前为255+3)。
key1_pin | key2_pin | led1_pin | led2_pin |
---|---|---|---|
P8 | P7 | P26 | P24 |
您可以通过以下方法获得涂鸦的支持:
- 开发者中心:https://developer.tuya.com
- 帮助中心:https://support.tuya.com/help
- 技术支持工单中心:https://service.console.tuya.com