从ESP8266 Arduino连接到我的服务器

3

我有一块Arduino Uno板子和一台用C++编写的服务器。我使用以下代码成功地将ESP8266连接到我的路由器:

#include <SoftwareSerial.h>

SoftwareSerial esp8266(3, 2);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Started");
  // set the data rate for the SoftwareSerial port
  esp8266.begin(115200);
  esp8266.write("AT\r\n");
}

void loop() {
  if (esp8266.available()) {
    Serial.write(esp8266.read());
  }
  if (Serial.available()) {
    esp8266.write(Serial.read());
  }
}

现在,我希望ESP8266作为客户端连接到同一局域网中的服务器(我有服务器IP)。如何使用SoftwareSerial实现?还有其他方法吗?

1个回答

2
您需要发送AT命令来创建HTTP请求。这将连接到192.168.88.35上的端口80的服务器。
// Connect to the server
esp8266.write("AT+CIPSTART=\"TCP\",\"192.168.88.35\",80\r\n"); //make this command: AT+CPISTART="TCP","192.168.88.35",80

//wait a little while for 'Linked'
delay(300);

//This is our HTTP GET Request change to the page and server you want to load.
String cmd = "GET /status.html HTTP/1.0\r\n";
cmd += "Host: 192.168.88.35\r\n\r\n";

//The ESP8266 needs to know the size of the GET request
esp8266.write("AT+CIPSEND=");
esp8266.write(cmd.length());
esp8266.write("\r\n");

esp8266.write(cmd);
esp8266.write("AT+CIPCLOSE\r\n");

这个链接应该会有所帮助,如果您需要更多细节信息的话: http://blog.huntgang.com/2015/01/20/arduino-esp8266-tutorial-web-server-monitor-example/

你好,我在这个网址看到了代码:http://blog.huntgang.com/2015/01/20/arduino-esp8266-tutorial-web-server-monitor-example/ ,但是它每次都连接服务器(在循环函数里),而我只需要连接一次我的服务器……怎么办? - P.Kole
将连接逻辑放在setup()而不是loop()中。在setup()中的代码只会在Arduino启动时运行一次。之后,它会在循环中运行loop()。 - L Bahr
是的,我知道,但一次连接尝试对于esp8266来说不够...它需要很多次尝试...我该如何检测esp是否已连接? - P.Kole
你可以检查AT+CIPSTATUS的返回值。返回状态4表示已断开连接。请查看AT+CIPSTATUS以获取更多信息。 - L Bahr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接