一、【准备】
1、arduino IDE 最新版 1.8.13
2、ESP8266-12S/12F模块
3、本示例是基于久爱物联网远程控制模块讲解(4路输出1路输入+RS485)
4、其他有关知识分享链接
二、【代码分析】
/*****************************
* 久爱物联网模块测试程序
* 1、串口控制四路输出
* 2、干接点 取反电路开关状态
* 3、继电器高电平有效 HIGH开(NO-COM接线)
* 感谢您的关注,交流学习
******************************/
#define relay1 12 //1路 宏定义,四个继电器对应的针脚GPIO
#define relay2 13 //2路
#define relay3 14 //3路
#define relay4 15 //4路
#define in_pin 5 //干接点,定义为外部输入模式(或干接点或触摸按键等)
//交流电状态检测,温湿度DHT22等省略
char c;
unsigned int pinin_old_status=0; //干接点初始化
unsigned int pinIN_cur_status=0; //当前干接点输入状态
unsigned int pinIN_relayPinName=relay1; //默认第一路(通过修改参数达到灵活配置的目的)
unsigned int pinIN_relayGroup[4]={relay1,relay2,relay3,relay4}; //继电器针脚组合体(实际中不能为0要判断)
int inenabledmode=-1;//干接点控制模式(0 使能关,1使能开,-1使能翻转,2与干接点一致)
宏定义及变量设置,初始化
/*****************
* 初始化都在这
*****************/
void setup()
{
Serial.begin(115200);
//设为继电器为输出模式
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
pinMode(relay3, OUTPUT);
pinMode(relay4, OUTPUT);
pinMode(in_pin,INPUT_PULLUP);
pinin_old_status=digitalRead(in_PIN1); //干接点电平
}
针脚模式输出初始化,当然可以设置初始状态使用
digitalWrite(relay1, LOW);//针脚,电平:LOW/HIGH
digitalWrite(relay2, LOW);//针脚,电平:LOW/HIGH
digitalWrite(relay3, LOW);//针脚,电平:LOW/HIGH
digitalWrite(relay4, LOW);//针脚,电平:LOW/HIGH
/*****************
* 循环体
*****************/
void loop() {
if (Serial.available())
{
c=Serial.read();//接收串口输入
//直接一次性读取字符串,可以使用更长的字符串命令进行设置
//本人指令较多,这里用最简单的方法实现讲解
//_read=Serial.readString();
//_read.replace("\r\n","");
check_in_status(); //干接点的处理方法供参考
//以下根据输入的值1,2,3,4 对应取反当前线路的输出状态!
if(c=='1')
{
int state1 = digitalRead(relay1); //读继电器IO口的状态
if(state1==0)
{
digitalWrite(relay1, HIGH); //打开1路
delay(200);//延时200毫秒
Serial.println("relay1 open");//输出打印
}
else if (state1==1)
{
digitalWrite(relay1, LOW);//关闭1路
delay(200);
Serial.println("relay1 close");
}
}
else if(c=='2')
{
int state2 = digitalRead(relay2);
if(state2==0)
{
digitalWrite(relay2, HIGH);
Serial.println("2on");
}
else if (state2==1)
{
digitalWrite(relay2, LOW);
Serial.println("2off");
}
}
else if(c=='3')
{
int state3 = digitalRead(relay3);
if(state3==0)
{
digitalWrite(relay3, HIGH);
Serial.println("3on");
}
else if (state3==1)
{
digitalWrite(relay3, LOW);
Serial.println("3off");
}
}
else if(c=='4')
{
int state4 = digitalRead(relay4);
if(state4==0)
{
digitalWrite(relay4, HIGH);
Serial.println("4on");
}
else if (state4==1)
{
digitalWrite(relay4, LOW);
Serial.println("4off");
}
}
}
}
案例重点在于干接点(或触摸按键、自复、自锁开关)的处理方法
可以发挥自己的想象:可以实现1:1控制,1:2控制,1:3控制,1:4控制;
动作:开/关/取反/与干接点的输入一致等,这就是本物联网模块的一大特点
这一块可以发挥下想想,根据网络或串口传入的指令来修改变量的值,从而实现对干接点对各路控制的目的。
这里用到4种状态 inenabledmode= -1/0/1/2
-1:默认方式,对设置的针脚进行取反操作(开变关,关变开)
0:对设置的针脚全关操作
1:对设置的针脚全开操作
2:对设置的针脚的开关状态同干接点的开关状态一致!!
本模块已实现的功能
DC接线方法同AC,第1组:AC220V 第2组:DC7~24V(默认12V)
当然也可以用TYPE-C 供电(三功能合一:烧录,调试,供电)
针脚供电:5V,GND,TX,RX即可调试和供电。继电器高电平有效哦!
一键保存继电器状态(断电记忆),内置网页实现模拟本地指令控制,也可以配置新的WIFI密码账号
均保存到EEPROM中,开机自动启用新参数!!
其他连接加关注或关注我的头 条 搜【久爱物联网】
资源一般同步到这2个平台