1、概述
Arduino Ethernet W5100网络扩展模块,可以使Arduino成为简单的Web服务器或者通过网络控制读写Arduino的数字和模拟接口等网络应用。可直接使用IDE中的Ethernet库文件便可实现一个简单Web服务器。
W5100指示灯(灯亮情况下的分别表示):
L:编程指示灯。
PWR:设备已通电。
LINK:网络已连接。当发送或接受数据时会闪烁。
FULLD:网络连接是全双工通信。
100M:当前为100Mb/s的网络连接。
RX:网络接收数据时闪烁。
TX:网络检测到冲突时闪烁。
需要注意的是,这里的RX和TX是网络通信指示灯,并不是其他控制器上的串口通信指示灯。
对于模块不了解的,可以先看一下我们的模块教程[传送门],了解掌握模块使用方法后,再尝试本小实验。因为综合实验一般涉及多个模块,我们仅对全部使用我司产品的客户做技术支持,若只是部分使用我司产品的,我们只对我司产品部分是否有故障进行排查。
2、所需材料(点击即可跳转购买)
1、UNO主控板:官方板 或者 国产板
2、辅助配件:杜邦线
3、传感器和模块:W5100以太网扩展板、温湿度模块
4、自备直连网线一根(普通直连交换机、电脑网线),带网线接口的电脑一台。(台式机、笔记本)。
3、使用方式
将W5100盖在UNO上使用,中贝斯特的W5100可以兼容MEGA2560主控板,请对应引脚插入。
4、接线方式
W5100 | DHT11 |
---|---|
D2 | DATA |
5V | VCC |
GND | GND |
W5100–网线–电脑
5、示例程序
//ultirobot.com
#include <SPI.h>//引用SPI头文件
#include <Ethernet.h> //引用W5100头文件
#include <dht11.h> //引用DHT11头文件
// 设定MAC地址、IP地址
// IP地址需要参考你的本地网络设置
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//mac地址
IPAddress ip(192,168,1,177);//IP地址
//----------------------------------
// 初始化Ethernet库
// HTTP默认端口为80
EthernetServer server(80); //设置Arduino的网页服务器
dht11 DHT11; //设置温湿度模块的结构参数
// 设置参数的程序区段,只会执行一次
void setup()
{
//------------------------------------------------------
Serial.begin(9600); //启动串行通信来观察Arduino运行情况
// 开始ethernet连接,并作为服务器初始化
Ethernet.begin(mac,ip); //启动网络功能,设置MAC和IP地址
server.begin(); //启动网页服务器功能
Serial.print("server is at "); //显示Arduino自己的IP
Serial.println(Ethernet.localIP());
}
// 程序会重复执行
void loop()
{
// 监听客户端传来的数据
DHT11.read(2); //获取当前温湿度数据,读取D2引脚。
EthernetClient client = server.available();
if (client)
{
Serial.println("new client");
//一个HTTP的连接请求,以空行结尾
boolean currentLineIsBlank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
Serial.write(c);
// 如果收到空白行,说明http请求结束,并发送响应消息
if (c == '\n' && currentLineIsBlank)
{
// 标准的HTTP响应标头信息
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // 在反应后将关闭连接
client.println("Refresh: 5"); // 每5秒更新一次网页
client.println(); //响应标头的后面需要一个空行
client.println(""); //类型定义,说明此为HTML信息
client.println("");
client.println(""); //网页的标题
//网页内容信息
client.print("Temperature = ");
client.print(DHT11.temperature); //温度数据
client.print("C ");
client.print("
");
client.print("Humidity = ");
client.print(DHT11.humidity); //湿度数据
client.print("% ");
client.print("
");
client.println("");
break; //跳出while循环,避免浏览器持续处于接收状态
}
if(c == '\n')
// 已经开始一个新行
currentLineIsBlank = true;
else if (c != '\r')
currentLineIsBlank = false;
}
}
delay(1); //停留一些时间让浏览器接收Arduino传送的数据
client.stop(); //关闭连接
Serial.println("client disconnected");//串口打印client断开连接。
}
}
#include <SPI.h>//引用SPI头文件
#include <Ethernet.h> //引用W5100头文件
#include <dht11.h> //引用DHT11头文件
// 设定MAC地址、IP地址
// IP地址需要参考你的本地网络设置
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };//mac地址
IPAddress ip(192,168,1,177);//IP地址
//----------------------------------
// 初始化Ethernet库
// HTTP默认端口为80
EthernetServer server(80); //设置Arduino的网页服务器
dht11 DHT11; //设置温湿度模块的结构参数
// 设置参数的程序区段,只会执行一次
void setup()
{
//------------------------------------------------------
Serial.begin(9600); //启动串行通信来观察Arduino运行情况
// 开始ethernet连接,并作为服务器初始化
Ethernet.begin(mac,ip); //启动网络功能,设置MAC和IP地址
server.begin(); //启动网页服务器功能
Serial.print("server is at "); //显示Arduino自己的IP
Serial.println(Ethernet.localIP());
}
// 程序会重复执行
void loop()
{
// 监听客户端传来的数据
DHT11.read(2); //获取当前温湿度数据,读取D2引脚。
EthernetClient client = server.available();
if (client)
{
Serial.println("new client");
//一个HTTP的连接请求,以空行结尾
boolean currentLineIsBlank = true;
while (client.connected())
{
if (client.available())
{
char c = client.read();
Serial.write(c);
// 如果收到空白行,说明http请求结束,并发送响应消息
if (c == '\n' && currentLineIsBlank)
{
// 标准的HTTP响应标头信息
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // 在反应后将关闭连接
client.println("Refresh: 5"); // 每5秒更新一次网页
client.println(); //响应标头的后面需要一个空行
client.println(""); //类型定义,说明此为HTML信息
client.println("");
client.println(""); //网页的标题
//网页内容信息
client.print("Temperature = ");
client.print(DHT11.temperature); //温度数据
client.print("C ");
client.print("
");
client.print("Humidity = ");
client.print(DHT11.humidity); //湿度数据
client.print("% ");
client.print("
");
client.println("");
break; //跳出while循环,避免浏览器持续处于接收状态
}
if(c == '\n')
// 已经开始一个新行
currentLineIsBlank = true;
else if (c != '\r')
currentLineIsBlank = false;
}
}
delay(1); //停留一些时间让浏览器接收Arduino传送的数据
client.stop(); //关闭连接
Serial.println("client disconnected");//串口打印client断开连接。
}
}
6、必须设置:电脑端设置方法
1、打开网络连接,看到网络适配器
2、右键网络适配器,找到属性
3、打开属性,选择Internet协议版本 4(TCP/IPv4)
4、设置IP地址,子网掩码、默认网关(如图设置),并点击确定
7、实验效果
打开您电脑上的浏览器,在地址栏输入192.168.1.177,按回车键,如果设置没问题的话,即可显示传感器温湿度的值。
视频效果
请先
!