全面剖析ESP32创建Wi-Fi热点的过程
零. 聲明
本專欄文章我們會以連載的方式持續更新,本專欄計劃更新內容如下:
第一篇:ESP-IDF基本介紹,主要會涉及模組,芯片,開發板的介紹,環境搭建,程序編譯下載,啟動流程等一些基本的操作,讓你對ESP-IDF開發有一個總體的認識,比我們后續學習打下基礎!
第二篇:ESP32-IDF外設驅動介紹,主要會根據esp-idf現有的driver,提供各個外設的驅動,比如LED,OLED,SPI LCD,TOUCH,紅外,Codec ic等等,在這一篇中,我們不僅僅來做外設驅動,還會對常用的外設總線做一個介紹,讓大家知其然又知其所以然!
第三篇:目前比較火熱的GUI LVGL介紹,主要會設計LVGL7.1,LVGL8的移植介紹,并且也會介紹各個組件,知道原理后,最后,我們會推出一款組態軟件來構建我們的GUI,來提升我們的效率!
第四篇:ESP32-藍牙,熟悉我的,應該都知道,我即使從事藍牙協議棧的開發的,所以這個是我們獨有的優勢,在這一篇章,我們會提供不僅僅是藍牙應用方法的知識,也會應用結合藍牙底層協議棧的理論,讓你徹底從上到下打通藍牙任督二脈!
第五篇:Wi-Fi介紹,熟悉我的,應該也知道,我們也做過一款sdio wifi的驅動教程板子,所以在wifi這方面我們也是有獨有的優勢,在這一篇章,我們同樣不僅僅提供Wi-Fi應用方面的知識,也會結合底層理論,讓你對Wi-Fi有一個清晰的認知!
第六篇:FreeRTOS介紹,主要介紹下FreeRTOS各個功能(任務管理/消息隊列/信號量/互斥量/事件/軟件定時器/任務通知/內存管理/中斷管理等)的使用以及運作機制。
第七篇:Arduino介紹,主要介紹ESP32 Arduino的基本操作(環境搭建,燒錄,下載等開發流程),以及介紹下基于Arduino的外設,藍牙,wifi的使用。
第八篇:Demo,此篇章是融會貫通以上章節,做一些綜合性的demo,讓你鞏固以上篇章的同時,還能學到實際項目!!
另外,我們的教程包括但是不局限于以上篇章,為了給你一個更好的導航,以下信息尤其重要,請詳細查看!!
------------------------------------------------------------------------------------------------------------------------------------------
購買開發板(點擊我)
文檔目錄(點擊我)
Github代碼倉庫(點擊我)
藍牙交流扣扣群:539357317
微信公眾號↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
------------------------------------------------------------------------------------------------------------------------------------------
一.Wi-Fi station的使用步驟
下圖為 AP 模式下的宏觀場景,其中包含不同階段的具體描述:
這個在樂鑫的官網沒有詳細描述,但是大致跟station差不多,我們直接來看代碼好了,整個比較簡單!
二.Wi-Fi AP的代碼
/* WiFi softAP ExampleThis example code is in the Public Domain (or CC0 licensed, at your option.)Unless required by applicable law or agreed to in writing, thissoftware is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES ORCONDITIONS OF ANY KIND, either express or implied. */ #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_system.h" #include "esp_wifi.h" #include "esp_event.h" #include "esp_log.h" #include "nvs_flash.h"#include "lwip/err.h" #include "lwip/sys.h"/* The examples use WiFi configuration that you can set via project configuration menu.If you'd rather not, just change the below entries to strings withthe config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid" */ #define EXAMPLE_ESP_WIFI_SSID "wireless link ap" #define EXAMPLE_ESP_WIFI_PASS "12345678" #define EXAMPLE_ESP_WIFI_CHANNEL 6 #define EXAMPLE_MAX_STA_CONN 16static const char *TAG = "wifi softAP";static void wifi_event_handler(void* arg, esp_event_base_t event_base,int32_t event_id, void* event_data) {if (event_id == WIFI_EVENT_AP_STACONNECTED) {wifi_event_ap_staconnected_t* event = (wifi_event_ap_staconnected_t*) event_data;ESP_LOGI(TAG, "station "MACSTR" join, AID=%d",MAC2STR(event->mac), event->aid);} else if (event_id == WIFI_EVENT_AP_STADISCONNECTED) {wifi_event_ap_stadisconnected_t* event = (wifi_event_ap_stadisconnected_t*) event_data;ESP_LOGI(TAG, "station "MACSTR" leave, AID=%d",MAC2STR(event->mac), event->aid);} }void wifi_init_softap(void) {ESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());esp_netif_create_default_wifi_ap();wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();ESP_ERROR_CHECK(esp_wifi_init(&cfg));ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT,ESP_EVENT_ANY_ID,&wifi_event_handler,NULL,NULL));wifi_config_t wifi_config = {.ap = {.ssid = EXAMPLE_ESP_WIFI_SSID,.ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID),.channel = EXAMPLE_ESP_WIFI_CHANNEL,.password = EXAMPLE_ESP_WIFI_PASS,.max_connection = EXAMPLE_MAX_STA_CONN,.authmode = WIFI_AUTH_WPA_WPA2_PSK},};if (strlen(EXAMPLE_ESP_WIFI_PASS) == 0) {wifi_config.ap.authmode = WIFI_AUTH_OPEN;}ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));ESP_ERROR_CHECK(esp_wifi_start());ESP_LOGI(TAG, "wifi_init_softap finished. SSID:%s password:%s channel:%d",EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS, EXAMPLE_ESP_WIFI_CHANNEL); }void app_main(void) {//Initialize NVSesp_err_t ret = nvs_flash_init();if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {ESP_ERROR_CHECK(nvs_flash_erase());ret = nvs_flash_init();}ESP_ERROR_CHECK(ret);ESP_LOGI(TAG, "ESP_WIFI_MODE_AP");wifi_init_softap(); }三.演示效果
總結
以上是生活随笔為你收集整理的全面剖析ESP32创建Wi-Fi热点的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类设计者的核查表(转自C++rumina
- 下一篇: 无限宝电脑连接不上服务器,无限宝客户端登