当我拿到我的第一个Arduino Arduino时,我想到的第一件事是“哇!我希望能够从网页上控制这个东西!,但我们当然没有以太网屏蔽。因此,最近我决定从亚马逊(Amazon)那里抢一个盾牌,看看我能做些什么。首先,我需要创建一个简单的草图来绘制一个网页并接受输入。因此,在本教程中,这正是我们将涵盖的内容!

如何从网页上控制Arduino

在这个项目教程中,我们将设置一个带有以太网屏蔽的Arduino,它将允许我们在web浏览器中控制蓝色LED(当然,如果你愿意,你可以使用另一种颜色!)

你需要做的第一件事,在我们想从网页上控制Arduino之前是把以太网屏蔽连接到Arduino上。它只是简单地对准大头针并按下。但是不要压得太厉害,否则以太网屏蔽的底部可能会接触到USB端口的顶部。这会导致你的护盾短路。在这个项目中使用的盾牌是由Sunfounder制作的Wiznet W5100变体(官方Arduino W5100的克隆)。

本项目零件清单

如果你还没有这个列表的组件,这里是我们的简单部件列表:

以太网控制LED接线图

通常,对于一个像这样的项目,我只会使用分配到引脚13的板载LED。不幸的是,在这个项目中,这种方法存在重大问题。首先,由于以太网屏蔽,LED被覆盖,很难看到。第二个也是更严重的原因是W5100以太网屏蔽使用引脚13。所以在这个项目中,我们只需要将一个蓝色LED连接到一个10K欧姆的电阻上,连接到引脚2上。

接线应遵循下图:

这就是布线的全部。将主板连接到以太网,并通过USB将其插入PC。添加以下代码并上传到Arduino你已经准备好从网页开始控制Arduino了!

您可能希望将我选择的IP地址(192.168.1.212)更改为适合您的家庭网络子网的IP地址,但除此之外,其他任何内容都不需要调整。

#inmanbext登录页clude "SPI.h" #include "Ethernet.h" byte mac[] = {0xDE, 0xAD, 0xBE, 0xAD, 0xEE, 0xBE};//物理MAC地址字节ip[] = {192, 168, 1, 212};// IP address in LAN - need to change according to your Network address byte gateway[] = {192, 168, 1,1};//通过路由器字节子网访问Internet [] = {255, 255, 255, 0};//子网掩码EthernetServer (80);//服务器端口;//获取URI querystring;;int blueLEDPin = 2;//连接蓝色LED的pin void setup(){pinMode(blueLEDPin, OUTPUT);// change pin2 to OUTPUT pin2 //初始化以太网以太网开始(mac, ip,网关,子网); server.begin(); } void loop(){ // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); //read the HTTP request if (controlString.length() < 100) { // write characters to string controlString += c; } //if HTTP request has ended– 0x0D is Carriage Return \n ASCII if (c == 0x0D) { client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println(); client.println("<html>"); client.println("<head>"); client.println("<title>The Geek Pub Arduino Ethernet Test Page</title>"); client.println("</head>"); client.println("<body>"); client.println("<img src=\"https://cdn.thegeekpub.com/wp-content/uploads/2018/01/the-geek-pub-big-logo-new.jpg\") style=\"width: 55%; margin-left: auto; margin-right: auto; display: block;\" />"); client.println(" <h1 style=\"color: blue; font-family: arial; text-align: center;\">THE GEEK PUB ARDUINO ETHERNET TEST PAGE</h1> "); client.println(" <h2 style=\"color: green; font-family: arial; text-align: center;\">LED ON/OFF FROM WEBPAGE</h2> "); client.println(" <hr> "); client.println(" <h2 style=\"color: blue; font-family: arial; text-align: center;\"><a href=\"/?GPLED2ON\"\">Turn On The Blue LED</a> - <a href=\"/?GPLED2OFF\"\">Turn Off the Blue LED</a> </h2> "); client.println("</body>"); client.println("</html>"); delay(10); //stopping client client.stop(); // control arduino pin if(controlString.indexOf("?GPLED2ON") > -1) //checks for LEDON { digitalWrite(blueLEDPin, HIGH); // set pin high } else{ if(controlString.indexOf("?GPLED2OFF") > -1) //checks for LEDOFF { digitalWrite(blueLEDPin, LOW); // set pin low } } //clearing string for next read controlString=""; } } } } }

打开命令提示符并输入ping 192.168.1.212(或您的IP),您应该看到以下内容,验证您的Arduino实际上正确地连接到网络:

打开浏览器,输入http://192.168.1.212(或你在网络上选择的地址),你应该会看到以下屏幕:

点击“打开蓝色LED”将点亮LED,而点击“关闭蓝色LED”将关闭LED。

理解以太网屏蔽网页草图

用于Arduino接口的W5100以太网屏蔽,Arduino通过SPI连接器(这是Arduino中间的4脚小块)。因此,使用以太网屏蔽将需要在项目中包含SPI库和以太网库。

#include "SPI.h" #include "Ethernet.h"

代码的下一部分将MAC地址和IP地址分配给以太网屏蔽,并将服务器分配到80端口,这是标准的web服务器位置。

byte mac[] = {0xDE, 0xAD, 0xBE, 0xAD, 0xEE, 0xBE};Byte ip[] = {192, 168, 1, 212};Byte gateway[] = {192, 168, 1,1};Byte subnet[] = {255, 255, 255, 0};EthernetServer服务器(80);

接下来,我们需要一个用于蓝色LED引脚的变量,以及一个用于捕获URI查询字符串数据的“控制”变量。我们会发送?GPLED2ON到网页来开启LED,发送?GPLED2OFF来关闭LED。controlString将捕获这些命令。

字符串controlString;int blueLEDPin = 2;

我们代码的设置部分将引脚2设置为输出,以便当我们设置引脚2高时为LED供电。以太网。begin启动以太网屏蔽,并将我们前面指定的地址分配给它。服务器。Begin启动web服务器监听端口80。

pinMode (blueLEDPin、输出);以太网。开始(mac, ip,网关,子网);server.begin ();

在最后一节中,我不打算详细介绍,因为它构建了一个将被发送到浏览器的HTML页面。HTML的基础知识超出了本教程的范围。

基本原理是循环例程正在侦听一个命令,当它接收到它时,它将使用digitalWrite函数来改变蓝色LED的状态。

从网页控制Arduino的其他想法

除了控制一个简单的LED,这项技术还有很多其他用途。你可以用继电器来控制Arduino能够承受的更高电压或电流。例如井房的水泵。你可以连接家用自动化照明系统,或者控制集尘系统在你的木工店里。这方面的想法几乎是无穷无尽的。

wi - fi盾

虽然我们在本文中介绍了以太网屏蔽,但需要注意的是wi - fi盾牌可以从网页上无线控制Arduino !这对于像机器人和汽车这样的电池驱动项目来说是完美的。

一定要在下面留下你的项目结果的评论!