(SKU:DFR0222)X-Board继电器

来自DFRobot Product Wiki
跳转至: 导航搜索
X-board继电器(SKU:DFR0222)

目录

产品简介

网络操作变得如此简单。拥有Xboard继电器,你不仅能通过网络监测数据,也能控制数据。Xboard继电器把Atmega32U4微型处理器和wiz5100芯片结合在一起。wiz5100同Arduino Lendardo和以太网数据库完全兼容,它拥有内嵌Xbee模块和两个继电器,因此能够通过网络感应和控制,操作简易。

不同于之前的X-board,X-board继电器不需要编程适配器,只需一条micro USB线,就能上传程序。


技术规格

  • MCU:Atmega 32U4
  • 时钟频率:16MHz
  • 闪存:32KB(ATmega32U4),其中4KB用于引导程序
  • SRAM:2.5KB(ATmega32U4)
  • 以太网芯片:Wiz5100
  • 电源:7.2-12伏
  • USB:Micro USB@5V
  • 接口:2个模拟输入口,1个I2C接口,4个数字接口

继电器规格

  • 额定电流:10A(NO)5A(NC)
  • 最大合闸电压:150VAC 24VDC
  • 数字接口
  • 控制信号:数字输出
  • 触点容量(Res.Load):10A 277VAC/24VDC
  • 最大合闸电压:250VAC/30VDC 250VAC/30VDC
  • 最大合闸电流:15A
  • 最大合闸电源:2770VA 240W 2770VA 240W
  • 额定电压: 10A 120VAC /10A 277VAC
  • 操作时间(nomi. Vot.): 10ms
  • 释放时间(nomi. Vot.): 5ms


wiz5100应用实例1

使用材料:

标准POE协议以太网交换机(路由器) X1

X-Board继电器模块 X1

Micro USB线 X1

网线 X1




第一步:将X-Board继电器模块接上网线插到路由器任意LAN端口,也可使用普通交换机、路由设备或直接连接到PC端网口(当使用普通交换机、路由设备或直连PC端网口时需要为模块提供电源)。

第二步:将Micro USB线插在X-Board继电器模块上,另一端接电脑USB口。

W5500usb

第三步:打开arduino IDE软件,选择主板"arduino leonardo"烧录以下代码

/*
DFRobot X-board V2 Sample Code
 
 A simple web server with DHPC capbabilty.
 1)Get IP address from router automatically
 2)Show the value of the analog input pins
 
 created 28 Sep 2012
 by Ricky
 */

#include <SPI.h>
#include <Ethernet.h>
EthernetServer server(80);
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xCD, 0xAE, 0x0F, 0xFE, 0xED };

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):


void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // print your local IP address:
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print("."); 
  }
  Serial.println();

  // start the Ethernet connection and the server:

  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          client.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.dfrobot.com/ihome/stylesheet/stylesheet.css\" />");

          client.println("<center> <a href=\"http://www.dfrobot.com\"><img src=\"http://alturl.com/qf6vz\"></a> </center> ");
          client.println("<br />");     

          client.println("<div>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");      

          }

          // output the value of each digital input pin
          for (int digitalChannel = 2; digitalChannel < 10; digitalChannel++) {
            int sensorReading = digitalRead(digitalChannel);
            if(digitalChannel!=7&&digitalChannel!=8)
            {
              client.print("Digital input ");
              client.print(digitalChannel);
              client.print(" is ");
              client.print(sensorReading);
              client.println("<br />"); 
            }

            else
            {
              client.print("Relay ");
              client.print(digitalChannel);
              client.print(" is ");
              client.print(sensorReading);
              client.println("<br />"); 

            }


          }

          client.println("</div>");
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}



Nextredirectltr.png购买 X-board继电器(SKU:DFR0222)

结果展示

1.烧录完成后,打开串口监视器。窗口会显示你的IP地址。

ideip

2.打开浏览器->输入IP地址->回车打开网页。

ip

3.在页面中我们可以看到板子6路模拟口输入值在网页上按5S/次的频率自动刷新显示,此时说明我们创造的一个小型Web Server已经正常工作了。并在串口监视器也有相应的数据反馈

ip2



异常情况解决办法:

 对于计算机浏览器出现“网页无法加载”问题的小伙伴儿先不要着急,请按照如下步骤配置你的网络适配器:
 1、打开控制面板-->网络和 Internet-->网络和共享中心-->更改适配器设置
 2、找到你连接模块的网络-->右键-->属性-->在网络选项卡中找到“Internet协议版本4(TCP/IPv4)"并双击进入属性设置
 3、输入下图所示参数并点击确定。在此之后再按照上面示例中第六步操作就行了....
W5500TCP.JPG

继电器模块应用实例

如果您没有继电器相关知识,可以先参考普通继电器使用方法,请点这里wiki

注意

注意实际参数变化。


继电器规格

  • 额定电流:10A(NO)5A(NC)
  • 最大合闸电压:150VAC 24VDC
  • 数字接口
  • 控制信号:数字输出
  • 触点容量(Res.Load):10A 277VAC/24VDC
  • 最大合闸电压:250VAC/30VDC 250VAC/30VDC
  • 最大合闸电流:15A
  • 最大合闸电源:2770VA 240W 2770VA 240W
  • 额定电压: 10A 120VAC /10A 277VAC
  • 操作时间(nomi. Vot.): 10ms
  • 释放时间(nomi. Vot.): 5ms


下面的例子是把X-board继电器板作为服务器端,通过手机app(TCP网络助手)或者PC端的TCP网络助手作为客户端,输入服务器ip和端口号来进行连接,连接成功后通过向服务器端(X-board)发送特定的数据来控制继电器的开关,这个实例中给继电器1连上了LED,可通过控制继电器1的开关来控制LED的亮灭。

软件下载去应用商店搜索“TCP”关键字,选择下一个具有TCP调试功能的即可

使用材料:

标准POE协议以太网交换机(路由器) X1

X-Board继电器模块 X1

Micro USB线 X1

网线 X1

TCP网络助手(手机端或者电脑端都可以,去应用商店搜索下载软件即可)

第一步:将X-Board继电器模块接上网线插到路由器任意LAN端口,然后按照下图连接实物图:

lianjietu

第二步:打开arduino IDE软件,选择主板"arduino leonardo"烧录以下代码

/*
DFRobot X-board V2 Sample2 Code
 
Use the cell phone to control the network relay
 1)Input 1 opens relay 1
 2)Input 1c to close relay 1
 3)Input 2 opens relay 2
 4)input 2c to close relay 2
 by Daiyingong
 */


#include <SPI.h>
#include <Ethernet.h>

int relay1 = 8;
int relay2 = 7;
int D4=4;
char buff[3];
char a[5][13]={"Relay1 open","Relay1 close","Relay2 open","Relay2 close","Error"};
int nm = 0;
//The port number is recommended to be greater than 5000 and less than 65535
int serverPort = 5656;
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
//IPAddress ip(192,168,9,239);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(serverPort);
void setup() {
  pinMode(D4,OUTPUT);
 digitalWrite(D4,HIGH);
  pinMode(relay1,OUTPUT);
  pinMode(relay2,OUTPUT);
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Ethernet WebServer Example");
  

  Ethernet.begin(mac);
  if (Ethernet.linkStatus() == LinkOFF) {
    Serial.println("Ethernet cable is not connected.");
  }
  //Ethernet.begin(mac,ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
  
}

void loop() {
  
    ClientToServer();
}


void ClientToServer()
{
   // Listening on the client
   EthernetClient client = server.available();
   //If you disconnect from the server or the connection fails, reconnect
  if (!client)
  {
    if (!client.connected())
    {
       
      delay(5000);
      return;
    }
    Serial.println("connection ok");
  }
  else if (client.available())//If data arrives
  {
    //Serial.println("Data is coming");
    while (client.available())//receive data
    {
      buff[nm++] = client.read();
      if (nm >= 2) break;
    }
    buff[nm] = 0x00;
    nm=0;
    Serial.print("The server received the data:");
    Serial.println(buff);//Print data to serial port
    if( buff[0]=='1'&&buff[1]!='c')
    {
      digitalWrite(relay1, HIGH);//Received data '1' opens relay 1
      Serial.println("The relay1 is energized!");
      server.write(a[0]);
      server.println();
    }
    else if(buff[0]=='2'&&buff[1]!='c')
    {
      digitalWrite(relay2, HIGH);//Received data '2' opens relay 2
      Serial.println("The relay2 is energized!");
      server.write(a[2]);
      server.println();
      }
     else if(buff[0]=='1'&&buff[1]=='c')
     {
       digitalWrite(relay1,LOW); 
      Serial.println("Relay 1 is closed!");
      server.write(a[1]);
      server.println();
      }
      else if(buff[0]=='2'&&buff[1]=='c')
     {
       digitalWrite(relay2,LOW); 
      Serial.println("Relay 2 is closed!");
      server.write(a[3]);
      server.println();
      }
    else 
    {
       
      Serial.println("Error command!");
      server.write(a[4]);
      server.println();
    }
    //client.print(buff);
    //Discards bytes that have been written to the client but have not yet been read
    client.flush();
  }
   if (client.connected()==false ) {
    Serial.println();
    Serial.println("disconnecting.");
    
  }
    //Check the UART port data
  if(Serial.available()){
    size_t len = Serial.available();
    //Serial.println(len);
    uint8_t sbuf[len];
    Serial.readBytes(sbuf, len);
    //Push the UART port data to the server to realize two-way communication
    client.write(sbuf, len);
  }
}



第三步:打开TCP网络助手,输入ip和端口号,进行连接服务器(此时X-board作为服务器)

注意: 客户端的设备(手机或者PC)必须和服务器(X-board)连接同一个局域网

本实例以手机app为例,如图输入ip:192.168.9.239 ,端口号:5656(用户根据自己实际ip和端口号填),点击连接,成功后:
输入:1,打开继电器1,LED亮;
输入:1c,关闭继电器1,LED灭;
输入:2,打开继电器2;
输入:2c,关闭继电器2;
如下图:

1.jpg
个人工具
名字空间

变换
操作
导航
工具箱