当前位置:网站首页>ESP32学习笔记【WiFi网络篇】-01AP&STA
ESP32学习笔记【WiFi网络篇】-01AP&STA
2022-06-09 08:45:00 【Lee1989琦】
一、AP
概述:AP 是 (Wireless) AccessPoint 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似TPLINK_XXX 的名字(SSID)。ESP32 创建的 AP 热点,最多可以被 4 个 STA 设备连接,我们的手机和笔记本电脑均可连接到创建的AP 热点。
二、编程流程
结合官方API查阅
- 初始化 TCP/IP 协议栈使用 wifi、有线、网络编程前必须先调用这个函数进行初始化。
tcpip_adapter_init();

#ifdef ESP32_STATIC_IP
ESP_ERROR_CHECK(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_AP));
tcpip_adapter_ip_info_t ipInfo;
inet_pton(AF_INET,DEVICE_IP,&ipInfo.ip); //ip地址
inet_pton(AF_INET,DEVICE_GW,&ipInfo.gw); //网关
inet_pton(AF_INET,DEVICE_NETMASK,&ipInfo.netmask);//子网淹码
ESP_ERROR_CHECK(tcpip_adapter_set_ip_info
(TCPIP_ADAPTER_IF_AP,&ipInfo));
tcpip_adapter_dhcps_start(TCPIP_ADAPTER_IF_AP)
;#endif
- 设置wifi事件回调函数,这部分没开源,知道设置了创建任务,会自动循环检测回调函数事件,每个事件对应处理在回调函数中编写,每个事件又会返回一个值作为函数返回值,整个函数是作为形参传递给wifi事件回调函数
`ESP_ERROR_CHECK
(esp_event_loop_init(event_handler, NULL));
//设置wifi事件回调函数
- 初始化AP
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));//wifi默认初始化
wifi_config_t wifi_config = {
.ap = {
.ssid = DEFAULT_SSID,
.password = DEFAULT_PWD,
.ssid_len = 0,
.max_connection = 1,//最多只能被4个station同时连接
.authmode = WIFI_AUTH_WPA_WPA2_PSK, },
};
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));//设置wifi工作模式为AP
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_AP,
&wifi_config));//配置AP参数
ESP_ERROR_CHECK(esp_wifi_start()); //wifi启动
整个流程完成了AP初始化
然后编写回调函数
static esp_err_t event_handler(void *ctx, system_event_t *event){
switch (event->event_id)
{
case SYSTEM_EVENT_AP_START://AP启动 {
tcpip_adapter_ip_info_t ipInfo;
printf("\nwifi_softap_start\n");
//修改设备名字,可以不写
ESP_ERROR_CHECK(tcpip_adapter_set_hostname(TCPIP_ADAPTER_IF_AP, "yueweidianzi"));
ESP_ERROR_CHECK(tcpip_adapter_get_ip_info(TCPIP_ADAPTER_IF_AP,&ipInfo));
//取出设备的IP,网关和掩码 s_ip_addr=ipInfo.ip;
s_gw_addr=ipInfo.gw;
s_netmask_addr=ipInfo.netmask; //显示
lcd_display(2); }
break;
case SYSTEM_EVENT_AP_STACONNECTED://有设备连接
printf("station:"MACSTR" join, AID=%d.\r\n",
MAC2STR(event->event_info.sta_connected.mac),
event->event_info.sta_connected.aid);
break;
case SYSTEM_EVENT_AP_STADISCONNECTED://连接的设备断开
printf("station:"MACSTR"leave, AID=%d.\r\n",
MAC2STR(event->event_info.sta_disconnected.mac), event->event_info.sta_disconnected.aid);
break;
default:
break;
}
return ESP_OK;
}
边栏推荐
- Domain Driven Design (DDD)
- 【程序人生】互联网岗位分工;互联网开发流程;职责分工
- JS realizes three-level linkage
- Business judgment logic code if statement
- 修改pe程序入口点
- 远程预付费管理系统帮助物业解决收费难统计难问题
- SQL:锦标赛优胜者
- Modifier le tableau des activités de marché
- Configuring the environment for RMAN backups_ Configure backup retention policy
- Self made compiler learning 1: use of CB compiler
猜你喜欢
随机推荐
Update and delete operations in Clickhouse of data warehouse series
如何查看手机绑定过的网站或者APP:注销手机号之前你必须要做的——换绑所有旧手机号绑定过的网站或者APP
华为机试,HJ6质数因子
Modifier le tableau des activités de marché
LeetCode 第 295 场周赛
汇编_基础概念
RMAN backup database_ Specify backup output options
Energy management and control system for industrial enterprises helps enterprises strengthen energy management and improve equipment operation efficiency
Alibaba cloud IOT
web知识点123
NetCore框架WTM的分表分库实现
腾讯云宝塔搭建网站注意事项
Virtual machine installation and configuration
SQL: Championship winner
Shared network port settings for Dell Idrac express version
修改pe程序入口点
Nodejs使用Net模块创建TCP服务器和客户端
JS realizes three-level linkage
Sql: find duplicate email addresses
常用windwos api









