ESP32学习笔记【WiFi网络篇】-01AP&STA

一、AP

概述:AP 是 (Wireless) AccessPoint 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似TPLINK_XXX 的名字(SSID)。ESP32 创建的 AP 热点,最多可以被 4 个 STA 设备连接,我们的手机和笔记本电脑均可连接到创建的AP 热点。

二、编程流程

结合官方API查阅

  1. 初始化 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
  1. 设置wifi事件回调函数,这部分没开源,知道设置了创建任务,会自动循环检测回调函数事件,每个事件对应处理在回调函数中编写,每个事件又会返回一个值作为函数返回值,整个函数是作为形参传递给wifi事件回调函数
`ESP_ERROR_CHECK
(esp_event_loop_init(event_handler, NULL));
//设置wifi事件回调函数
  1. 初始化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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值