物联网控制入门8266-串口及干接点控制arduino源码分享

一、【准备】

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控制;

动作:开/关/取反/与干接点的输入一致等,这就是本物联网模块的一大特点

物联网控制入门-串口及干接点控制arduino源码分享

这一块可以发挥下想想,根据网络或串口传入的指令来修改变量的值,从而实现对干接点对各路控制的目的。

这里用到4种状态 inenabledmode-1/0/1/2

-1:默认方式,对设置的针脚进行取反操作(开变关,关变开)

0:对设置的针脚全关操作

1:对设置的针脚全开操作

2:对设置的针脚的开关状态同干接点的开关状态一致!!

物联网控制入门-串口及干接点控制arduino源码分享

本模块已实现的功能

物联网控制入门-串口及干接点控制arduino源码分享 DC接线方法同AC,第1组:AC220V  第2组:DC7~24V(默认12V) 

当然也可以用TYPE-C 供电(三功能合一:烧录,调试,供电

针脚供电:5V,GND,TX,RX即可调试和供电。继电器高电平有效哦!

物联网控制入门-串口及干接点控制arduino源码分享

一键保存继电器状态(断电记忆),内置网页实现模拟本地指令控制,也可以配置新的WIFI密码账号

均保存到EEPROM中,开机自动启用新参数!! 

其他连接加关注或关注我的头 条 搜【久爱物联网】

 资源一般同步到这2个平台

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值