如何通过esp32 ap模式连接互联网

How to connect internet via esp32 ap mode

大家。

我现在有问题...

我想做一个类似ESP32 AP + STA模式的东西

我的客户端是iPAD并且iPAD(STA)连接到ESP32(AP + STA模式)

还有我的 ESP32(STA) 连接到我的路由器。

根据arduino的串行日志,我的esp32得到了一个ip。

正好两个ip。 AP ip 和 STA ip.

我从路由器通过 icmp 发送了一个 ping。

ipTime 路由器成功向 esp32(STA) 发送 ping。

对不起我愚蠢的英语..无论如何.

我想做一个这样的

iPAD <-> ESP32(AP+STA) <-> 路由器(互联网)

ESP32 工作在 AP 和 STA 两种模式。

iPAD 是 ESP32 站,我想通过 ESP32 使用互联网

iPAD -> ESP32 -> 路由器(互联网)

有人给我解决方案吗?

下面是我的代码。

#include <WiFi.h>

#define LOG                                 Serial

#define AP_SSID                             "ESP32_AP_STA"
#define AP_PASS                             "123456789a"

#define STA_SSID                            "jeong"
#define STA_PASS                            "jong1992"

IPAddress ip(192, 168, 0, 50);
IPAddress gateway(192, 168, 0, 1);
IPAddress subnet(255, 255, 255, 0);

WiFiServer TCPServer(1234, ip);
WiFiClient TCPClient;

void setup(void)
{
    LOG.begin(115200);

    while(!LOG)
    {
        ;
    }

    WiFi.disconnect(true);
    // WiFi.onEvent(WiFiEvent);
    WiFi.mode(WIFI_AP_STA);
    WiFi.softAPConfig(ip, gateway, subnet);
    WiFi.softAP(AP_SSID, AP_PASS);
    delay(100);

    TCPServer.begin();
    TCPServer.setNoDelay(true);

    WiFi.begin(STA_SSID, STA_PASS);
    WiFi.setHostname(AP_SSID);
    
    while(WiFi.status() != WL_CONNECTED)
    {
        delay(200);
        LOG.print("+");
    }

    LOG.print(STA_SSID);
    LOG.print(" : ");
    LOG.println(WiFi.localIP());

    LOG.print(AP_SSID);
    LOG.print(" : ");
    LOG.println(WiFi.softAPIP());
}

void loop(void)
{
    
}

您可以实现具有 NAT 功能的路由器。由于这很重要,我将只向您推荐搜索“esp32 nat router”时弹出的第一个项目:https://github.com/martin-ger/esp32_nat_router