基于Arduino的网页服务器温湿度监测(以太网扩展板、温湿度模块)

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断开连接。
    }
}

6、必须设置:电脑端设置方法

1、打开网络连接,看到网络适配器

2、右键网络适配器,找到属性

3、打开属性,选择Internet协议版本 4(TCP/IPv4)

4、设置IP地址,子网掩码、默认网关(如图设置),并点击确定

7、实验效果

打开您电脑上的浏览器,在地址栏输入192.168.1.177,按回车键,如果设置没问题的话,即可显示传感器温湿度的值。

视频效果

0
分享到:

评论0

请先

本站资料配套硬件销售店铺:天猫店ultirobot.tmall.com 、三冠淘宝店zhongbest.taobao.com
没有账号? 忘记密码?