乐鑫技术交流
直播中

杜喜喜

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

ESP826如何运行AP TCP服务器?

我正在开发一个室外远程控制系统,带有来自ESP8266 AP的专用WLAN。带有 TCP 客户端的平板电脑应连接到它,以便在 ESP 上设置一些 GPIO。根据我的理解,ESP 上的 TCP 服务器应该从平板电脑客户端获取命令进行进一步处理。不涉及额外的路由器。
现在,AP工作正常,平板电脑可以登录WLAN并获得正确的IP地址。但是客户端与服务器的连接将被拒绝。所以我的问题是:
ESP 应该具有 SOFTAP 或 STAtiONAP 的哪种模式?
TCP服务器是必要的还是其他解决方案可行?
TCP服务器应该有哪个IP地址,我尝试了AP的地址和不同的地址,但没有成功?

我使用 None-OS SDK 2.0。


回帖(1)

caokyo

2024-7-9 16:02:11
要在ESP8266上运行AP TCP服务器,您需要按照以下步骤操作:

1. 选择正确的模式:对于您的需求,您应该使用ESP8266的SOFTAP模式。这将允许您创建一个独立的WLAN,而无需连接到其他路由器。

2. 初始化ESP8266:首先,您需要初始化ESP8266并设置AP模式。以下是一个示例代码片段,用于设置ESP8266为AP模式:

```cpp
#include
#include

ESP8266WebServer server(80);

const char *ssid = "YourSSID"; // 设置您的SSID
const char *password = "YourPassword"; // 设置您的密码

void setup() {
  WiFi.softAP(ssid, password); // 设置AP模式
  server.begin(); // 启动Web服务器
}

void loop() {
  server.handleClient(); // 处理客户端请求
}
```

3. 创建TCP服务器:在ESP8266上创建TCP服务器,以便接收来自平板电脑的TCP客户端连接。以下是一个示例代码片段,用于创建TCP服务器:

```cpp
#include
#include
#include
#include

ESP8266WiFiMulti wifiMulti;

WebSocketsServer webSocket = WebSocketsServer(81);

void setup() {
  wifiMulti.addAP("YourSSID", "YourPassword");
  if(wifiMulti.run() == WL_CONNECTED) {
    Serial.println("Connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.softAPIP()); // 获取AP的IP地址
  }
  webSocket.begin();
  webSocket.onMessage([](uint8_t num, WStype_t type, uint8_t * payload, size_t length) {
    // 处理收到的消息
  });
}

void loop() {
  webSocket.loop();
}
```

4. 设置平板电脑的TCP客户端:在平板电脑上创建一个TCP客户端,连接到ESP8266的IP地址。您可以使用任何支持TCP连接的编程语言或库。

5. 通信:一旦平板电脑的TCP客户端连接到ESP8266的TCP服务器,您就可以发送和接收数据。在ESP8266上,您可以在`onMessage`回调函数中处理收到的数据,并根据需要设置GPIO。

总之,您应该使用SOFTAP模式,并创建一个TCP服务器来接收来自平板电脑的TCP客户端连接。ESP8266的IP地址应该是AP的IP地址,您可以在设置AP模式后通过`WiFi.softAPIP()`获取。
举报

更多回帖

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