Как esp8266 получает ответ от сервера..?
#include <SoftwareSerial.h>
const byte rxPin = 2;
const byte txPin = 3;
SoftwareSerial ESP8266 (rxPin, txPin);
void setup() {
Serial.begin(115200);
ESP8266.begin(115200);
delay(2000);
}
void printResponse() {
String s="";
while (ESP8266.available()) {
s+=ESP8266.readStringUntil('\n');
}
Serial.println(s);
// now here you can parse and look for "+IPD" look for another line ending (if there is) and then extract the numeric value.
}
void loop() {
ESP8266.println("AT+CIPMUX=1");
delay(1000);
printResponse();
ESP8266.println("AT+CIPSTART=4,\"TCP\",\"www.tcpss.000webhostapp.com\",80");
delay(1000);
printResponse();
String cmd = "GET /test.html HTTP/1.1";
ESP8266.println("AT+CIPSEND=4," + String(cmd.length() + 4));
delay(1000);
ESP8266.println(cmd);
delay(1000);
ESP8266.println();
delay(1000);
printResponse();
delay(5000);
}
я запустил этот код и могу получить такой ответ от сервера, как "+ipd 4,41".... что это значит? вот ответ после запуска кода в arduino.......
WIFI GOT IP
AT+CIPLUX=1
OK
AT+CHPSTART=4,"TCP","www.tcpss.000webhostapp.com",80
4,CONNEC
AR)CR5NB⸮b⸮⸮k
j⸮L⸮⸮
Recv 27 bytes
SEND OK
+IPD,4,41
Заранее спасибо.....
@farhan, 👍1
Обсуждение2 ответа
Здесь нужно знать две вещи:
- Вы видите повреждение в своем выводе, потому что SoftwareSerial не способен надежно работать на скорости 115200 бод. Вам нужно перенастроить ваш ESP8266 для работы с более низкой скоростью передачи данных (например, 9600), чтобы иметь возможность использовать его с Arduino, у которого недостаточно физических UART.
- Ответ
+IPD,4,41
говорит вам об ответе. Это не само по себе ответ.
Это означает "IP-данные на канале 4 длины 41". Затем вы несете ответственность за запрос этих данных от ESP8266, используя любую команду AT, требуемую ESP8266.
Лично я бы отказался от прошивки AT и запрограммировал ESP8266 напрямую. Таким образом, вы решаете обе проблемы: вы можете выбрать, с какой скоростью передачи данных общаться (если вам вообще нужно общаться с Arduino), и у вас нет AT-команд для анализа или обработки. Это гораздо более эффективный способ работы с ESP8266, который пытается подделать вещи с прошивкой AT и Arduino.
Спасибо, этот ответ был полезен для меня..., @farhan
Но я хочу знать, что когда я изменяю скорость передачи данных в последовательном мониторе, она меняется, но ответ от команд esp8266 on AT не показывает, почему? если я поступил неправильно, то что мне нужно, чтобы решить эту проблему., @farhan
во-вторых, я хочу знать, какие AT-команды esp8266 требуются для запроса данных от esp8266 или кода, который мне нужно использовать в arduino ide...., @farhan
Вы должны изменить скорость передачи данных на самом ESP, а также на Arduino. Для этого есть команда AT, но, как известно, она блокирует ESP. существуют разные версии прошивки, и команды между ними различаются. Где-то в Интернете есть PDF-файл, доступный в Интернете, в котором перечислены все команды., @Majenko
SoftwareSerial
не работает хорошо для скорости передачи данных выше 9600bps, вам нужно изменить Arduino и ESP8266, чтобы работать на скорости 9600bps.
Используйте
AT+UART_DEF=9600,8,1,0,0
, чтобы установить ESP8266 на 9600Baud, с 8 битами, 1 стоп-битом и без четности. А также не забудьте соответствующим образом настроить Arduino. Команда AT с суффиксом _DEF означает, что ее нужно будет установить только один раз, и конфигурация будет сохранена в ESP8266. Набор команд ESP8266 AT будет удобен при программировании ESP8266 с помощью команд AT.Добавьте более длительную задержку после отправки
AT+CIPSEND
иполучите
запрос, так как эти сетевые действия иногда занимают больше времени для установления.+IPD,4,41
означает, что соединение 4 (которое вы установили спомощью AT+CIPSTART)
подключено, и есть 41 байт полезной нагрузки, ожидающей чтения. Вы можете обратиться к ESP8266 в примерах команд для получения дополнительной информации.
- AT-команда не отвечает на последовательный монитор
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Захват изображений с OV7670 (без FIFO) с использованием Arduino Uno?
Вы видите повреждение от запуска последовательного программного обеспечения на скорости 115200 бод., @Majenko