arduino伺服器搭建web
① 如何使用arino提取網頁中的圖片並顯示在自己的網頁上
使用arino提取網頁中的圖片並顯示在自己的網頁上的方法:
1、設置screen.image(image, xPos, yPos);的參數:
image : a named instance of PImage.
xPos : int, location on the x-axis to start drawing
yPos : int, location on the y-axis to start drawing
2、舉例說明:
PImage logo;
void setup() {
// initialize the screen
EsploraTFT.begin();
// initialize the SD card
SD.begin(SD_CS);
// set the background the black
EsploraTFT.background(0, 0, 0);
// load the image into the named instance of PImage
logo = EsploraTFT.loadImage("arino.bmp");
// if it is a valid image file, turn the Esplora's LED green
if (logo.isValid()) {
Esplora.writeGreen(255);
}
else{
// if it is not valid, turn the LED red
Esplora.writeRed(255);
}
// draw the image on the screen starting at the top left corner
EsploraTFT.image(logo, 0, 0);
}
void loop() {
//循環處理另一個網頁上的圖片,存放到本網頁的固定位置
}
② Arino 能不能發送一個 get 或 post 請求到某個 web 伺服器
方法一:使用Arino配合W5100等SPI網卡模塊,通過TCP,根據http協議格式,用字元串的方式進發送
方法二:使用Arino連接TCP串口透傳模塊,通過串口或軟串口,一樣根據http協議格式,用字元串的方式進發送 另外一些個人經驗供參考:
1. 在發送前最好用TCP調試助手等工具對發送的字元串進行確認一次(可以用電腦想伺服器端發送,以及Arino向本機發送各測試一次)
2. 由於網卡的緩沖區(Buffer)有限,且單片機的處理速度不高,因此盡量不要訪問可能返回大量數據的WEB伺服器,否則可能發生Buffer滿的問題。
③ 我想問一下Arino esp32-cam的websever app_httpd. cpp的那一
摘要 WebServer簡單點理解就是網頁伺服器,主要乾的活就是用戶訪問鏈接的時候執行相應的動作,對於開發來說主要處理的就是注冊鏈接並編寫用戶訪問該鏈接時需要執行的操作。
④ 如何用arino構建一個基於zigbee的網路
這里我們使用Arino Ethernet建立一個簡單網頁伺服器,當Arino伺服器接收到瀏覽器訪問請求時,即會發送響應消息,瀏覽器接收到響應消息,會將其中包含的HTML文本轉換為網頁顯示出來。
這樣就可以將感測器獲取到的信息顯示到網頁上,每個在該網路范圍內的計算機或其他移動設備,無論什麼平台都可以通過網頁瀏覽器了解到各感測器的數據。
[C++] 純文本查看 復制代碼
/*
OpenJumper WebServer Example
建立一個顯示感測器信息的Arino伺服器
[url=http://www.openjumper.com/]http://www.openjumper.com/[/url]
[url=http://x.openjumper.com/ethernet/]http://x.openjumper.com/ethernet/[/url]
*/
#include <SPI.h>
#include <Ethernet.h>
// 設定MAC地址、IP地址
// IP地址需要參考你的本地網路設置
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
// 初始化Ethernet庫
// HTTP默認埠為80
EthernetServer server(80);
void setup() {
// 初始化串口通信
Serial.begin(9600);
// 開始ethernet連接,並作為伺服器初始化
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// 監聽客戶端傳來的數據
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// 一個Http請求結尾必須帶有回車換行
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// 如果收到空白行,說明http請求結束,並發送響應消息
if (c == '\n' && currentLineIsBlank) {
// 發送標準的HTTP響應
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// 添加一個meta刷新標簽, 瀏覽器會每5秒刷新一次
// 如果此處刷新頻率設置過高,可能會出現網頁的卡死的狀況
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
// 輸出每個模擬口讀到的值
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// 已經開始一個新行
currentLineIsBlank = true;
}
else if (c != '\r') {
// 在當前行已經得到一個字元
currentLineIsBlank = false;
}
}
}
// 等待瀏覽器接收數據
delay(1);
// 斷開連接
client.stop();
Serial.println("client disonnected");
}
}
下載程序後,通過瀏覽器,訪問Arino Ethernet所在的IP地址(如程序中設定的IP地址為192.168.1.177),即可看到如圖10-11對應的網頁了。
在網頁中顯示了A0至A5所讀出的模擬值,你也可以通過修改以上程序,顯示其他類型的數據。
以上程序修改自Arino IDE自帶的Web Server常式,它是通過不斷刷新網頁來獲取Arino反饋來完成的。實際上,在當今web開發上,我們幾乎都是通過ajax不刷新網頁,來與伺服器通信的。這里我寫了一個ajax+arino web server的示例。
程序二
要製作這個項目,首先我們需要准備一個
該網頁HTML部分如下:
[HTML] 純文本查看 復制代碼
<!--常式網頁控制Arino -->
<!--奈何col 2014.12.24 v3.0 -->
<!--學了半小時js,求別吐槽 -->
<html>
<head>
<meta charset="UTF-8">
<title>OpenJumper!Arino Web Server</title>
<script type="text/javascript">
function send2arino(){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
element=document.getElementById("light");
if (element.innerHTML.match("Turn on"))
{
element.innerHTML="Turn off";
xmlhttp.open("GET","?on",true);
}
else
{
element.innerHTML="Turn on";
xmlhttp.open("GET","?off",true);
}
xmlhttp.send();
}
function getBrightness(){
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("brightness").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","?getBrightness",true);
xmlhttp.send();
}
window.setInterval(getBrightness,5000);
</script>
</head>
<body>
<div align="center">
<h1>Arino Web Server</h1>
<div>brightness:</div>
<div id="brightness">??</div>
<button id="light" type="button">Turn on</button>
<button type="button">About</button>
</div>
</body>
</html>
在該網頁中,第一個id為light的button標簽,用於控制開關燈。點擊後,會調用send2arino()函數,瀏覽器會以AJAX的方式向Arino伺服器發送含有"?on"或"?off"的GET請求。Arino伺服器通過判斷請求中的內容,做出開關燈動作。
而getBrightness()函數通過一個定時操作,每秒鍾運行一次,每次都以AJAX的方式向Arino伺服器發送含有"?getBrightness"的GET請求,Arino接收到該請求後,就會讀取感測器數據並返回給瀏覽器。同時getBrightness()函數會將id為brightness的div標簽中的內容更新為返回的數據。
此外我們將A0引腳連接光敏模塊,用於採集室內光線;D2引腳連接LED模塊。
示常式序代碼如下:
[C++] 純文本查看 復制代碼
/*
OpenJumper WebServer Example
[url=http://www.openjumper.com/ethernet/]http://www.openjumper.com/ethernet/[/url]
顯示室內照度+開關燈控制
通過手機、平板、計算機等設備訪問
Arino Server,就看到當前室內光線照度
在A0引腳連接光敏模塊,用於採集室內光線;在2號引腳連接LED模塊。
奈何col 2014.12.25
*/
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
EthernetServer server(80);
EthernetClient client;
String readString="";
int Light=2;
int Sensor=A0;
void setup() {
Serial.begin(9600);
//初始化Ethernet通信
Ethernet.begin(mac, ip);
server.begin();
pinMode(Light,OUTPUT);
Serial.print("Server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// 監聽連入的客戶端
client = server.available();
if (client) {
Serial.println("new client");
boolean currentLineIsBlank = false;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString += c;
if (c == '\n') {
Serial.println(readString);
//檢查收到的信息中是否有」on」,有則開燈
if(readString.indexOf("?on") >0) {
digitalWrite(Light, HIGH);
Serial.println("Led On");
break;
}
//檢查收到的信息中是否有」off」,有則關燈
if(readString.indexOf("?off") >0) {
digitalWrite(Light, LOW);
Serial.println("Led Off");
break;
}
//檢查收到的信息中是否有」getBrightness」,有則讀取光敏模擬值,並返回給瀏覽器
if(readString.indexOf("?getBrightness") >0) {
client.println(analogRead(Sensor));
break;
}
//發送HTML文本
SendHTML();
break;
}
}
}
delay(1);
client.stop();
Serial.println("client disonnected");
readString="";
}
}
// 用於輸出HTML文本的函數
void SendHTML()
{
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html><head><meta charset=\"UTF-8\"><title>OpenJumper!Arino Web Server</title><script type=\"text/javascript\">");
client.println("function send2arino(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");element=document.getElementById(\"light\");if (element.innerHTML.match(\"Turn on\")){element.innerHTML=\"Turn off\"; xmlhttp.open(\"GET\",\"?on\",true);}else{ element.innerHTML=\"Turn on\";xmlhttp.open(\"GET\",\"?off\",true); }xmlhttp.send();}");
client.println("function getBrightness(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200)document.getElementById(\"brightness\").innerHTML=xmlhttp.responseText;};xmlhttp.open(\"GET\",\"?getBrightness\",true); xmlhttp.send();}window.setInterval(getBrightness,1000);</script>");
client.println("</head><body><div align=\"center\"><h1>Arino Web Server</h1><div>brightness:</div><div id=\"brightness\">");
client.println(analogRead(Sensor));
client.println("</div><button id=\"light\" type=\"button\" onclick=\"send2arino()\">Turn on</button><button type=\"button\" onclick=\"alert('OpenJumper Web Server')\">About</button></div></body></html>");
}
下載程序,並將你的Arino接入到區域網中。現在你就可以通過瀏覽器訪問你的Arino了。頁面的中的亮度數據,每秒回更新一次,還可以通過「Turn on」、「Turn off」按鈕控制LED的開關。
需要注意的是Arino本身的存儲空間有限,存放和輸出網頁信息會消耗掉很多空間,因此在以上示常式序中,盡量將client.println()輸出的文本行數減少,可以節省一定的存儲空間。
在Arino Ethernet控制器及擴展板上通常都帶有SD卡槽,也可以嘗試將網頁數據放置在SD卡上,然後分段讀取,並通過Ethernet輸出,從而達到節省存儲空間的目的。
⑤ web伺服器怎麼建立
設置一下iis,(IIS全稱為Internet Information Services,中文名字為互聯網信息服務。)把一個html文件放到對應的路徑下用ip打開就行了!
1.點擊「Windows」鍵進入「開始」菜單,點擊「所有應用」,在所有應用菜單里點擊「Windows系統」里的「控制面板」
2.在控制面板對話框里點擊「程序」
3.在程序面板裡面點擊「啟用或關閉windows功能」
4.在「Windows功能」對話框里選中「Internet Information Services」,在Internet Information Services功能展開選擇框里根據你的需要選擇你需要的功能就行了,比如我不知道需要哪些功能所以全部選中反正不會出錯就好了,只要選中這些功能就行了。並點擊「確定」按鈕。
5.Windows功能開始下載並安裝你要的功能的程序,直到出現「Windows已完成請求的更改」,點擊重啟電腦
6.打開瀏覽器輸入localhost能打開,就說明安裝成功。
然後,安裝成功後我還是一臉懵逼。這他媽在哪裡放文件!
不急!
7.接下來我們要打開IIS管理器。桌面上右鍵點擊此電腦,管理。即可進入計算機管理(我是window10 所以我一般需要找什麼直接在左下角的搜索框里輸入就行!簡單省事!)在服務和應用程序里有IIS管理器,點擊 進入IIS管理器。
8.我們可以看到中間部分有很多圖標,找到ASP,點擊。
9.這一步是配置asp應用程序,找到啟用父路徑,選為True。
10.到這里IIS環境已經搭建好了,在瀏覽器里輸入localhost就可以看到iis的主頁了。想要添加網站程序可以點右側的高級設置,將物理路徑改成你的網站程序就能訪問了。
11.記得在電腦上打開的ip只能在電腦上看!如果要用手機看!要在同一個區域網下!並且是cmd裡面用ipconfig查詢的ip才能訪問!
⑥ 如何使用Arino和SIM900A GPRS / GSM模塊將數據發送到Web伺服器
在路由器上做埠映射。TP-LINK之類的家用路由器上好像有"轉發規則"---「虛擬伺服器」的下拉菜單。裡面設置一下,將你的SIM900A所在的私有地址映射成公網IP。
⑦ web伺服器怎麼搭建
1、首先在控制面板中打開「管理工具」,打開「Internet信息服務(IIS)管理器」;
2、點擊我們的伺服器,展開,然後右鍵點擊「應用程序池」,選擇「添加應用程序池」打開;
3、在彈出的對話框中填寫好應用程序池的名稱、.net版本、託管管道模式選擇「集成」,選好了之後點擊確定;
4、添加好了應用程序池之後,我們右擊這個應用程序池,選擇「高級設置」;
5、在彈出的對話框中,常規一欄中,在「啟動32位應用程序」處選擇「True」,然後點擊確定,這樣應用程序池就ok了;
6、然後我們右擊「網站」,選擇「添加網站」;
7、在彈出的對話框中,我們填入網站的名稱,應用程序池處就選擇剛才我們新建的那個應用程序池,然後選擇物理路徑,再把ip地址和的埠填上,主機名處我們填上域名,如果沒有就可以不填;
8、填寫完成之後,我們就點擊「確定
⑧ Arino 能不能發送一個 get 或 post 請求到某個 web 伺服器
可以,有兩種方法供參考:
方法一:使用Arino配合W5100等SPI網卡模塊,通過TCP,根據http協議格式,用字元串的方式進發送
方法二:使用Arino連接TCP串口透傳模塊,通過串口或軟串口,一樣根據http協議格式,用字元串的方式進發送
另外一些個人經驗供參考:
1. 在發送前最好用TCP調試助手等工具對發送的字元串進行確認一次(可以用電腦想伺服器端發送,以及Arino向本機發送各測試一次)
2. 由於網卡的緩沖區(Buffer)有限,且單片機的處理速度不高,因此盡量不要訪問可能返回大量數據的WEB伺服器,否則可能發生Buffer滿的問題。