桌面小屏幕实战课程: DesktopScreen 12 WiFi AP
飞书文档https://x509p6c8to.feishu.cn/docx/doxcnHiSJiQzVvohPGFv8J0E1ab
源码参考:
/home/kemp/work/esp/esp-idf/examples/wifi/getting_started/softAP
源码下载方式参考:
源码下载方式
AP模式参数设置:
# Wifi AP
CONFIG_ESP_AP_WIFI_SSID="桌面屏幕"
CONFIG_ESP_AP_WIFI_PASSWORD="12345678"
/* 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 CONFIG_ESP_AP_WIFI_SSID
#define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_AP_WIFI_PASSWORD
#define EXAMPLE_ESP_WIFI_CHANNEL CONFIG_ESP_AP_WIFI_CHANNEL
#define EXAMPLE_MAX_STA_CONN CONFIG_ESP_AP_MAX_STA_CONNstatic const char *TAG = "wifi softAP";static uint8_t start_status = 0;//事件回调
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)
{//初始化netif 事件处理模块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();//初始化wifi模块ESP_ERROR_CHECK(esp_wifi_init(&cfg));//注册回调ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, NULL));//设置AP参数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;}//设置AP模式ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));//开启wifiESP_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 ds_wifi_ap_start(void)
{if(start_status == 0){start_status = 1;ESP_LOGI(TAG, "ESP_WIFI_MODE_AP");wifi_init_softap();}else{ESP_LOGI(TAG, "ESP_WIFI_MODE_AP IS STARTING");}
}void ds_wifi_ap_stop(){if(start_status == 1){start_status = 0;ESP_LOGI(TAG, "ESP_WIFI_MODE_AP STOP");ESP_ERROR_CHECK(esp_wifi_stop() );ESP_ERROR_CHECK(esp_wifi_deinit() );}else{ESP_LOGI(TAG, "ESP_WIFI_MODE_AP IS STOPING");}
}