通过使用以太网扩展板(Ethernet shield),您可以将Arduino开发板用作一个Web服务器。

通过向Arduino开发板配备一个以太网扩展板,您可以将其变成简易的Web服务器,并通过在与Arduino连接在同一网络的计算机上运行的浏览器访问该服务器,您可以:

●    从网页控制硬件(使用Javascript按钮)。

●    读取开关的状态(使用简单的HTML)。

●    读取传感器的值(使用简单的HTML)。

e1.png (427.17 KB, 下载次数: 108)

2018-8-11 22:41 上传

所需的硬件

要将Arduino用作Web服务器,您需要以下硬件:

●    Arduino Mega2560(或Arduino UNO)开发板

●    以太网扩展板

●    10 / 100Mb网线

以太网扩展板将Arduino连接到Internet。设置非常简单:只需将扩展板的插头插入Arduino,然后将网线连接到扩展板。下图显示了此设置:

ee4.png (640.93 KB, 下载次数: 112)

2018-8-11 22:41 上传

实验

为了演示如何将Arduino用作Web服务器,我们将读取交换机的状态。

需要硬件

●    10 / 100Mb网线

●    Wi-Fi路由器

●    Arduino Mega2560开发板

●    以太网扩展板

●    面包板

●    连接导线

●    10k电阻

●    9V适配器

●    按钮

接线图

arduino-web-server.jpg (136.9 KB, 下载次数: 100)

2018-8-11 22:41 上传

如上所示连接组件。 Arduino的引脚8连接到按钮,并配置为INPUT。按下按钮时,Arduino将在此引脚上读取到一个低电平。然后,Arduino将OUTPUT的状态设置为ON。按钮释放时,输出将设置为OFF。交换机的状态将发送到Web服务器。

以太网配置

要控制以太网扩展板,需要使用Ethernet.h库。

首先需要使用Ethernet.begin()函数为扩展板分配MAC和IP地址。对于特定设备,MAC地址是全局唯一标识符。现在的以太网扩展板带有MAC地址的标签。对于以前的扩展板,随机的MAC地址应该可以正常工作,但是不应该使用与其他扩展板相同的MAC地址。 IP地址的有效性取决于一个网络的配置。如果使用DHCP,它可以动态地为扩展板分配IP。

IP地址

IP地址(因特网协议地址)是分配给参与计算机网络的每个设备的数字标签,该计算机网络使用因特网协议进行通信。通过以下代码指定IP地址:

byte ip[] = { 192, 168, 0, 112 };复制代码

然后根据自己的设置将其更改。例如,要将以太网扩展板IP分配到192.168.0.50,请写入以下代码:

byte ip[] = { 192, 168, 0, 50 };复制代码

MAC地址

MAC地址(媒体访问控制地址)是分配给参与物理网络的每个设备的唯一标识符。每个网络设备都有一个唯一的序列号,可通过网络识别自身,这通常可以硬编程到设备的固件中。但是,使用Arduino,我们可以自己定义MAC地址。

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 };复制代码

您可以通过以下代码设置子网和网关:

byte subnet [] = {255,255,255,0}; //分配子网掩码

byte gateway [] = {192,168,0,1}; //分配网关复制代码

因此,设置以太网扩展板时,需要以下代码:

/********************ETHERNET SETTINGS ********************/

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 }; //assigning mac address

byte ip[] ={ 192, 168, 0, 112 }; // ip in lan

byte subnet[] = { 255, 255, 255, 0 }; //assigning subnet mask

byte gateway[] = { 192, 168, 0, 1 }; // assigning default gateway复制代码

下面是系统的照片,显示了Arduino如何连接到Wi-Fi路由器。网线将扩展板与路由器连接,然后路由器与笔记本电脑无线连接。

e12.png (676.5 KB, 下载次数: 113)

2018-8-11 22:41 上传

代码

下面是一个加载简单网页的程序。

client.println(""); //web page is made using HTML

client.println("");

client.println("

");

client.println("

Ethernet Tutorial");

client.println("");

client.println("");

client.println("

");

client.println("

A Webserver Tutorial

");

client.println("

Observing State Of Switch

");

client.print("

Switch is:  2>");

if (digitalRead(8))

{

client.println("

ON

");

}

else

{

client.println("

OFF

");

}

client.println("");

client.println("");复制代码

当访问分配给Arduino的IP地址时,该程序将在Web浏览器上显示一个网页。以下代码:

client.println("");复制代码

指示浏览器刷新页面。再次访问该页面时,Arduino将再次读取该开关的状态并显示它。

请记住,您始终可以查看显示的网页。按下按钮,您可以观察到开关的变化状态。

您也可以将其设置为在没有路由器的情况下运行。为此,您需要:

1.    为Arduino的以太网分配手动IP地址,例如192.168.0.2,子网掩码255.255.255.0,默认网关为空。

2.    使用交叉网线连接两者(笔记本电脑和Arduino)。

3.    然后,我们就可以从笔记本电脑上通过http://192.168.0.2访问您的Arduino。

代码

下面是您将加载到Arduino中的代码,以便在没有路由器的情况下将其直接连接到PC:

#include

#include

/******************** ETHERNET SETTINGS ********************/

byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x85, 0xD9 };         //physical mac address

byte ip[] = { 192, 168, 0, 112 };                   // ip in lan

byte subnet[] = { 255, 255, 255, 0 };              //subnet mask

byte gateway[] = { 192, 168, 0, 1 };              // default gateway

EthernetServer server(80);                       //server port

void setup()

{

Ethernet.begin(mac,ip,gateway,subnet);            // initialize Ethernet device

server.begin();                                                  // start to listen for clients

pinMode(8, INPUT);                                              // input pin for switch

}

void loop()

{

EthernetClient client = server.available();          // look for the client

// send a standard http response header

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println("Connnection: close");

client.println();

/*

This portion is the webpage which will be

sent to client web browser one can use html , javascript

and another web markup language to make particular layout

*/

client.println("");                  //web page is made using html

client.println("");

client.println("

");

client.println("

Ethernet Tutorial");

client.println("");

/*

The above line is used to refresh the page in every 1 second

This will be sent to the browser as the following HTML code:

content = 1 sec i.e assign time for refresh

*/

client.println("");

client.println("

");

client.println("

A Webserver Tutorial

");

client.println("

Observing State Of Switch

");

client.print("

Switch is:  2>");

if (digitalRead(8))

{

client.println("

ON

");

}

else

{

client.println("

OFF

");

}

client.println("");

client.println("");

delay(1);                                  // giving time to receive the data

/*

The following line is important because it will stop the client

and look for the new connection in the next iteration i.e

EthernetClient client = server.available();

*/

client.stop();

}复制代码

arduino 网页服务器,如何将Arduino开发板用作Web服务器相关推荐

  1. 迅为IMX6ULL开发板搭建Web服务器(二)

    boa 拷贝到开发板的 bin 目录下 接下来在开发板根目录下建立 www 文件夹,如图 80.15. 然后在开发板上面建立的 www 目录下面建立文件夹 cgi-bin 目录,如图 80.16: 然 ...

  2. Arduino IDE 如何添加 ESP32 开发板?

    Arduino IDE 如何添加 ESP32 开发板 arduino-esp32 使用引导 Installation instructions using Arduino IDE Boards Man ...

  3. 香橙派PC Plus电脑开发板制作网络打印服务器

    香橙派PC Plus是一款开源的单板电脑,新一代的arm开发板,使用全志Allwinner H3系统级芯片,拥有1GB DDR3 内存,板载8GB EMMC Flash 存储,可以运行Android4 ...

  4. 基于ARM开发板搭建物联网服务器

    基于ARM开发板搭建物联网服务器 一.项目需求 1.1设备需求 1.2知识需求 1.3项目介绍 二.开发环境搭建 2.1阿里云服务器配置 2.2虚拟机交叉编译环境搭建 2.3下载相关应用压缩文件 三. ...

  5. 自主开发的小型Web服务器

    自主开发的小型Web服务器 1. 技术特点 2. 具体步骤 3. CGI技术 4. Mysql连接 5. Gitee原码链接 6. 参考Blog 1. 技术特点 网络编程(http协议,TCP/IP协 ...

  6. python和arduino哪个好_Arduino各开发板的比较

    本帖最后由 亚伦安娜 于 2017-2-26 16:18 编辑 查了好久,发现除了奈何等等几位大神总结过arduino各板子之间的性能.差异,没有很新的分析文章,在此斗胆写一篇测评.亚伦安娜写以方便刚 ...

  7. Arduino安装与配置ESP8266开发板(超简单,亲测有效)

    文章目录 前言 一.下载Arduino 二. ESP8266环境配置(超简单,亲测有效) 三.下载验证 总结 前言 由于要上数字信号处理课程,需要安装Arduino,并在Arduino中配置ESP82 ...

  8. Arduino支持STM32套件的开发板管理器安装

    自己在Arduino中安装STM32套件的时候 ,及其郁闷的是:在没有FQ的情况下,下载很慢.慢就算了我可以等,可是不支持断点续传.在下载中间容易出错,出错就完蛋了.后面根本就算下载完成都会校验出错. ...

  9. Arduino手动添加ESP32相关开发板(图文并茂)

    一.前述   使用Arduino开发ESP32,就绕不开添加ESP32开发板这一步,网上有很多相关教程,介绍的很详细,但是在实际操作过程中还是遇到一些问题,所以在这里记录一下,希望可以帮到别人.    ...

最新文章

  1. mysql buffer pool_MySQL的查询缓存和Buffer Pool
  2. 吴恩达 coursera AI 专项五第三课(上)总结+作业答案
  3. 925. Long Pressed Name 长按键入
  4. leetcode-生成括号(回溯算法)
  5. ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!
  6. 汽车电子专业知识篇(六十三)-继电器的结构、工作原理、检测方法
  7. spring MVC配置form支持PUT和DELETE方法
  8. 几个容器网络相关问题的分析和解决总结
  9. 构建一套高逼格 Nginx 集群监控系统!
  10. apache2.4.18中启用h2c
  11. java的写法作文,RxJava系列文章(二) - 网络图片添加水印RxJava写法
  12. 一文读懂Xgboost
  13. 锐捷linux客户端进路由器,锐捷WLAN无线产品之SSH管理
  14. [渝粤教育] 西南科技大学 成本会计 在线考试复习资料(1)
  15. 计算机硬件基础——第七章:存储系统
  16. Android图片处理之Glide使用大全
  17. Cloud Token:一个趋势可以改变你的一生,有天你别后悔拍大腿……
  18. gog百度百科_游戏百科,gog游戏百科
  19. 360路由器v2刷第三方固件_己亥年网件R6220路由器刷openwrt固件的方法(亲测可用)...
  20. 从原理到接法全面了解三相电

热门文章

  1. Vue父子组件生命周期的执行顺序
  2. Word 打开WPS文档成乱码的解决方法(转)
  3. 捕捉RAISERROR异常
  4. 计算机仿真退稿意见,《计算机仿真》郑重申明
  5. 隐形矫正计算机软件,数字化隐形正畸技术及口腔病例展示
  6. Java实现两个日期相减获得相差的小时数
  7. 我的kindle导航
  8. 利用java的网络编程实现一个小游戏(类似于石头剪刀布)
  9. 戴尔r510服务器加硬盘没反应,戴尔R510_R410_R610_R710等所有服务器安装win2003解决办法...
  10. Problem E: 填空题B-发金牌