一、实现功能
该方案可以实现物理按键KEY和远程APP同步控制四路LED,其中KEY1长按进入SOFTAP模式,KEY1短按控制LED1,KEY2长按进入AIRLINK模式,KEY2短按控制LED2,KEY3短按控制LED3,KEY4短按控制LED4。GPIO5端口用于读取DHT11温湿度传感器的值(这里有个坑需要跟大家讲下)。(原计划通过长按KEY3控制LED全开,长按KEY4控制LED全关,尝试了很多办法会出错,如果找到比较稳定的好办法会给大家分享。LED本来是4路继电器,还没到所以就凑合下,反正原理都一样,哈哈)
二、电路图
1、电路原理图
2.实物连接图
三、数据点及代码修改
1.数据点
数据点1 LED_1
数据点2 LED_2
数据点3 LED_3
数据点4 LED_4
数据点5 temperature
数据点6 humidity
下面是大家喜闻乐见的干货部分,哈哈。
首先是把DHT11的驱动配置好
hal_temp_hum.h放到/app/include/driver文件夹内
hal_temp_hum.c放到/app/driver文件夹内
没有这个驱动文件可以到机智云下载中心,找到GoKit MCU示例工程,在对应的文件夹内有相应的驱动文件。
2.代码修改
(1)gizwits_protocol.h
如果有朋友懒得改程序,想直接看到效果,最简单的办法就是数据点和我上面的设置的一样,然后直接改上面覆盖的两个地方,我的程序会给大家链接,可供参考。但是不建议这么做,这不利于理解程序的功能,运行机制。
(2)gizwits_protocol.h
下面红框中的值最好改成100或者50,不改的话控制延时有1s,我感觉延时太大挺别扭的。
(3)gizwits_product.h
定义一个数组用于储存4个LED的状态
extern bool statu[4];
(4)gizwits_product.c
首先加入DHT11的头文件(userhand()需要调用),然后是定义的数组statu[4]初始化
#include “driver/hal