ESP8266 AP+Webserver(Arduino for VS) 基礎測試 筆記

Arduino for visual studio 一直在更新 要注意(所以不是很穩定 寫程式OK 但編譯上傳 常有靈異現象發生 還會重新啟動 ....CPU編譯時也是佔超高是 AIDE的一倍)

在  VMICRO>Visual Micro Explor 第2頁 Reference 那邊有指令碼可以查

VS開新專案時,第一行就出問題

#include <ESP8266WiFi.h>
找不到......
Arduino IDE 就沒這問題.
最後找到解決方案
在上方  工具列  有個 Add Library 下拉 Bulit-in 找 esp8266 相關的
點選後就會自動加進來.....
這時發現一個方案要是有多個專案 只會加入一開始建的那個專案
所以還是一個方案一個專案 乖乖照著玩
-------------
自動加入
#include <WiFi.h>
#include <WiFiUdp.h>
#include <WiFiClient.h>
#include <WiFiServer.h>
#include <ESP8266WiFiMulti.h>
#include <ESP8266WiFi.h>

但是  WiFi.softAP ()出錯了,因為引用錯了
把 #include <WiFi.h> 刪了
因為和 ESP8266WiFi.h 衝突到了
---------------------------------------------
ESP8266WIFI 程式庫 函式說明
*******************
不知是否是 AP 模式 mDNS 啟動不了
*********************************
這時出現很神奇的問題 不知是我 更新 ESP2866 的問題還是其他
用Arduino IDE 一直說  esp8266 無效程式庫 錯誤 不能編譯了....
全部殺掉重新解壓縮 Arduino 1.6.2
將 我的文件\Arduino \libraries 全殺了
這樣都沒用 
一定要將  C:\Users\(username)\AppData\Local\Arduino15 幹掉才行
重新裝 ESP8266 就 ok
*****************************
重新用範例程式跑MDNS 雖然能啟動 但用網址連 esp8266.local 成功只有一次 
感覺不穩定 用途不大 以後再查

************************
ESP8266WiFi AP
WiFi.softAP(ssid,[password],[channel],[ssid_hidden])
設置AP模式參數
參數
ssid:網路名稱(最長63字元)
password:密碼,至少8個字元,NULL為開放網路(可選參數)
channel:通道號,1 - 13(可選參數,預設情況下為1)
ssid_hidden:網路是否可見,0為可見網路,1為隱藏網路(可選參數,預設情況下為0)
返回值:bool
WiFi.softAPConfig(local_ip,gateway,subnet)
配置AP
參數
local_ip:ap ip(類型:IPAddress-例192,168,0,1)
gateway:網關ip(類型:IPAddress)
subnet:子網掩碼(類型:IPAddress)
返回值:bool
WiFi.softAPdisconnect(wifioff)
斷開網路,關閉AP
WiFi.softAPgetStationNum()
獲取AP模式下已連接終端的數量
WiFi.softAPIP()
獲取IP地址,用於AP模式
返回:IP地址
WiFi.softAPmacAddress(mac)
獲取MAC地址,用於AP模式
返回:uint8_t*
WiFi.softAPmacAddress(void)
獲取MAC地址,用於AP模式
返回:String
*************************************
在專案下直接新增一個 XX.ino 檔
將其他 function 寫過去 VS2013自己會找到編譯
不用一支 寫得太長
**************************************
ESP8266 無線連線 有時第一次 OK 改程式再上傳就不行
按reset也不行
將板子斷電重啟就好了
有可能是上次連線並未中斷
但連線卻偵測失敗
看路由器雖然板子斷電但資料還在上頭 跟 TCP一樣
可能要先偵測 目前連線沒有
Wifi.begin() 回傳值 好像沒這功能所以認為沒連上
解決方案:
1.一開始先斷再說    WiFi.disconnect(); 再連就OK
ps:用VS 開串列監看時 只要 disconnet 再 connect 板子會重啟
2.一開始 WiFi.SSID() 取得連線 ID ..但取得表示連線嗎? 怎麼試....還在想
3.應該已解決
Arduino for VS  果然方便
查指令一流
看了
WiFi.status()
原來不是只用在 begin 後面
是一開始就可用 隨時隨地可檢查
再用 VS 移至定義的功能
typedef enum {
    WL_NO_SHIELD        = 255,   // for compatibility with WiFi Shield library
    WL_IDLE_STATUS      = 0,
    WL_NO_SSID_AVAIL    = 1,
    WL_SCAN_COMPLETED   = 2,
    WL_CONNECTED        = 3,
    WL_CONNECT_FAILED   = 4,
    WL_CONNECTION_LOST  = 5,
    WL_DISCONNECTED     = 6
} wl_status_t;
所以一開始去看 status 是否是  WL_CONNECTED
再查 SSID 就不用一開始都disconnect 在 begin()
*******************
換 D1 mini 測
他上傳速度預設是921600 還滿快的
快是快 偶而還是會凸槌 還是改回 115200
********************************
連上 AP後
先開個
ESP8266WebServer server(80);
setup
{
......
   server.on("/", handleRoot);//當網址  http://esp8266local/  跑 handleRoot
   server.on("/test", testRoot);//當網址  http://esp8266local/test  跑 testRoot
   這樣就可以下很多單1指令 例如:
    /led1  開燈
    /led0  關燈  
}
void loop() {
server.handleClient();//等待client
}
void handleRoot() {
server.send(200, "text/html", "<h1>You are connected</h1>");
}
但是如果是 要送 像是  /test?name=ABC&pass=123  怎麼辦
void testRoot() {
String varname = server.arg("name"); 這樣抓就解決
}
***********************
最後被搞死的是 回傳網頁或資料
畢竟不是PC  網頁還是得自己兜
C語言 字串處理是很麻煩的事千萬小心
String ret = "<!DOCTYPE html>\
<html xmlns = \"http://www.w3.org/1999/xhtml\">\
<head>\
<meta http - equiv =\"Content-Type\" content =\"text/html; charset=utf-8\" />\
<title></title>\
</head>\
<body>\
<h1> 中文測試</h1>\
</body>\
</html>";
server.send(200, "text/html", ret); //回送就好
沒弄好 中文變亂碼
字串後 \  是表連接下一行
從網頁 copy 過來 這樣寫比較能看懂 好比對
注意 常常 </html> 沒事按個enter會變  < / html> 
這樣就掛了
******************************
大致上已搞清楚
AP+WebServer 的運作模式與過程
記的很亂有空再整理
不知是更新過 還是已經該解決的事都解決了
D1 mini 好像比較穩定 不像 ESP-12 沒事卡住 然後VS就重開..
















留言

熱門文章