0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何从网页控制arduino?

科技观察员 来源:八色木 作者:八色木 2022-03-31 16:40 次阅读

当我们完成一些Arduino项目后,比如Arduino控制灯的项目或者Arduino控制舵机的项目,等等。这时你或许会思考一个问题,是否可以通过网页实现对灯或舵机的控制。当然,自带网络版本的Arduino是首选,比如Arduino Yun。下面来看看怎么去实现它。首先,我们需要创建一个简单的网页,使它可以与Arduino通信。在本文中将逐一讨论。

如何从网页控制arduino

在本文中,我们将通过一块以太网功能的扩展板和Arduino共同完成,目的是使我们能通过web浏览器控制蓝色LED的开关(当然,如果你愿意,你可以使用其他颜色的LED)。

首先,当然是将网络功能扩展板与Arduino UNO连接。在这个项目中使用的是Ethernet W5100 网络扩展板模块。

电路连接

pYYBAGJFaKiAbKfEAAK-IT-O8rQ609.png

对于控制LED这种项目,其实只使用Arduino 引脚13的板载LED也可以实现。但是如果要考虑添加W5100扩展板,这种方法就存在一些问题。首先,由于LED会被扩展板覆盖住,想看到LED颈椎受不了!第二个更严重的问题是,W5100以太网扩展板本身使用了引脚13。所以在本文中,我们将一个蓝色LED接一个10K欧姆的电阻后,再将它连接到Arduino的第二个引脚上。

Arduino连接LED

这就是电路的全部内容,是不是超级简单。当然这里的引脚均需要从W5100扩展板上对应连接,连接OK后,通过USB将Arduino插到PC机上。将以下代码上传到Arduino。现在就可以开始从网页控制Arduino了!

注意:需要将下面代码中的IP地址(192.168.1.212)更改为适合你自己家中局域网的IP地址。除此之外,不需要调整其他任何东西。

// Basemu - Controlling an Arduino Pin from a WebPage

// link to www.basemu.com

#include "SPI.h"

#include "Ethernet.h"

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xAD, 0xEE, 0xBE }; //physical mac address

byte ip[] = { 192, 168, 1, 212 }; // IP address in LAN – need to change according to your Network address

byte gateway[] = { 192, 168, 1, 1 }; // internet access via router

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

EthernetServer server(80); //server port

String controlString; // Captures out URI querystring;;

int blueLEDPin = 2; // pin where our blue LED is connected

void setup(){

pinMode(blueLEDPin, OUTPUT); // change pin 2 to OUTPUT pin

// Initialize the Ethernet

Ethernet.begin(mac, ip, gateway, subnet);

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("

");

client.println("

");

client.println("

");

client.println("");

client.println("

");

client.println("

");

client.println("

LED ON/OFF FROM WEBPAGE

");

client.println("

");

client.println("

);

client.println("");

client.println("");

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="";

}

}

}

}

}

下面打开Windows的命令窗口(WIN键+R,打开后输入CMD即可),输入ping 192.168.1.212(对应你的IP地址),应该看到以下内容,这里可以验证你的Arduino是否已正确连接到网络:

poYBAGJFaLOAVA31AASgCksvL_4723.png


Windows的命令窗口(WIN键+R,打开后输入CMD即可)

如果成功Ping通,下面打开浏览器,输入http://192.168.1.212((对应你的IP地址),应该看到以下屏幕:

poYBAGJFaJ-AFf92AAGGhSpOf0c495.png


Arduino WEB控制LED

这时,点击”Turn On The Blue LED”应该会点亮LED,点击“Turn Off the Blue LED”应该会关闭LED。

代码解释

W5100以太网扩展板与Arduino是通过SPI接口进行通信的,因此,使用W5100扩展板需要将“SPI.h”和“Ethernet.h”都include到项目中。

#include "SPI.h"

#include "Ethernet.h"

代码的下一部分是将MAC地址和IP地址分配给W5100,并配置服务器端口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 server(80);

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

String controlString;

int blueLEDPin = 2;

代码的设置部分,设置引脚2为输出,以便当我们设置引脚2为高电平时,可以为LED供电。Ethernet.begin 启动W5100并给它分配前面指定的MAC地址和IP地址。server.begin 启动在端口80上侦听web服务器。

pinMode(blueLEDPin, OUTPUT);

Ethernet.begin(mac, ip, gateway, subnet);

server.begin();

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网页
    +关注

    关注

    0

    文章

    72

    浏览量

    19282
  • Arduino
    +关注

    关注

    187

    文章

    6461

    浏览量

    186557
收藏 人收藏

    评论

    相关推荐

    转:开源制作Arduino智能小车( WiFi远程监控+网页控制

    做的Arduino小车,加上无线路由模块,刷openwrt可以实现远程监控和网页控制
    发表于 07-26 14:14

    运用labview 实现对网页控制

    各位前辈,我现在想运用labview 实现对一个网页控制,要把一些数据写到网页上去,现在不知怎么做?现在可以网页上把数据读出来,不知道哪
    发表于 12-02 13:12

    【项目分享】教你如何运用Arduino通过网页实时控制伺服电机

    以实现一个网络服务器浏览器端来控制并监控Arduino。它同时还支持Websocket,这样我们不用刷新网页就能实时控制与监控
    发表于 09-26 11:16

    如何使用Arduino和ESP8266实现网页控制伺服电机

    使用Arduino和ESP8266模块通过网页控制伺服电机。在本篇文章中,我们将实现通过网页控制伺服电机。
    发表于 06-28 08:09

    如何使用Arduino和ESP8266实现网页控制伺服电机?

    如何使用Arduino和ESP8266实现网页控制伺服电机?
    发表于 09-28 06:16

    什么叫ArduinoArduino怎么玩

    STEP 1:下载Arduino IDE打开网页输入网址进入到页面后,找到下图显示部分。什么叫ArduinoArduino怎么玩?Arduino
    发表于 01-17 09:05

    如何arduino发送文本到arduino

    arduino发送文本到arduino
    发表于 05-04 07:45

    如何使用网页简单控制LED?

    谁能帮我画一个非常简单的草图来通过网页控制 LED。(在 arduino mega 2560 r3 上使用 esp8266)。 与 wifi 的连接和网络服务器的库示例工作得很好。我只是不明白如何以
    发表于 05-24 07:02

    求分享Arduino与ESP8266-12E的连接图和Arduino发送号码到网页的代码?

    我想将我的 Arduino uno 与 ESP8266-12E 连接,以将数字 Arduino uno 发送到网页。 谁能给我Arduino
    发表于 05-29 07:00

    如何使用Arduino Manager移动设备或平板电脑控制Arduino

    对于家庭自动化,Arduino的远程控制或监视,Arduino Manager可以完成所有工作。以下是使用它从移动设备或平板电脑控制Arduino
    的头像 发表于 12-05 08:44 4240次阅读

    ESP8266+网页控制LED

    本次我们将利用NodeMCU建立网络服务。用户通过浏览器可以访问NodeMCU所建立的网页。通过该网页,用户可实现对NodeMCU的控制。首先通过串口,当ESP8266连接WiFi成功之后会获取
    发表于 12-06 18:51 16次下载
    ESP8266+<b class='flag-5'>网页</b><b class='flag-5'>控制</b>LED

    BT到WiFi:创建WiFi控制Arduino机器人车

    电子发烧友网站提供《BT到WiFi:创建WiFi控制Arduino机器人车.zip》资料免费下载
    发表于 10-27 16:42 0次下载
    <b class='flag-5'>从</b>BT到WiFi:创建WiFi<b class='flag-5'>控制</b>的<b class='flag-5'>Arduino</b>机器人车

    单个Arduino输出引脚控制多个继电器或其他执行器

    电子发烧友网站提供《单个Arduino输出引脚控制多个继电器或其他执行器.zip》资料免费下载
    发表于 11-18 11:37 1次下载
    <b class='flag-5'>从</b>单个<b class='flag-5'>Arduino</b>输出引脚<b class='flag-5'>控制</b>多个继电器或其他执行器

    如何Arduino取回代码/程序

    电子发烧友网站提供《如何Arduino取回代码/程序.zip》资料免费下载
    发表于 06-09 10:50 2次下载
    如何<b class='flag-5'>从</b><b class='flag-5'>Arduino</b>取回代码/程序

    Azure Percept中的docker容器控制Arduino

    电子发烧友网站提供《Azure Percept中的docker容器控制Arduino.zip》资料免费下载
    发表于 06-27 11:28 0次下载
    <b class='flag-5'>从</b>Azure Percept中的docker容器<b class='flag-5'>控制</b><b class='flag-5'>Arduino</b>