ESP32 作为 Wifi 中继器/扩展器

问题描述 投票:0回答:1

尝试使用 esp32 板制作 wifi 中继器/扩展器

我在 esp8266 上尝试了同样的方法,效果很好

但是我在理解 esp32 时遇到了问题

我在官方arduino示例中找到了esp8266代码

即:

// NAPT example released to public domain
#define STASSID "mynetwork"
#define STAPSK "mynetworkpassword"
#include \<ESP8266WiFi.h\>
#include \<lwip/napt.h\>
#include \<lwip/dns.h\>
#define NAPT 1000
#define NAPT_PORT 10


void setup() {
    Serial.begin(115200);
    Serial.printf("\\n\\nNAPT Range extender\\n");

    WiFi.mode(WIFI_STA);
    WiFi.begin(STASSID, STAPSK);
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print('.');
        delay(500);
    }

    Serial.printf("\\nSTA: %s (dns: %s / %s)\\n", WiFi.localIP().toString().c_str(), WiFi.dnsIP(0).toString().c_str(), WiFi.dnsIP(1).toString().c_str());


    auto& server = WiFi.softAPDhcpServer();
    server.setDns(WiFi.dnsIP(0));
    WiFi.softAPConfig(IPAddress(172, 217, 28, 254), IPAddress(172, 217, 28, 254), IPAddress(255, 255, 255, 0));
    WiFi.softAP(STASSID "extender", STAPSK);
    Serial.printf("AP: %s\\n", WiFi.softAPIP().toString().c_str());

    err_t ret = ip_napt_init(NAPT, NAPT_PORT);
    Serial.printf("ip_napt_init(%d,%d): ret=%d (OK=%d)\\n", NAPT, NAPT_PORT, (int)ret, (int)ERR_OK);
    if (ret == ERR_OK) {
        ret = ip_napt_enable_no(SOFTAP_IF, 1);
        Serial.printf("ip_napt_enable_no(SOFTAP_IF): ret=%d (OK=%d)\\n", (int)ret, (int)ERR_OK);

        if (ret == ERR_OK) {
            Serial.printf("WiFi Network '%s' with same password is now NATed behind '%s'\\n", STASSID "extender", STASSID);
        }
    }

    if (ret != ERR_OK) {
        Serial.printf("NAPT initialization failed\\n");
    }
}

void loop() {}

但是我无法为 esp32 获得相同的结果

负责网络共享的主要是“NAT” 同样不适用于 esp32

但是我找到了一个关于 napt 的仓库esp32 napt 扩展器 但似乎需要更改 esp idf 的默认配置文件,而且我没有使用 espressif IDF 的经验,尝试更改文件会导致多个错误

如果您知道如何在 Arduino ide 中访问相同的内容,请告诉我,我将不胜感激。

arduino esp32 android-wifi
1个回答
0
投票

您只需要为 ESP32 WiFi 使用不同的库 - 其余的应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.