Как вам сказали, завершайте свои AT-команды символом возврата каретки \r
. Также ваш текущий код будет читать только байт ответа, и это если ответ даже прибыл, так как вы вообще не включили задержку. Чтобы взаимодействовать с ESP в интерактивном режиме с последовательным монитором, я бы рекомендовал использовать это:
#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11);
void setup(){
Serial.begin(9600);
esp.begin(9600);
}
void loop()
{
while (Serial.available()) // forward data from monitor to esp
esp.write(Serial.read());
while (esp.available()) // forward data from esp to monitor
Serial.write(esp.read());
}
По сути, это делает ваш Arduino каналом связи между вашим ПК и ESP. Вы можете отправлять команды в ESP с помощью последовательного монитора и немедленно получать их результаты. Это отлично подходит для тестирования команд. Просто не забудьте установить серийный монитор на BOTH NL & CR
; это хорошо послужит вам для команд, а также для любых HTTP-запросов, которые вы отправляете, поскольку добавляет \r\n
ко всему, что вы отправляете.
Если вы хотите написать скетч для общения с ESP, вы должны предоставить некоторую задержку после отправки команды, чтобы дождаться, пока модуль обработает команду и ответит. Задержка варьируется в зависимости от команды, не менее 500 мс. Обычная процедура состоит в том, чтобы определить период ожидания для каждой команды, в зависимости от ожидаемого времени, после которого вы «сдаетесь», если ответа еще нет. На GitHub есть множество библиотек, которые предполагают взаимодействие с каким-либо устройством с помощью AT-команд; изучите их, чтобы изучить их методы.
person
SoreDakeNoKoto
schedule
08.04.2016
\r
(если только вы не напортачили с регистром S3, чего делать не следует). спецификация V.250 предельно ясна по этому поводу см. главу 5.2 Командные строки DTE. - person hlovdal   schedule 07.04.2016