ESP8266連接wifi
1、建立工程
我開(kāi)發(fā)的時(shí)候比較早,用的是NONOS_v1.5.0的sdk,最新的v2.1.0的sdk燒錄好固件后,上電會(huì)一直出Fatal exception 28的錯(cuò)誤,搞了一天沒(méi)弄清楚,所以用還留著的v1.5.3的sdk講解,具體使用方法不會(huì)有很大改變,詳細(xì)也可以參考API文檔。
打開(kāi)解壓sdk包,將example文件夾下的IOT_Demo復(fù)制替換到app文件夾下,并將driver_lib/include/driver下的uart.h、uart_register.h復(fù)制到app/include下,driver_lib/driver下uart.c復(fù)制到app/driver下,同時(shí)將driver_lib下Makefile文件改名或者刪除,懂makefile的朋友可以自行修改makefile文件否則會(huì)出現(xiàn)編譯錯(cuò)誤,目錄結(jié)構(gòu)如下。
我們主要修改的是user_main.c這個(gè)文件,將user_init()函數(shù)是程序入口,里的內(nèi)容全刪了
此外頭文件修改為
#include “ets_sys.h”
#include “osapi.h”
#include “user_interface.h”
#include “uart.h”1234
user_rf_pre_init()這個(gè)函數(shù)不要?jiǎng)h除,放著即可,這樣user_main.c文件只有void user_rf_pre_init(void)、void user_init(void)這兩個(gè)函數(shù),以及4個(gè)頭文件。
2、連接wifi
要連接wifi首先要指定要連接的wifi賬號(hào)和密碼,則需要定義兩個(gè)變量來(lái)存放它們,同時(shí)還需要定義一個(gè)結(jié)構(gòu)體用于存放:Wi-Fi Station 接口參數(shù)。
struct station_config station_cfg;
uint8 ssid[]=“xxx”; //wifi名
uint8 password[]=“xxx”; //wifi密碼123
新買(mǎi)到的模塊默認(rèn)是作為AP,這里我們需要將它修改作為Station,這樣才能連wifi,這里我將這幾個(gè)操作放入一個(gè)函數(shù)里面。
user_set_station_config(void)
{
wifi_set_opmode(STATION_MODE); //設(shè)置為STATION MODE
os_strcpy(station_cfg.ssid, ssid); //ssid名稱(chēng)
os_strcpy(station_cfg.password, password); //密碼
wifi_station_set_config(&station_cfg); //設(shè)置WIFI帳號(hào)和密碼
}12345678
注:添加ICACHE_FLASH_ATTR宏定義是因?yàn)?266的iRam空間有限,所以上電啟動(dòng)時(shí)不能把所有數(shù)據(jù)都放入iRam,只有在需要用到的時(shí)候才載入,因此推薦一般的函數(shù)都加ICACHE_FLASH_ATTR。
這樣我們就能把這個(gè)函數(shù)放到user_init()中了,如下所示。
void user_init(void)
{
uart_init(BIT_RATE_115200,BIT_RATE_115200); //設(shè)置波特率為115200
os_printf(“SDK version:%s\n”, system_get_sdk_version()); //打印sdk版本
user_set_station_config(); //set STATION config
//user_set_station_config()中調(diào)用wifi_station_set_config(&station_cfg)
//底層會(huì)自動(dòng)連接對(duì)應(yīng)路由,不需要調(diào)用 wifi_station_connect 來(lái)進(jìn)行連接。
}12345678
編譯通過(guò)后燒入固件就能查看效果了。
esp8266如何破解wifi密碼及詳細(xì)步驟
1、esp8266模塊
首先,你要有一塊esp8266模塊,像這樣的,最好是有底板的,帶Micro口的,這些淘寶上都可以搜到的,我的就是淘寶上買(mǎi)的,大概30-40RMB左右,當(dāng)然,如果你的動(dòng)手能力比較強(qiáng)的話可以自己做底板。
2、將固件下載到esp8266中
在這里你需要下載兩個(gè)東西,就是Flash下載工具和固件
Flash下載工具:http://espressif.com/zh-hans/support/download/other-tools
將自己的esp8266插到電腦上,確定連接沒(méi)問(wèn)題的話打開(kāi)設(shè)備管理器看下自己的串口是多少。
將下載的Flash下載工具解壓,打開(kāi)ESPFlashDownloadTool_v3.4.9.2.exe,打開(kāi)是這樣的,選擇esp8266 DownloadTool
在這里需要注意的幾點(diǎn)是:
(1)固件選擇之前下載的固件DNS.ino.ino.nodemcu.bin。
(2)地址輸入0×00000(可能地址這一欄會(huì)出現(xiàn)紅色的狀況,導(dǎo)致無(wú)法燒入固件,此時(shí)把下載器關(guān)了重啟下,然后把地址那欄清空再自己手動(dòng)輸入就好了)。
(3)這邊需要將DoNotChgBin勾選起來(lái),否則燒入固件后可能沒(méi)有wifi,當(dāng)然不同的板子可能不太一樣,這個(gè)請(qǐng)大家自行測(cè)試。
(4)這邊串口按照自己之前查的選擇就行了,波特率115200就可以了。
其他設(shè)置按照紅框里面的選擇就行。
設(shè)置完這些后就點(diǎn)擊START開(kāi)始燒flash,燒完后如果模塊正常的話電腦會(huì)多出來(lái)一個(gè)叫HH的wifi,這個(gè)wifi就是esp8266發(fā)出來(lái)的。
如果沒(méi)有顯示HH,就按下esp8266的RST鍵復(fù)位,等個(gè)幾秒鐘就會(huì)顯示出來(lái)。此時(shí)你就可以連接HH了。wifi的密碼為:m1234567
注:如果通過(guò)上面的方法還沒(méi)有顯示wifi的話,你可以試試擦除flash,擦除flash的方法請(qǐng)參考:http://bbs.eeworld.com.cn/thread-497588-1-1.html。在這里我就不詳述了,擦完大概是下圖的樣子,然后重新按照上面的步驟燒flash就可以了。
3、用arduino上傳web到esp8266
到arduino官網(wǎng)下載適合你自己系統(tǒng)的軟件:https://www.arduino.cc/en/Main/Software
web源碼:http://pan.baidu.com/s/1miywNT
web源碼上傳工具:http://pan.baidu.com/s/1o8cEc7
我的是Windows系統(tǒng),arduino版本是1.8.4,安裝完后打開(kāi)工具——開(kāi)發(fā)板——開(kāi)發(fā)板管理器,此時(shí)會(huì)自動(dòng)更新,過(guò)個(gè)數(shù)分鐘更新完畢后(當(dāng)然,如果用外網(wǎng)的話可能幾秒鐘就能解決),搜索eps8266,選擇第二個(gè),版本選2.2.0,然后安裝。
將上面解壓后的web源碼上傳工具的tools放到Arduino根目錄里合并,然后返回以下界面,點(diǎn)擊文件——新建,新建一個(gè)項(xiàng)目,將里面的代碼清空,然后點(diǎn)擊文件——保存,將項(xiàng)目保存到一個(gè)你能找到的位置,點(diǎn)擊工具——esp8266 sketch data upload,會(huì)出現(xiàn)以下的提示,選擇No,會(huì)發(fā)現(xiàn)新建的項(xiàng)目中多出來(lái)一個(gè)data文件夾,里面是空的,然后將上面下載的web源碼\data里面的三個(gè)文件復(fù)制到這個(gè)文件夾里面。
然后再返回arduino,點(diǎn)擊工具,開(kāi)發(fā)板按照自己買(mǎi)的選擇,端口選擇自己的端口,其他設(shè)置如下圖紅框里面的。
設(shè)置完后點(diǎn)擊esp8266 sketch data upload,這時(shí)不會(huì)出現(xiàn)提醒,開(kāi)始上傳web頁(yè)面,等個(gè)1分鐘左右esp8266上的藍(lán)燈不閃爍了就表示上傳完了。
然后電腦連接HH的wifi,瀏覽器輸入192.168.1.1/backdoor.html就能進(jìn)入web頁(yè)面了,如下圖,路由器型號(hào)選擇通用型,然后輸入你測(cè)試的wifi編號(hào),點(diǎn)確定,電腦提示SSID偽造成功,手機(jī)就會(huì)發(fā)現(xiàn)出現(xiàn)了個(gè)和你測(cè)試的wifi一樣的沒(méi)有加密的wifi,原來(lái)的HH會(huì)不見(jiàn)了,8266的藍(lán)燈常亮,手機(jī)連接那個(gè)wifi后過(guò)幾秒會(huì)自動(dòng)彈出路由器升級(jí)的頁(yè)面,然后輸入管理員密碼,點(diǎn)擊開(kāi)始升級(jí),此時(shí)你的esp8266會(huì)將管理員密碼保存,升級(jí)完后,8266的燈就會(huì)滅掉。
電腦重新連接HH,進(jìn)入web頁(yè)面后管理員密碼會(huì)在下面的紅框這一塊顯示,這時(shí),就表示獲取密碼成功了。
ESP8266設(shè)置熱點(diǎn)步驟
將ESP8266設(shè)置為一個(gè)熱點(diǎn),可供其他設(shè)備連接并交換數(shù)據(jù),主要使用的函數(shù):WiFi.softAP(ssid, password, channel, hidden)。
參數(shù)說(shuō)明:
ssid:Wifi熱點(diǎn)名稱(chēng),支持最大63個(gè)英文字符;
password:密碼設(shè)置,可選參數(shù),也就是可以沒(méi)有密碼,如果設(shè)定為WPA2-PSK;
channel:信道設(shè)置,可選參數(shù),1-13,沒(méi)有填寫(xiě)則默認(rèn)為1;
hidden:是否隱藏SSID,可選參數(shù),如果設(shè)置為true則隱藏。
ESP8266開(kāi)啟的默認(rèn)IP地址為192.168.4.1,可以使用softAPConfig (local_ip, gateway, subnet) 函數(shù)進(jìn)行修改。
參數(shù)說(shuō)明:
local_ip:軟熱點(diǎn)的地址;
gateway:網(wǎng)關(guān)地址;
subnet:子網(wǎng)掩碼。
程序流程:
1、連接NodeMCU板子到USB接口,打開(kāi)Arduino IDE編輯器界面,選擇好開(kāi)發(fā)板型號(hào)和串口號(hào)。
2、在Arduino IDE的編輯器界面,開(kāi)始部分添加頭文件。
[cpp] view plain copy#include 《ESP8266WiFi.h》
3、聲明各IP地址。
[cpp] view plain copyIPAddress local_IP(192,168,4,4);
IPAddress gateway(192,168,4,1);
IPAddress subnet(255,255,255,0);
4、配置軟AP參數(shù)。
[cpp] view plain copyWiFi.softAPConfig(local_IP, gateway, subnet);
5、啟動(dòng)AP模式。
[cpp] view plain copyWiFi.softAP(“SoftAP001”,“123456789”);
6、獲取IP地址。
[cpp] view plain copySerial.print(“Soft-AP IP address = ”);
Serial.println(WiFi.softAPIP());
下載完成后,在手機(jī)或筆記本上Wifi可以搜到設(shè)置的AP。
整體代碼如下:
[cpp] view plain copy#include 《ESP8266WiFi.h》
IPAddress local_IP(192, 168, 4, 4);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
WiFi.softAPConfig(local_IP, gateway, subnet);
WiFi.softAP(“SoftAP001”, “123456789”);
Serial.print(“Soft-AP IP address = ”);
Serial.println(WiFi.softAPIP());
}
void loop() {
// put your main code here, to run repeatedly:
}
-
WIFI
+關(guān)注
關(guān)注
81文章
5280瀏覽量
203080 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
44753
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論