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

时间:2017-02-27 07:55:31

标签: tcp wifi at-command esp8266

我正在尝试进行基于 TCP 的通信,使用this document从一个 ESP8266 模块向另一个模块发送简单消息“Hello”。我使用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条消息。 出了什么问题?我该怎么办?

2 个答案:

答案 0 :(得分:3)

在路由条目的上下文中,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直接。它应该与您的命令正常工作!如果问题仍然存在,请尝试使用不同的模块。

答案 1 :(得分:0)

我改变了模块并且它现在正在工作。

服务器命令:

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