當(dāng)我們完成一些Arduino項(xiàng)目后,比如Arduino控制燈的項(xiàng)目或者Arduino控制舵機(jī)的項(xiàng)目,等等。這時(shí)你或許會(huì)思考一個(gè)問(wèn)題,是否可以通過(guò)網(wǎng)頁(yè)實(shí)現(xiàn)對(duì)燈或舵機(jī)的控制。當(dāng)然,自帶網(wǎng)絡(luò)版本的Arduino是首選,比如Arduino Yun。下面來(lái)看看怎么去實(shí)現(xiàn)它。首先,我們需要?jiǎng)?chuàng)建一個(gè)簡(jiǎn)單的網(wǎng)頁(yè),使它可以與Arduino通信。在本文中將逐一討論。
如何從網(wǎng)頁(yè)控制arduino
在本文中,我們將通過(guò)一塊以太網(wǎng)功能的擴(kuò)展板和Arduino共同完成,目的是使我們能通過(guò)web瀏覽器控制藍(lán)色LED的開(kāi)關(guān)(當(dāng)然,如果你愿意,你可以使用其他顏色的LED)。
首先,當(dāng)然是將網(wǎng)絡(luò)功能擴(kuò)展板與Arduino UNO連接。在這個(gè)項(xiàng)目中使用的是Ethernet W5100 網(wǎng)絡(luò)擴(kuò)展板模塊。
電路連接
對(duì)于控制LED這種項(xiàng)目,其實(shí)只使用Arduino 引腳13的板載LED也可以實(shí)現(xiàn)。但是如果要考慮添加W5100擴(kuò)展板,這種方法就存在一些問(wèn)題。首先,由于LED會(huì)被擴(kuò)展板覆蓋住,想看到LED頸椎受不了!第二個(gè)更嚴(yán)重的問(wèn)題是,W5100以太網(wǎng)擴(kuò)展板本身使用了引腳13。所以在本文中,我們將一個(gè)藍(lán)色LED接一個(gè)10K歐姆的電阻后,再將它連接到Arduino的第二個(gè)引腳上。
Arduino連接LED
這就是電路的全部?jī)?nèi)容,是不是超級(jí)簡(jiǎn)單。當(dāng)然這里的引腳均需要從W5100擴(kuò)展板上對(duì)應(yīng)連接,連接OK后,通過(guò)USB將Arduino插到PC機(jī)上。將以下代碼上傳到Arduino?,F(xiàn)在就可以開(kāi)始從網(wǎng)頁(yè)控制Arduino了!
注意:需要將下面代碼中的IP地址(192.168.1.212)更改為適合你自己家中局域網(wǎng)的IP地址。除此之外,不需要調(diào)整其他任何東西。
// 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="";
}
}
}
}
}
下面打開(kāi)Windows的命令窗口(WIN鍵+R,打開(kāi)后輸入CMD即可),輸入ping 192.168.1.212(對(duì)應(yīng)你的IP地址),應(yīng)該看到以下內(nèi)容,這里可以驗(yàn)證你的Arduino是否已正確連接到網(wǎng)絡(luò):
Windows的命令窗口(WIN鍵+R,打開(kāi)后輸入CMD即可)
如果成功Ping通,下面打開(kāi)瀏覽器,輸入http://192.168.1.212((對(duì)應(yīng)你的IP地址),應(yīng)該看到以下屏幕:
Arduino WEB控制LED
這時(shí),點(diǎn)擊”Turn On The Blue LED”應(yīng)該會(huì)點(diǎn)亮LED,點(diǎn)擊“Turn Off the Blue LED”應(yīng)該會(huì)關(guān)閉LED。
代碼解釋
W5100以太網(wǎng)擴(kuò)展板與Arduino是通過(guò)SPI接口進(jìn)行通信的,因此,使用W5100擴(kuò)展板需要將“SPI.h”和“Ethernet.h”都include到項(xiàng)目中。
#include "SPI.h"
#include "Ethernet.h"
代碼的下一部分是將MAC地址和IP地址分配給W5100,并配置服務(wù)器端口80,這是標(biāo)準(zhǔn)的web服務(wù)器端口。
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);
接下來(lái),需要一個(gè)用于藍(lán)色LED引腳的變量,以及一個(gè)用于捕獲URI查詢(xún)字符串?dāng)?shù)據(jù)的“控制”變量。我們將發(fā)送“?GPLED2ON”到網(wǎng)頁(yè)上來(lái)關(guān)閉LED,發(fā)送“?GPLED2OFF”來(lái)關(guān)閉LED。controlString將捕獲這些命令。
String controlString;
int blueLEDPin = 2;
代碼的設(shè)置部分,設(shè)置引腳2為輸出,以便當(dāng)我們?cè)O(shè)置引腳2為高電平時(shí),可以為L(zhǎng)ED供電。Ethernet.begin 啟動(dòng)W5100并給它分配前面指定的MAC地址和IP地址。server.begin 啟動(dòng)在端口80上偵聽(tīng)web服務(wù)器。
pinMode(blueLEDPin, OUTPUT);
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
-
網(wǎng)頁(yè)
+關(guān)注
關(guān)注
0文章
74瀏覽量
19650 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192151
發(fā)布評(píng)論請(qǐng)先 登錄
轉(zhuǎn):開(kāi)源制作Arduino智能小車(chē)( WiFi遠(yuǎn)程監(jiān)控+網(wǎng)頁(yè)控制)
運(yùn)用labview 實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)的控制
【項(xiàng)目分享】教你如何運(yùn)用Arduino通過(guò)網(wǎng)頁(yè)實(shí)時(shí)控制伺服電機(jī)
如何使用Arduino和ESP8266實(shí)現(xiàn)網(wǎng)頁(yè)控制伺服電機(jī)
如何使用Arduino和ESP8266實(shí)現(xiàn)網(wǎng)頁(yè)控制伺服電機(jī)?
什么叫Arduino?Arduino怎么玩
如何使用網(wǎng)頁(yè)簡(jiǎn)單控制LED?
求分享Arduino與ESP8266-12E的連接圖和Arduino發(fā)送號(hào)碼到網(wǎng)頁(yè)的代碼?
如何使用Arduino Manager從移動(dòng)設(shè)備或平板電腦控制Arduino
ESP8266+網(wǎng)頁(yè)控制LED

最簡(jiǎn)單DIY基于ESP8266的智能彩燈②(在網(wǎng)頁(yè)用按鍵和滑動(dòng)條控制RGB燈)

從BT到WiFi:創(chuàng)建WiFi控制的Arduino機(jī)器人車(chē)

從Azure Percept中的docker容器控制Arduino

評(píng)論