有哪位专家设计过用NodeMCU-esp8266的无线网络中继器设计

遇到一些程序设计的问题,用esp8266设计的接入点MyAP,连接以后没有网络,怎样设计一个代码建立MyAP与外部的wifi通信连接,使得MyAP有网络,可以正常上网。

该回答引用GPT与博主@晓码自在合作编写:

从您的描述,此问题是ESP8266创建的AP模式wifi无法访问外网导致的。要解决此问题,您需要:

  1. ESP8266同时连接一个外部wifi热点,以获取外网访问。代码如下:
c
// 扫描外部wifi
WiFi.mode(WIFI_STA);    
WiFi.scanNetworks();   

// 连接外部wifi
WiFi.begin("ssid", "password");  

// 检查是否连接成功
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
} 

  1. ESP8266创建AP模式wifi,但“网络模式”选择为“混合AP+STA模式”。这会将STA模式得到的网络连接共享到AP模式。
c
// 创建AP
WiFi.softAP("MyAP");   

// 选择混合AP+STA模式   
WiFi.mode(WIFI_AP_STA);

  1. 在混合模式下,ESP8266的STA模式默认会启用“网桥”功能,实现内外网络互通。
  2. AP模式连接的设备就可以通过ESP8266访问外网,实现无线上网功能。
    一个完整的代码示例如下:
c
#include <ESP8266WiFi.h>

void setup() {
  // 连接外部wifi    
  WiFi.begin("ssid", "password");    
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  }
  
  // 创建AP
  WiFi.softAP("MyAP");    
  
  // 选择混合AP+STA模式
  WiFi.mode(WIFI_AP_STA);  
}

void loop() {
}

以上就是使用ESP8266创建AP模式wifi并实现外网访问的方法。