当前位置: 首页 > news >正文

Wi-Fi AP模式入门(基于ESP-IDF)

主要参考资料:
Wi-Fi 库: https://docs.espressif.com/projects/esp-idf/zh_CN/v4.4/esp32s3/api-reference/network/esp_wifi.html
ESP-NETIF: https://docs.espressif.com/projects/esp-idf/zh_CN/v4.4/esp32s3/api-reference/network/esp_netif.html

Wi-Fi 初始化 AP

void wifi_init_softap(void)
{//初始化底层TCP/IP堆栈ESP_ERROR_CHECK(esp_netif_init());ESP_ERROR_CHECK(esp_event_loop_create_default());//初始化代码以及为默认接口(如softAP和station)注册事件处理程序,在两个单独的api中提供,以方便大多数应用程序的简单启动代码:esp_netif_create_default_wifi_ap();wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();//为WiFi驱动分配资源,如WiFi控制结构、RX/TX缓冲区、WiFi NVS结构等。这个WiFi也会启动WiFi任务。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;}//设置Wi-Fi运行模式为station, soft-AP 或者 station+soft-AP,默认模式为station.ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));//根据当前配置启动WiFi,如果模式为WIFI_MODE_AP,则创建soft-ap控制块并启动soft-ap;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);
}

Wi-Fi 事件回调

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);}
}

http://www.mrgr.cn/news/66566.html

相关文章:

  • LabVIEW离心泵性能优化测试系统
  • HTMLCSS:3D 旋转卡片的炫酷动画
  • RHCE selinux 和 防火墙(fireword|iptable)
  • Redis-基本了解
  • 深入理解Spring、SpringMVC、SpringBoot和Spring Cloud的区别与用法
  • 劫持微信聊天记录并分析还原 —— 帐号信息截取(一)
  • Linux编程:DMA增加UDP 数据传输吞吐量并降低延迟
  • 2025 - 全网最牛的生物信息学分析 - 一键式生成DIFF_GSEA_WGCNA_GO_KEGG_DO
  • ESXI 6 主机系统介绍
  • 【error】 react 控制台报错Invalid hook call
  • 前端八股文(三)JS、ES6 持续更新中。。。
  • 【计算机科学】位运算:揭开二进制世界的奥秘
  • GPIO子系统中Controller驱动源码分析
  • 高级 <HarmonyOS主题课>构建华为支付服务的课后习题
  • 成为编程高手 day16
  • Java | Leetcode Java题解之第541题反转字符串II
  • 数据结构算法篇--递归(c语言版)
  • Linux 编程:高实时性场景下的内核线程调度与网络包发送优化
  • Kubernetes 中的存储管理:PV、PVC 与 StorageClass 详解
  • Python批量合并多个PDF
  • Java 运算符和表达式
  • 译码方案译码错误
  • D-FINE:在DETRs模型中将回归任务重新定义为细粒度分布优化
  • C语言 | Leetcode C语言题解之第540题有序数组中的单一元素
  • dom4j实现xml转map,xml转json字符串
  • 前端八股文(二)CSS 持续更新中。。。