欢迎光临
我们一直在努力

Arduino 网页服务器温湿度监测(W5100+DHT11)

1120180503133748

==概述==

    Arduino Ethernet  W5100网络扩展模块,可以使Arduino成为简单的Web服务器或者通过网络控制读写Arduino的数字和模拟接口等网络应用。可直接使用IDE中的Ethernet库文件便可实现一个简单Web服务器。

W5100是一款多功能的单片网络接口芯片,内部集成有10/100以太网控制器,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。

该芯片有如下特点:

1、支持全硬件TCP/IP协议,包括TCP\UDP\ICMP\IPv4\ARP\IGMP\PPPoE和Ethernet.

2、内嵌10 BaseT/100 BaseTX以太物网物理层。

3、支持自动应答(全双工/半双工模式)。

4、支持自动MDI/MDIX。

5、支持ADSL连接(支持PPPoE协议,带PAP/CHAP验证)。

6、支持4个独立端口。

7、内部16KB存储器作为TX/RX缓存。

8、0.18umCMOS工艺。

9、3.3V工作电压,I/o口可承受5V电压。

10、小巧的LQFP80无铅封装。

11、多种PHY指示灯信号输出(TX、RX、Full/Half duplex、Collision、Link和Speed)。

W5100指示灯(灯亮情况下的分别表示):

L:编程指示灯。

PWR:设备已通电。

LINK:网络已连接。当发送或接受数据时会闪烁。

FULLD:网络连接是全双工通信。

100M:当前为100Mb/s的网络连接。

RX:网络接收数据时闪烁。

TX:网络检测到冲突时闪烁。

需要注意的是,这里的RX和TX是网络通信指示灯,并不是其他控制器上的串口通信指示灯。

本次是以小实验的方式写的,对于模块不了解的,可以先看一下我们的模块教程,了解掌握模块使用方法后,再尝试本小实验。

(对于非本店模块不提供技术支持!如果无法做通,可能是不兼容导致,请自行尝试)。

模块示例:

W5100网络扩展板:http://arduino365.com/2016/09/01/w5100%E7%BD%91%E8%B7%AF%E6%89%A9%E5%B1%95%E6%9D%BF/

DHT11温湿度模块:http://arduino365.com/2016/08/31/%E6%B8%A9%E6%B9%BF%E5%BA%A6%E4%BC%A0%E6%84%9F%E5%99%A8dht11/

所需材料:

UNO主控板一个:点我购买

W5100网络扩展板一个:点我购买

杜邦线(公对母)若干:点我购买

DHT11温湿度模块一个:点我购买

自备直连网线一根(普通直连交换机、电脑网线)

带网线接口的电脑一台。(台式机、笔记本)。


==W5100使用方式==

将W5100盖在ArduinoUNO上使用,中贝斯特的W5100可以兼容MEGA2560主控板,请对应引脚插入。

===完整接线==

wenshidu

Arduino                       W5100

下方                                上方

——————————————-

W5100                           DHT11

D2                                   DATA

5V                                    VCC

GND                               GND

————————————————————————-

W5100 ======网线========================电脑

————————————————————————-

==例子程序==

//arduino365.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("<!DOCTYPE HTML>");  //类型定义,说明此为HTML信息
             client.println("<html>");
             client.println("<head><title>Arduino Web Server</title>"); //网页的标题
             //网页内容信息
             client.print("Temperature = ");
             client.print(DHT11.temperature); //温度数据
             client.print("C  ");
             client.print("<br />");
             client.print("Humidity = ");
             client.print(DHT11.humidity);  //湿度数据
             client.print("%  ");
             client.print("<br />");
            
             client.println("</html>");
             break;  //跳出while循环,避免浏览器持续处于接收状态
            }
            if(c == '\n')

// 已经开始一个新行
               currentLineIsBlank = true;
            else if (c != '\r')
               currentLineIsBlank = false;
        
          }
       }
      
       delay(1);  //停留一些时间让浏览器接收Arduino传送的数据
      
       client.stop();  //关闭连接
       Serial.println("client disconnected");//串口打印client断开连接。
    }
}

==必须设置:电脑端设置方法==

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

00002

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

00003

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

00004

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

00005

==实验效果==

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

00001

==相关下载==

本小实验所用到的库文件均为官方IDE库文件,无需添加。






未经允许不得转载:Arduino-Maker » Arduino 网页服务器温湿度监测(W5100+DHT11)

支付宝扫码打赏 微信打赏

原创文章,若帮到您,欢迎打赏

分享到:更多 ()

评论 抢沙发

评论前必须登录!

 

线上商城

中贝斯特创客空间蘑菇云创客教育