设为首页 加入收藏

TOP

ESP32-两种有趣的wifi连接方式(七)
2023-07-23 13:31:13 】 浏览:330
Tags:ESP32- wifi 连接方
" //待连接的WiFi名称 #if ENABLE_PASSWORD #define EXAMPLE_ESP_WIFI_PASS "123456" //密码不能为空 #endif #define EXAMPLE_MAX_STA_CONN 3 //最大接入数 static const char *TAG = "WIFI_softap"; esp_netif_t *ap_netif; //可以认为是一个soft-ap接口用于后续关闭 extern httpd_handle_t server; SemaphoreHandle_t ap_sem; // softap 关闭信号量 void wifi_softap_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 init_wifi_softap(void) { /* 转向HTTP服务器的警告,因为重定向流量将产生大量的无效请求 */ esp_log_level_set("httpd_uri", ESP_LOG_ERROR); esp_log_level_set("httpd_txrx", ESP_LOG_ERROR); esp_log_level_set("httpd_parse", ESP_LOG_ERROR); // 初始化网络栈 ESP_ERROR_CHECK(esp_netif_init()); // 创建主应用程序所需的默认事件循环 ESP_ERROR_CHECK(esp_event_loop_create_default()); //前面初始化了就不需要再次初始化了 // // 初始化Wi-Fi所需的NVS // ESP_ERROR_CHECK(nvs_flash_init()); // 用默认配置初始化Wi-Fi,包括netif ap_netif = esp_netif_create_default_wifi_ap(); //初始化wifi功能 wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); //注册事件回调函数 ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_softap_event_handler, NULL)); wifi_config_t wifi_ap_config = { .ap = { .ssid = EXAMPLE_ESP_WIFI_SSID, .ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID), #ifdef EXAMPLE_ESP_WIFI_PASS .password = EXAMPLE_ESP_WIFI_PASS, .authmode = WIFI_AUTH_WPA_WPA2_PSK, #else .authmode = WIFI_AUTH_OPEN, #endif .max_connection = EXAMPLE_MAX_STA_CONN, }, }; ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP)); ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP, &wifi_ap_config)); ESP_ERROR_CHECK(esp_wifi_start()); //获取wifi相关信息打印 esp_netif_ip_info_t ip_info; esp_netif_get_ip_info(esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"), &ip_info); char ip_addr[16]; inet_ntoa_r(ip_info.ip.addr, ip_addr, 16); ESP_LOGI(TAG, "Set up softAP with IP: %s", ip_addr); ESP_LOGI(TAG, "wifi_init_softap finished. SSID:'%s' password:'%s'", wifi_ap_config.ap.ssid, wifi_ap_config.ap.password); } void captive_portal_init(void) { ap_sem = xSemaphoreCreateBinary(); //创建信号量 init_wifi_softap(); //初始化wifi-ap模式 server = web_server_start(); //开启http服务 dns_server_start(); //开启DNS服务 }

强制门户认证

/*
 * @Author: tangwc
 * @Date: 2022-11-02 16:40:06
 * @LastEditors: tangwc
 * @LastEditTime: 2022-11-20 22:15:27
 * @Description:
 * @FilePath: \esp32_wifi_link\components\wifi_station\wifi_station.c
 *
 *  Copyright (c) 2022 by tangwc, All Rights Reserved.
 */
#include <string.h>
#include <stdlib.h>

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/event_groups.h&
首页 上一页 4 5 6 7 8 9 10 下一页 尾页 7/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇OpenOCD + DAP-LINK调试ESP32的失.. 下一篇预编译#error的使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目