Arduino Ethernet构建简易服务器
首先先介绍一下用到的器件:
Ethernet扩展板
接下来,我们将使用Arduino和Ethernet扩展板作为Web服务器,通过浏览器在局域网内访问该服务器,获取Arduino端的温湿度数据,显示到浏览器上。
首先,我们需要获取本地网络的设置信息(网线):
这里我们取IP和MAC地址,代码如下:
byte mac[] = { 0xEC, 0xA8, 0x6B, 0x60, 0x15, 0x79 }; // 设定MAC地址、IP地址 IPAddress ip(10, 21, 30, 15); EthernetServer server(80); // 初始化Ethernet库 HTTP默认端口为80
接下来便可以开始连接Ethernet,构建服务器:
void setup() { // 初始化串口通信 Serial.begin(9600); Ethernet.begin(mac, ip); // 开始ethernet连接,并作为服务器初始化 server.begin(); Serial.print( "server is at " ); Serial.println(Ethernet.localIP()); //监视器打印当前IP地址 }
此时,在串口监视器中可以看到IP地址被打印,此时的服务员已经开启。
想要了解更多的Arduino Ethernet的内容,可以参考这篇文章:
https://blog.csdn.net/WIZnet2012/article/details/42777167
接下来,我们将实现获取Arduino端的温湿度数据,显示到浏览器上。
这里不再讲DHT11相关的内容了,直接上代码:
void loop() { float h = dht.readHumidity(); //取湿度 float t = dht.readTemperature(); //取温度 // 监听客户端传来的数据 EthernetClient client = server.available(); Ethernet.maintain(); client.println( "HTTP/1.1 200 OK" ); client.println( "Content-Type: text/html" ); client.println( "Connection: close" ); client.println(); client.println( "<!DOCTYPE HTML>" ); client.println( "<html>" ); client.println( "<meta http-equiv=\"refresh\" content=\"10\">" ); // 添加一个meta刷新标签, 浏览器会每10秒刷新一次 client.print( "Temperture:"); client.print( t ); client.println( "C" ); client.println( "<br></br>" ); client.print( "Humidity:"); client.print( h ); client.println( "%" ); client.println( "<br></br>" ); client.println( "<button onclick='refresh()'>Refresh</button>" ); //实现点击刷新 client.println( "</html>" ); client.println( " <script type = 'text/javascript'> " ); client.println( " function refresh(){ location.reload(); } " ); client.println( " </script> " ); // 等待浏览器接收数据 delay(1000); // 断开连接 client.stop(); }
结果如下:
对js不了解的同学可以去简单了解一下