在这里插入图片描述

前言

为了满足现市场大多数的需求,我们决定做几个智能家居常见的方案,并开源给各位!

准备材料:

  • 天猫精灵 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 可修改恢复出厂设置后指示灯灯闪次数及频率;

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐