(SKU:DFR0222)X-Board继电器
目录 |
产品简介
网络操作变得如此简单。拥有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口。
第三步:打开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"); } }
结果展示
1.烧录完成后,打开串口监视器。窗口会显示你的IP地址。
2.打开浏览器->输入IP地址->回车打开网页。
3.在页面中我们可以看到板子6路模拟口输入值在网页上按5S/次的频率自动刷新显示,此时说明我们创造的一个小型Web Server已经正常工作了。并在串口监视器也有相应的数据反馈
异常情况解决办法:
对于计算机浏览器出现“网页无法加载”问题的小伙伴儿先不要着急,请按照如下步骤配置你的网络适配器: 1、打开控制面板-->网络和 Internet-->网络和共享中心-->更改适配器设置 2、找到你连接模块的网络-->右键-->属性-->在网络选项卡中找到“Internet协议版本4(TCP/IPv4)"并双击进入属性设置 3、输入下图所示参数并点击确定。在此之后再按照上面示例中第六步操作就行了....
继电器模块应用实例
如果您没有继电器相关知识,可以先参考普通继电器使用方法,请点这里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端口,然后按照下图连接实物图:
第二步:打开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;
如下图: