esp32s3中设置静态IP地址

将esp32s3单片机作为AP热点,需要配置网关和静态IP地址,系统默认是192.168.4.1,

为了实现自定义可以如下配置,并且根据MAC地址自定义SSID。

static void wifi_init_softap(void)
{
	
    ESP_ERROR_CHECK(esp_netif_init());
    ESP_ERROR_CHECK(esp_event_loop_create_default());
    esp_netif_t*mynetif = esp_netif_create_default_wifi_ap();


    /**
     * 设置本地IP和网关
     * */
    esp_netif_ip_info_t ipInfo;

    IP4_ADDR(&ipInfo.ip, 192,168,100,1);
	IP4_ADDR(&ipInfo.gw, 192,168,100,1);
	IP4_ADDR(&ipInfo.netmask, 255,255,255,0);

	esp_netif_dhcps_stop(mynetif);
	esp_netif_set_ip_info(mynetif, &ipInfo);
	esp_netif_dhcps_start(mynetif);


    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    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));


    //这个是默认mac base,比如softap是+1等等.
    //本地无线网卡地址
    uint8_t local_mac[6];
    //esp_efuse_mac_get_default(mac);
    esp_read_mac(local_mac,ESP_MAC_WIFI_SOFTAP);

    //for(int i=0;i<sizeof(mac);i++)
    //    printf("%2X ",mac[i]);
    //printf("\n");
    uint8_t buf[32] = {0};

    sprintf((char*)buf,"%s-%02X%02X%02X",EXAMPLE_ESP_WIFI_SSID_PREFIX,local_mac[3],local_mac[4],local_mac[5]);

    wifi_config_t wifi_config = {
        .ap = {
            .ssid = EXAMPLE_ESP_WIFI_SSID_PREFIX,//此处只能常量
            .ssid_len = strlen(EXAMPLE_ESP_WIFI_SSID_PREFIX),
            .channel = EXAMPLE_ESP_WIFI_CHANNEL,
            .password = EXAMPLE_ESP_WIFI_PASS,
            .max_connection = EXAMPLE_MAX_STA_CONN,
#ifdef CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT
            .authmode = WIFI_AUTH_WPA3_PSK,
            .sae_pwe_h2e = WPA3_SAE_PWE_BOTH,
#else /* CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT */
            .authmode = WIFI_AUTH_WPA2_PSK,
#endif
            .pmf_cfg = {
                    .required = true,
            },
        },
    };
//wifi_config.ap.pairwise_cipher
    wifi_config.ap.ssid_len = strlen((char*)buf);
    memcpy(wifi_config.ap.ssid,buf,wifi_config.ap.ssid_len);


    wifi_config.ap.channel = sta_wifi_get_best_channel();


    if (strlen(EXAMPLE_ESP_WIFI_PASS) == 0) {
        wifi_config.ap.authmode = WIFI_AUTH_OPEN;
    }

    ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_AP));
    ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_AP, &wifi_config));

    //禁止modem休眠,降低延迟
    ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE));

    ESP_ERROR_CHECK(esp_wifi_start());

    ESP_LOGI(TAG, "wifi_init_softap finished. SSID:%s password:%s channel:%d",
             buf, EXAMPLE_ESP_WIFI_PASS, wifi_config.ap.channel);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值