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