Подключиться к моему серверу с ESP8266 Arduino

У меня есть 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? Есть ли другой способ сделать это?


person P.Kole    schedule 12.04.2016    source источник


Ответы (1)


Вы должны отправить ему 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/

person L Bahr    schedule 12.04.2016
comment
Привет, я видел код в: blog.huntgang.com/2015/01/20/ , но он подключается к серверу каждый раз (в функции цикла), но мне нужно, чтобы он подключался к моему серверу только один раз... Как я могу это сделать ? - person P.Kole; 13.04.2016
comment
Поместите логику подключения в setup() вместо loop(). Код, который находится в setup(), будет запускаться только 1 раз, как только запустится Arduino. После этого запускается loop() в цикле. - person L Bahr; 13.04.2016
comment
Да, я это знаю, но 1 раза недостаточно, чтобы esp8266 подключился... Нужно много попыток... Как определить, подключен ли esp? - person P.Kole; 15.04.2016
comment
Вы можете проверить возвращаемое значение AT+CIPSTATUS. Статус возврата 4 означает, что он отключен. Проверьте AT+CIPSTATUS для получения дополнительной информации. - person L Bahr; 15.04.2016