ESP8266 WIFI連接學習

ESP8266 WIFI 連接指定WiFi SSID/password方式):?

入口函數(shù):user_init();

思路:1、等系統(tǒng)初始化完成,掃描附近的2.4G信道:

? ??????void ?to_scan(void) { wifi_station_scan(NULL,scan_done); } ?//調(diào)用wifi_station_scan()來掃描,在scan_done(void *arg, STATUS status)里給出掃描結果。

????????void ?user_init(void) { wifi_set_opmode(STATION_MODE); system_init_done_cb(to_scan); ?} ?//工作模式必須包含STA模式,SOFTAP模式不能說掃描。調(diào)用system_init_done_cb來初始化,初始化以后進行to_scan()。

2、使用scan_done()檢查掃描結果,要么可以列出掃描到的WiFi,要么也可以指定SSID進行連接。

static void ICACHE_FLASH_ATTR scan_done(void *arg, STATUS status) {

????if (status == OK) { ? ? //列出掃描到的WiFi,可以不用。也可以按特定SSID掃描。

????????struct bss_info *bss_link = (struct bss_info *)arg;

????????bss_link = bss_link->next.stqe_next;//ignore first

????????while (bss_link != NULL){

????????????os_memset(ssid, 0, 33);//填充

????????????if (os_strlen(bss_link->ssid) <= 32){

????????????????os_memcpy(ssid, bss_link->ssid, os_strlen(bss_link->ssid));//拷貝

? ? ? ? ? ? } else{

????????????????????os_memcpy(ssid, bss_link->ssid, 32);

? ? ? ? ? ?}

????????os_sprintf(temp,"+CWLAP:(%d,\"%s\",%d,\""MACSTR"\",%d)\r\n",

????????bss_link->authmode, ssid, bss_link->rssi,

????????MAC2STR(bss_link->bssid),bss_link->channel);

????????uart0_sendStr(temp);

????????bss_link = bss_link->next.stqe_next;

????????}

//指定SSID進行連接:

os_memcpy(&stationConf.ssid, "NATUREFUTURE-ONE", 32);

os_memcpy(&stationConf.password, "nafuture", 64);

wifi_station_set_config(&stationConf);

wifi_station_connect();

//開始連接后,過2秒查看連接結果,是否得到了IP.

os_timer_disarm(&connect_timer);

os_timer_setfn(&connect_timer, wifi_checkout, NULL);

os_timer_arm(&connect_timer, 2000, NULL);

}

3、檢查是否得到IP:

void ICACHE_FLASH_ATTR ?wifi_check(void *arg){

static uint8 count=0;

uint8 status;

os_timer_disarm(&connect_timer); //關閉定時器,專心處理結果

count++; //延時

status = wifi_station_get_connect_status(); //查詢WiFi連接結果

if(status == STATION_GOT_IP){ //得到IP地址

????os_printf("wifi connect.\r\n");

????return;

}else{

????if(count > 7){ //延時7次內(nèi)都沒有得到IP地址

????os_printf("wifi connect fail.\r\n");

????return;}

????}

os_timer_arm(&connect_timer,2000,NULL);

}

********參考官方文檔ESP8266 NONOS SDK和其他前輩的結果,作自我學習記錄之用。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容