前言
此篇是物联那点事儿之小爱同学网络控制电脑开机(arduino+点灯科技篇)的番外篇,因为之前的继电器和某宝的一款继电器有点小小的区别,写下来给其他同学做个参考记录!此篇不再叙述小爱同学语音控制!
1 硬件说明
这款继电器支持高/低电平触发,顾名思义,高电平和低电平都能触发继电器执行动作,当然需要使用跳线帽设置一下,还是建议使用低电平触发继电器比较好,毕竟GPIO引脚的高电平输出能力不太强。
好了,其他就是接线问题了,这是淘宝给的说明,接线就好说了,DC+和DC- 是用来给继电器供电的,所以用单片机的5V供电和GND引脚, ESP01好像没有5V供电,如果用的话还得需要加对管和电阻,比较麻烦,那么就可以使用nodeMcu的5V引脚!
,NO是常开端,COM是公共端,可能不太好理解吧,这样想,一个导通电路上面加个开关,这个开关继电器初始状态是常开(开关打开)的状态,当有低电平触发这个继电器的时候继电器吸合,所以电路导通啦。
2 程序编写
先通读一下之前的网络控制电脑开关机的帖子,程序的头文件以及Blinker内容不会再多做解释@
当然首先要再blinker创建设备拿到设备Key、新建一个button拿到数据键名。
(1)必不可少的包含头文件
#include <Blinker.h>//包含Blinker头文件
#define BLINKER_WIFI //定义wifi模块
(2)为你的GPIO引脚写宏定义,方便更换引脚
#define jidianqi x // 你用的几引脚这里就写几
(3)全局变量设置
BlinkerButton Button1("btn1"); //定义按钮键名 btn1 是你的数据键名
//类似c++的对象构造函数吧
(4)按下Button1之后的回调函数。
void button1_callback(const String & state)//点灯app内控制按键触发
{
BLINKER_LOG("get button state: ", state);
//读取该引脚当前电平状态
int buttonSate = digitalRead(jidianqi);
if(buttonSate==1)//如果当前是高电平置为低
{
digitalWrite(jidianqi,HIGH);
delay(200);
digitalWrite(jidianqi, LOW);
}else{//如果当前是低电平置为高
digitalWrite(jidianqi,LOW);
delay(200);
digitalWrite(jidianqi,HIGH);
}
}
(5) 最后在setup函数中注册该回调函数。
Button1.attach(button1_callback);
注意:串口初始化、GPIO模式设置不要忘了设置哈