尝试使用 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 中访问相同的内容,请告诉我,我将不胜感激。
您只需要为 ESP32 WiFi 使用不同的库 - 其余的应该可以正常工作。