2个没有路由器的ESP8266 WiFi模块之间使用AT命令进行通信

Communication between 2 ESP8266 WiFi modules without router using AT commands

我正在尝试进行基于 TCP 的通信,以从一个 ESP8266 模块发送一条简单消息 "Hello" 到另一个使用 this document。我使用 2 USB to TTL 作为硬件,使用 Realterm 作为串行终端。 当 ESP8266 模块连接到路由器时,我可以这样做,发送如下 AT 命令,

设置服务器:

AT+CWJAP="AccessPointName","Password"//Join to your WiFi network
AT+CIPMUX=1//0 for single connection 1 for multiple connection.
AT+CIPSERVER=1,1336//Set as Server. 1 to open Server mode(0 to close). 1336 is port.
AT+CIFSR//Get IP address (STAIP 192.168.43.151)

设置客户端:

AT+CWJAP="AccessPointName","Password"
AT+CIPMUX=1
AT+CIPSTART=1,"TCP","192.168.43.151",1336//Set up TCP or UDP connection, the 4 parameters are id, type, adress and port.     
AT+CIPSEND=1,7// Channel and number of bytes to send
//After issuing all previous command you will receive "OK". But afterAT+CIPSENDyou will receive a ">" as response.

Hello//send your Data

我想在没有路由器的情况下将两个 ESP8266 相互连接。 所以我使用了这些 AT 命令:

服务器命令:

AT+CIPMUX=1
AT+CWMODE=3//set the module as a client and also an access point.
AT+CIPSERVER=1,1336
AT+CIFSR //Getting 2 ip address (APIP 192.168.4.1 and STAIP 0.0.0.0).

客户端命令:

AT+CIPMUX=1
AT+CWMODE=3
AT+CWJAP="ESP1 SSID", "ESP1 PWD" //Connect to server
AT+CIPSTART=1,"TCP","0.0.0.0",1336 // I also tried APIP 192.168.4.1. 

但是当我发送 CIPSTART 命令时,我收到 ERROR 消息。 出了什么问题?我该怎么办?

在路由条目的上下文中,0.0.0.0 表示默认路由。在服务器上下文中,0.0.0.0 表示本地计算机上的所有 IPv4 地址。如果主机有两个 IP 地址,192.168.1.1 和 10.1.2.1,并且主机上的服务器 运行 侦听 0.0.0.0,则可以通过这两个 IP 访问它。这种类型的通信也称为 WiFi P2P 或 Wifi direct。它应该与您的命令一起正常工作!如果问题仍然存在,请尝试使用不同的模块。

我更改了模块,现在可以使用了。

服务器命令:

AT+CWMODE=3
AT+CIPMUX=1
AT+CIPSERVER=1,222
AT+CIFSR
/*the server response to CIFSR is:
+CIFSR:APIP,"192.168.7.7"                     
+CIFSR:APMAC,"a2:20:a6:10:50:2c"                                              
+CIFSR:STAIP,"0.0.0.0"                                                         
+CIFSR:STAMAC,"a0:20:a6:10:50:2c"*/

客户端命令:

AT+CWMODE=3
AT+CWJAP="SERVER_SSID","SERVER_PASS"
AT+CIPMUX=1
AT+CIPSTART=2,"TCP","192.168.7.7",222
AT+CIPSEND=2,7
HELLO