_SKU_DFR0162_X Board_V2控制器_兼容Arduino - jimaobian/DFRobotWikiCn GitHub Wiki
X-board是一个独特的Arduino板,它提供的XBee插座,WIZnet以太网端口采用了ATMega328芯片。使用X-board将可以让你的项目通过XBee来控制并能和互联网链接。
使用X-board可以应用于家庭自动化到机器人控制等项目。没有什么是不可能的!
X-board具有8路模拟量I/O引脚和8个数字引脚,其中4个具有PWM(以星号表示),它的XBee插座完美的兼容所有的XBee模块,同时也兼容APC220 RF无线模块和DF-Bluetooth模块。
X-board能通过FTDI编程器或者直接通过ICSP接线端进行编程。X-board通过Mini USB接口提供电源。
你可以在X-board上设置一个Web服务器,通过X-board您可以与远程使用的XBee模块,蓝牙模块或APC模块进行通信。采集的信息可以发送到网站或发微薄。
我们在办公室利用X-board制作了一个项目,通过X-board我们能在网上控制办公室的门。如果我们忘记了我们的RFID门禁卡,那我们只要登录到我们的办公室无线网络并发送一个开门的命令,芝麻开门!门就应声而开!
我们已经创建了一个教程,其中包括零件清单,源代码可以上下载。
控制芯片:Atmega328P low voltage version (16Mhz)
以太网控制芯片:WIZ5100
Arduino引导程序:Arduino Uno bootloader
电源电压:6~12v
输出电压:5v/3.3v
数字IO口: 8
模拟口: 8
PWR: 电源指示灯
LINK: 指示网络链接状况,当接收或发送数据时闪烁
FULLD: 指示网络链接是否全双工
100M: 指示10m/100m网络链接
RX: 数据接收时闪烁
TX: 数据发送时闪烁
COLL: 网络冲突时闪烁
注意事项:X-board需要一个FTDI板来上传程序
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
#include <Udp.h>
#include <SPI.h>
/*
* Web Server
* A simple web server: Displays a button to open/close
* a door and door status
*/
//-----------------------BEGIN Variable setup -------------------------------
String readString = String(30);
//string for fetching data from address
boolean LEDON = false;
//LED status flag
int state;
int val=0;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 177 };
//Change your IP Address here Server server(80); //Standard HTTP server port
//-----------------------END Variable setup-------------------------------
void setup()
{
pinMode(4, OUTPUT);
Ethernet.begin(mac, ip);
server.begin(); delay(100);
Serial.begin(57600);
//XBee module Baud rate
delay(100);
}
void loop()
{
//---------------Web Server initialization------------------------------
Client client = server.available();
if (client)
{
boolean current_line_is_blank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
if (readString.length() < 100)
{
readString += c;
}
///////////Check button status to determine actions to take for submit button///////////////
if(readString.indexOf("IO=1") >0)
{
// If door open request sent;
// send instruction to remote arduino
if (LEDON== false)
{
//Ensure it only send the info once
//led has to be turned ON
LEDON = true;
//Change LED state to print on the page
Serial.print('G');
//Send command to remote Arduino
}
}
if(readString.indexOf("IO=0") >0)
{
//Same as above but not used in
//this application
if (LEDON== true)
{
//led has to be turned OFF
LEDON = false;
Serial.print('K');
}
}
///////////////Finish checking and actions for submit button//////////////////
//------------------Standard web Server Jargon-------------------------------
if (c == 'n' && current_line_is_blank)
{
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: html");
client.println();
client.println("<html>");
client.println("<head>");
client.println("<title>Xboard interface--Door control</title>");
client.println("</head>");
client.println("<body>");
client.print("welcome to DFRobot"); //Print your own message here
client.println("<br />");
client.print("//*************************************");
client.println("<br />");
client.println("<br />");
client.print("//*************************************");
client.println("<br />");
client.println("<br />");
client.print("<form>");
client.print("<input type=radio name=IO value=1 /> Open<br />");
client.print("<input type=submit value=Submit </form><br />");
client.println("</body>");
break;
}
if (c == 'n')
{
// we're starting a new line
current_line_is_blank = true;
}
else if (c != 'r')
{
// we've gotten a character on the current line
current_line_is_blank = false;
}
}
}
//------------------END Standard web Server Jargon-------------------------------
//-----------------Print door status on web page and auto refresh----------------
if (LEDON)
{
//printing LED status
client.print("<font size='5'>DOOR status: ");
client.println("<font color='green' size='5'>OPEN");
client.println("<META HTTP-EQUIV=REFRESH CONTENT=2;url=http://192.168.0.177/>"); //Autorefresh
//Auto-refresh the site after 2 seconds to reset the door status to closed
}
else{
client.print("<font size='5'>DOOR status: ");
client.println("<font color='grey' size='5'>CLOSED");
}
client.println("<hr />"); client.println("<hr />");
client.println("</body></html>"); //clearing string for next read
readString="";
//-----------------END Print door status on web page and auto refresh----------------
client.stop(); } /*Routine to read response from remote Arduino *and light local LED on PIN4 */
if (Serial.available() > 0)
{
val = Serial.read();
if (val == 'H')
{
//These values ('H')can be changed to what ever you want
//just make sure you change them in both the server
//program and the client program
digitalWrite(4, HIGH);
delay (20);
}
if (val == 'L')
{
digitalWrite(4, LOW);
delay (20);
}
}
}