乐鑫技术交流
直播中

张燕

7年用户 1342经验值
私信 关注
[问答]

ESP32 ap转ethernet, 修改默认169.254.xx.xx网段失败怎么解决?

问题描述:(在ap2eth示例基础上修改, 路径 esp-idfexamplesetherneteth2ap )
1. 单独使用无线AP,关闭DHCP之后能够成功修改本地IP和网关,连接wifi设备之后分配的IP也是新网段
2. 同时启用AP+ ethernet,调用esp_netif_set_ip_info()修改本地IP和网关。通过esp_netif_get_ip_info()查看本地ip和网关修改成功。
但是PC和wifi设备分配到的IP仍然是169.254.xx.xx

回帖(1)

陈秀英

2024-6-24 16:43:00
要解决这个问题,我们需要按照以下步骤操作:

1. 首先,确保您已经正确配置了ESP32的AP和Ethernet接口。在`main.c`文件中,检查`esp_eth_init()`和`esp_wifi_init()`函数是否已被正确调用。

2. 在`app_main()`函数中,确保您已经正确设置了AP和Ethernet的配置。例如:

```c
esp_netif_create_default_wifi_ap();
esp_netif_create_default_eth();
```

3. 在设置AP和Ethernet的IP地址之前,确保它们已经初始化。您可以使用以下代码来初始化它们:

```c
esp_netif_init();
```

4. 接下来,使用`esp_netif_set_ip_info()`函数设置AP和Ethernet的IP地址。确保您为它们设置了正确的IP地址、子网掩码和网关。例如:

```c
esp_netif_ip_info_t ip;
ip.ip.addr = ipaddr_addr("192.168.4.1");
ip.ip.addr = ipaddr_addr("255.255.255.0");
ip.gw.addr = ipaddr_addr("192.168.4.1");
esp_netif_set_ip_info(esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"), &ip);
esp_netif_set_ip_info(esp_netif_get_handle_from_ifkey("ETH_DEF"), &ip);
```

5. 启用DHCP服务器。在AP模式下,您可以使用`esp_netif_dhcps_start()`函数来启动DHCP服务器。例如:

```c
esp_netif_dhcps_start(esp_netif_get_handle_from_ifkey("WIFI_AP_DEF"));
```

6. 确保您的PC和WiFi设备连接到了ESP32的AP。检查它们的IP地址是否在您设置的新网段中。

7. 如果问题仍然存在,您可以尝试在ESP32上使用`esp_wifi_set_mode()`函数来设置WiFi模式。例如:

```c
esp_wifi_set_mode(WIFI_MODE_APSTA);
```

8. 最后,检查您的代码中是否有任何错误或遗漏。确保您已经按照ESP-IDF的文档正确配置了AP和Ethernet。

通过以上步骤,您应该能够解决ESP32 AP转Ethernet时修改默认169.254.xx.xx网段失败的问题。如果问题仍然存在,请检查您的硬件连接和配置,确保一切正常。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分