arduino 网页服务器,如何将Arduino开发板用作Web服务器
通过使用以太网扩展板(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服务器相关推荐
- 迅为IMX6ULL开发板搭建Web服务器(二)
boa 拷贝到开发板的 bin 目录下 接下来在开发板根目录下建立 www 文件夹,如图 80.15. 然后在开发板上面建立的 www 目录下面建立文件夹 cgi-bin 目录,如图 80.16: 然 ...
- Arduino IDE 如何添加 ESP32 开发板?
Arduino IDE 如何添加 ESP32 开发板 arduino-esp32 使用引导 Installation instructions using Arduino IDE Boards Man ...
- 香橙派PC Plus电脑开发板制作网络打印服务器
香橙派PC Plus是一款开源的单板电脑,新一代的arm开发板,使用全志Allwinner H3系统级芯片,拥有1GB DDR3 内存,板载8GB EMMC Flash 存储,可以运行Android4 ...
- 基于ARM开发板搭建物联网服务器
基于ARM开发板搭建物联网服务器 一.项目需求 1.1设备需求 1.2知识需求 1.3项目介绍 二.开发环境搭建 2.1阿里云服务器配置 2.2虚拟机交叉编译环境搭建 2.3下载相关应用压缩文件 三. ...
- 自主开发的小型Web服务器
自主开发的小型Web服务器 1. 技术特点 2. 具体步骤 3. CGI技术 4. Mysql连接 5. Gitee原码链接 6. 参考Blog 1. 技术特点 网络编程(http协议,TCP/IP协 ...
- python和arduino哪个好_Arduino各开发板的比较
本帖最后由 亚伦安娜 于 2017-2-26 16:18 编辑 查了好久,发现除了奈何等等几位大神总结过arduino各板子之间的性能.差异,没有很新的分析文章,在此斗胆写一篇测评.亚伦安娜写以方便刚 ...
- Arduino安装与配置ESP8266开发板(超简单,亲测有效)
文章目录 前言 一.下载Arduino 二. ESP8266环境配置(超简单,亲测有效) 三.下载验证 总结 前言 由于要上数字信号处理课程,需要安装Arduino,并在Arduino中配置ESP82 ...
- Arduino支持STM32套件的开发板管理器安装
自己在Arduino中安装STM32套件的时候 ,及其郁闷的是:在没有FQ的情况下,下载很慢.慢就算了我可以等,可是不支持断点续传.在下载中间容易出错,出错就完蛋了.后面根本就算下载完成都会校验出错. ...
- Arduino手动添加ESP32相关开发板(图文并茂)
一.前述 使用Arduino开发ESP32,就绕不开添加ESP32开发板这一步,网上有很多相关教程,介绍的很详细,但是在实际操作过程中还是遇到一些问题,所以在这里记录一下,希望可以帮到别人. ...
最新文章
- mysql buffer pool_MySQL的查询缓存和Buffer Pool
- 吴恩达 coursera AI 专项五第三课(上)总结+作业答案
- 925. Long Pressed Name 长按键入
- leetcode-生成括号(回溯算法)
- ros构建机器人运动学模型_古月私房课 | ROS机械臂开发中的主角MoveIt!
- 汽车电子专业知识篇(六十三)-继电器的结构、工作原理、检测方法
- spring MVC配置form支持PUT和DELETE方法
- 几个容器网络相关问题的分析和解决总结
- 构建一套高逼格 Nginx 集群监控系统!
- apache2.4.18中启用h2c
- java的写法作文,RxJava系列文章(二) - 网络图片添加水印RxJava写法
- 一文读懂Xgboost
- 锐捷linux客户端进路由器,锐捷WLAN无线产品之SSH管理
- [渝粤教育] 西南科技大学 成本会计 在线考试复习资料(1)
- 计算机硬件基础——第七章:存储系统
- Android图片处理之Glide使用大全
- Cloud Token:一个趋势可以改变你的一生,有天你别后悔拍大腿……
- gog百度百科_游戏百科,gog游戏百科
- 360路由器v2刷第三方固件_己亥年网件R6220路由器刷openwrt固件的方法(亲测可用)...
- 从原理到接法全面了解三相电
热门文章
- Vue父子组件生命周期的执行顺序
- Word 打开WPS文档成乱码的解决方法(转)
- 捕捉RAISERROR异常
- 计算机仿真退稿意见,《计算机仿真》郑重申明
- 隐形矫正计算机软件,数字化隐形正畸技术及口腔病例展示
- Java实现两个日期相减获得相差的小时数
- 我的kindle导航
- 利用java的网络编程实现一个小游戏(类似于石头剪刀布)
- 戴尔r510服务器加硬盘没反应,戴尔R510_R410_R610_R710等所有服务器安装win2003解决办法...
- Problem E: 填空题B-发金牌