-
本<安信可ble mesh蓝牙模组TB-02模组专题>系列博客学习由官方博客 CSDN安信可博客 潜心所力所写。如有不对之处,请留言,我们及时更改。
-
1、BLE MESH开发环境linux版搭建,点亮一盏LED灯。
-
2、简单学习如何对接天猫精灵语音控制的过程;
-
3、微信小程序蓝牙通讯 Ble 蓝牙Mesh TB02模组;
-
4、如何在Android开发低功耗蓝牙ble控制 TB-02 模块,代码工程全部开源!
-
5、微信小程序通讯TB02 模块控制 STM32 LED灯;
-
6、天猫精灵语音控制通讯TB02 模块控制 51 单片机LED灯,就是这么简单;
-
7、TB02二次开发玩转各种接入天猫精灵智能家居产品,灯具、插座、单火线总有一款适合你。
文章目录
- 前言
- 准备材料:
- 一、天猫精灵RGB冷暖灯
- 1.1 开源地址
- 1.2 操作说明
- 1.3 控制指令
- 1.4 三元组
- 1.5 更改记录
- 1.6 用户其他可修改项
- 1.6.1 修改PWM引脚
- 1.6.2 修改恢复出厂设置的上电次数及上电时长
- 1.6.3 修改配网成功指示灯闪烁次数
- 1.6.4 修改出厂设置指示灯闪烁次数
- 二、天猫精灵AT通用固件
- 2.1 开源地址
- 2.2 操作说明
- 2.3 AT指令
- 2.4 语音控制指令
- 2.5 三元组
- 2.6 指令使用示例
- 三、天猫精灵-插座/单火线开关
- 3.1 开源地址
- 3.2 操作说明
- 3.3 控制指令
- 3.4 三元组
- 3.5 更改记录
- 3.6 用户其他可修改项
- 3.6.1 修改按键,指示灯及继电器控制引脚
- 3.6.2 修改按键长按时间
- 3.6.3 修改配网成功指示灯闪烁次数
- 3.6.4 修改出厂设置指示灯闪烁次数
前言
为了满足现市场大多数的需求,我们决定做几个智能家居常见的方案,并开源给各位!
准备材料:
- 天猫精灵 X 1
- TB-02开发板 X 1
- 阿里飞燕账号 X 1
一、天猫精灵RGB冷暖灯
1.1 开源地址
本示例实现了天猫精灵红绿蓝 + 冷暖的功能,编译烧录后烧录插座三元组与天猫精灵配对即可控制。
地址:RGBCW_Ali_Mesh
1.2 操作说明
本示例使用了五路PWM分别控制红绿蓝冷暖灯,上电默认是冷光灯。
快速上电5次,每次上电时间在3S以内,在第六次上电时灯将会恢复出厂设置,恢复出厂设置时灯闪烁数次。
与天猫精灵配对成功后,灯也会闪烁数次。
1.3 控制指令
与天猫精灵成功连接后可使用语音进行控制,常用指令如下:
“天猫精灵,开灯”“天猫精灵,将灯的亮度调为80”“天猫精灵,将灯的色温调为30”“天猫精灵,将灯调为红色”“天猫精灵,将灯调为紫色”
1.4 三元组
下面是我自己创建的插座产品申请的三元组,可以用来测试,不保证全部可用。
product ID | Product Secret | MAC地址 |
---|---|---|
10312 | 29c4ffeab71d7dc826bdaac17dc933b3 | f8a7637c9371 |
10312 | 05cc9fc8fb8b7023775ec83fe068ba51 | f8a7637c9372 |
10312 | 9d5c8db13cacdf46d05719a5a739cf73 | f8a7637c9373 |
10312 | 6075376add65c06a53ea417293b3d16c | f8a7637c9374 |
10312 | 99eb04fb938b432b5ffd244092f55847 | f8a7637c9375 |
10312 | b1bdb975e03243bb2cb9d4387e0a16c3 | f8a7637c9376 |
10312 | 2896d81b3efca00c8bd48f418e1d7b17 | f8a7637c9377 |
10312 | 37d01f60204d3ab9a46c6c7543fcf964 | f8a7637c9378 |
10312 | a05d3e094a98a253611f51c71cb5bdac | f8a7637c9379 |
10312 | e3da0f70300e78855e52597a95b40349 | f8a7637c937a |
1.5 更改记录
本工程是在远程SDK上修改来的,主要修改如下:
配置文件中添加了PWM_C
这个定义,及其延伸定义
(LIGHT_TYPE_SEL == LIGHT_TYPE_CT_HSL)
状态下light_res_hw
添加PWM_C
,修改为5路。
在/mesh/light.c
文件中将
light_dim_set_hw(idx, 0, get_pwm_cmp(0xff,(100-ct_100)*lum_100/100));
light_dim_set_hw(idx, 1, get_pwm_cmp(0xff, ct_100*lum_100/100));
修改为:
light_dim_set_hw(idx, 4, get_pwm_cmp(0xff,(100-ct_100)*lum_100/100));
light_dim_set_hw(idx, 3, get_pwm_cmp(0xff, ct_100*lum_100/100));
在/mesh/light.c
文件中,
修改 proc_led 函数,将指示灯闪烁改为呼吸渐变效果
修改 rf_link_light_event_callback 函数,注释掉了LGT_CMD_SET_SUBSCRIPTION 事件回调。
在/mesh/light.h
文件中,
添加了 LED_EVENT_PROVISION_SUCCESS LED_EVENT_UNBIND_SUCCESS LED_EVENT_FACTORY_SUCCESS 宏定义
在/mesh/mesh_config.h
文件中,将宏定义LIGHT_TYPE_SEL设为LIGHT_TYPE_CT,灯的类型修改为冷暖灯。
1.6 用户其他可修改项
用户可根据自己的需求在这个Demo上修改,实现自己想要的功能:
1.6.1 修改PWM引脚
这些引脚可在app/app_config_8258.h文件中通过宏定义指定,客户可自行查看此文件修改之。
默认定义如下:
//--------------- LED / PWM
#define PWM_R GPIO_PB4 //冷光
#define PWM_G GPIO_PB5 //暖光
#define PWM_B GPIO_PWM3B0 //blue
#define PWM_W GPIO_PWM4B1 //white
1.6.2 修改恢复出厂设置的上电次数及上电时长
通过修改mesh/factory_reset.c
文件中的factory_reset_serials变量可修改上述参数。
默认数据如下,表示上电五次恢复出厂设置,每次上电时间在0-3S
const u8 factory_reset_serials[] = { 0, 3,0, 3,0, 3,0, 3,0, 3,};
若将数据改为如下,则表示上电六次恢复出厂设置,前四次上电时间在0-3S,后两次上电时间在5-20秒
const u8 factory_reset_serials[] = { 0, 3,0, 3,0, 3,5, 20,5, 20,};
用户可根据自己的爱好自行修改。
1.6.3 修改配网成功指示灯闪烁次数
在mesh/light.h
中,修改宏定义 LED_EVENT_PROVISION_SUCCESS 可修改配网成功指示灯灯闪次数及频率
1.6.4 修改出厂设置指示灯闪烁次数
在mesh/light.h
中,修改宏定义 LED_EVENT_FACTORY_SUCCESS 可修改恢复出厂设置后指示灯灯闪次数及频率。
二、天猫精灵AT通用固件
2.1 开源地址
本示例实现了天猫精灵AT传输功能,编译烧录后烧录任意三元组与天猫精灵配对即可实现AT交互。
地址:AT_Ali_Mesh
2.2 操作说明
本示例基于TB-02_Kit开发板,使用PB1与PB7作为串口引脚,默认波特率为115200。
2.3 AT指令
指令 | 功能 | 备注 |
---|---|---|
AT | 测试AT | |
AT+GMR | 查询版本号 | |
AT+RST | 复位模块 | |
AT+RESTORE | 恢复出厂设置 | |
AT+STATE | 查询配网状态 | |
AT+SLEEP | 深度睡眠 | 暂未实现 |
AT+SEND2ALI | 发送数据到天猫精灵音箱 | |
AT+SEND2APP | 发送数据到用户手机APP | |
+DATA: | 收到天猫精灵数据 | |
+APP: | 收到用户手机APP发来的数据 |
2.4 语音控制指令
与天猫精灵成功连接后可使用语音进行控制,常用指令如下:
“天猫精灵,打开插座”“天猫精灵,关闭插座”“天猫精灵,两分钟后关闭插座”
2.5 三元组
下面是我自己创建的一些产品申请的三元组,可以用来测试,不保证每个都能够着正常使用
product ID | Product Secret | MAC地址 |
---|---|---|
空调 | ||
10586 | d82cacf2993cfa46b42f6f25100c7655 | f8a76385b9ea |
10586 | efbe4f1cba3b01705fc2463f5bc5374d | f8a76385b9eb |
10586 | 1e7f37d99909b43835bf7b84ff2abfd3 | f8a76385b9ec |
10586 | af7f8f10f649f3f0b975f031420c583f | f8a76385b9ed |
10586 | 349fca807e7ba6b2485e03ea39249941 | f8a76385b9ee |
风扇 | ||
11159 | b58427faca6c0233be26294c2cdc8ed2 | f8a76393a433 |
11159 | 276f5393c517900c15df45fa8591ce11 | f8a76393a434 |
11159 | 1c0c2905805ba98e8c7c25a1cae9f092 | f8a76393a435 |
11159 | 5ae11e6b81593cf0848bbaffeabbdd91 | f8a76393a436 |
11159 | 1c02ec81e70a03928cf77c40df3d7169 | f8a76393a437 |
2.6 指令使用示例
正确烧录固件与三元组后,复位模组,使用天猫精灵音箱找队友,与模组配对成功后,模组将通过串口输出:
+STATE:1
配对成功后和通过天猫精灵控制模块,模块收到天猫精灵的控制指令后会通过串口将指令发出来,具体格式如下:
+DATA:<OpCode>,<长度>,<参数>
数据示例如下:
-
关灯
+DATA:8202,4,00714100
-
开灯
+DATA:8202,4,01724100
-
将灯的亮度调为80
+DATA:824C,5,CCCC734100
-
将灯的色温调整为
+DATA:825E,9,CCCCA0190000744100
-
将灯的颜色调整为红色
+DATA:D100,9,C2230100800000FFFF
-
将灯调整为阅读模式
+DATA:8242,5,0300750000
-
将风扇调整为三挡
+DATA:D100,4,220A0103
-
将风扇调整静音模式
+DATA:D100,5,4504F01100
-
打开风扇的摇头功能
+DATA:D100,4,A3000501
具体的数据值需要自己来解析!
用户手动操作了设备,可主动将当前设备状态上报给天猫精灵,具体数据格式如下:
AT+SEND2ALI=<OpCode>,<参数>
指令示例如下:
- 关灯
AT+SEND2ALI=0482,010100
三、天猫精灵-插座/单火线开关
3.1 开源地址
本示例实现了天猫精灵插座的功能,编译烧录后烧录插座三元组与天猫精灵配对即可控制;
插座开源地址:Plug_Ali_Mesh
单火线开源地址:SFS_Ali_Mesh
3.2 操作说明
本示例使用了三个GPIO,分别用作继电器控制,指示灯,按钮。
短按按钮可改变继电器的状态(即开关插座),长按按键(直到指示灯快速闪烁),松开后将会恢复出厂设置,同时指示灯慢闪数次。
3.3 控制指令
与天猫精灵成功连接后可使用语音进行控制,常用指令如下:
“天猫精灵,打开插座”“天猫精灵,关闭插座”“天猫精灵,两分钟后关闭插座”
3.4 三元组
下面是我自己创建的插座产品申请的三元组,可以用来测试。
product ID | Product Secret | MAC地址 |
---|---|---|
10697 | c6470deb30e21b447973de37a99d8c36 | f8a76387a87d |
10697 | 11478a63b541e25b6cf75b66a4ed1f90 | f8a76387a87e |
10697 | 9c3990f6670479fe19866f9fa4eecc39 | f8a76387a87f |
10697 | 66c663c23a447d9076f3eba0a5f0b00c | f8a76387a880 |
10697 | 7c4fdfbebc52e85cbd88ca495a18efaa | f8a76387a881 |
10697 | 11ee16e6fcf85ff50b43fb33896b4723 | f8a76387a882 |
3.5 更改记录
本工程是在远程SDK上修改来的,主要修改如下:
在/app/app.c
中,添加了user_gpio_init函数,修改了process_ui函数,实现按键长短按功能。
在main_loop函数中,注释factory_reset_cnt_check();函数,关闭通过上电次数恢复出厂的功能。
在/mesh/light.c
文件中,修改set_on_power_up_onoff函数中的light_par_save(0)为light_par_save(1),立即保存开关状态。
修改 set_on_power_up_last 函数,实现断电记忆功能
修改 light_par_save_proc 函数,实现未配网也要保存开关状态数据
修改 light_dim_set_hw 函数,只保留开关功能
修改 light_g_level_set_idx_with_trans 函数,将渐变时间强制设为20ms
修改 proc_led 函数,改变指示灯GPIO
在/mesh/mesh_config.h
文件中,将宏定义LIGHT_TYPE_SEL设为LIGHT_TYPE_NONE,灯的类型修改为None
将宏定义ALI_MD_TIME_EN设为1,打开阿里天猫精灵定时功能。
3.6 用户其他可修改项
用户可根据自己的需求在这个Demo上修改,实现自己想要的功能:
3.6.1 修改按键,指示灯及继电器控制引脚
这些引脚可在app/app_config_8258.h文件中通过宏定义指定,客户可自行查看此文件修改之。
默认定义如下:
#define BTN_GPIO GPIO_PD2 //按键GPIO
#define FACTORY_RESTORE 3 //长按恢复出厂设置时间
#define SWITCH_ENABLE_1 0 //按键优先电平#define PWM_R GPIO_PB4 //继电器GPIO
3.6.2 修改按键长按时间
修改上述宏定义即可。
3.6.3 修改配网成功指示灯闪烁次数
在mesh/light.h
中,修改宏定义 LED_EVENT_PROVISION_SUCCESS 可修改配网成功指示灯灯闪次数及频率
3.6.4 修改出厂设置指示灯闪烁次数
在mesh/light.h
中,修改宏定义 LED_EVENT_FACTORY_SUCCESS 可修改恢复出厂设置后指示灯灯闪次数及频率;