Как программно получить ответ на выданную AT-команду для ES266 на Arduino?

Я успешно запускаю AT-команды через Serial Monitor. Но теперь я выдаю AT-команды через код Arduino и сталкиваюсь с проблемами получения правильного ответа.

Цель: После выполнения AT-команд программным путем узнать, успешно они выполняются или нет.

Микроконтроллер: Arduino Uno

#include<string.h>
#include<SoftwareSerial.h>

#define OK "OK"
#define SERVER_PORT 1234
#define RX_PIN 2
#define TX_PIN 3

SoftwareSerial ESP(RX_PIN, TX_PIN);

void setup() {
  Serial.begin(115200);
  Serial.println("First serial");
  while(!Serial);
  ESP.begin(115200);
  Serial.println("Second serial");
  while(!ESP);
  //Включение нескольких подключений
  ESP.println("AT+CIPMUX=1\r\n");
  while (!ESP.available());
  String muxResponse = ESP.readString();
  Serial.print("muxR:");
  Serial.println(muxResponse);
}

void loop() {
  if (ESP.available()) {
    String val = ESP.readString();
    Serial.println(val);
  }
}

После запуска приведенного выше кода я получаю ответ в Serial Monitor, например:

muxR:AT+CIPMUX=1


busy p../

OK

Я тоже получаю специальные символы.

, 👍1

Обсуждение

Вы можете попробовать уменьшить скорость передачи данных, чтобы увидеть, исчезнет ли проблема: ESP.begin(9600);, а затем постепенно увеличивать. Я предполагаю, что вы используете какой-то сдвиг уровня между Uno и устройством ESP8266., @6v6gt

Хорошо. Я просто использую Arduino Uno R2, ESP8266 и макетную плату, больше ничего., @Rahul Rastogi

@ 6v6gt Я изменил скорость передачи ESP8266 на 9600 с помощью AT+CIOBAUD=9600. Скорость успешно изменена, но получен тот же ответ. Получение этой занятой п.. :(, @Rahul Rastogi

занят п../ ошибка не проходит даже после сброса к заводским настройкам (AT+RESTORE)., @Rahul Rastogi

Может быть, вы найдете что-то здесь. У меня аналогичный случай: http://arduinoprosto.ru/q/18575/send-at-commands-to-esp8266-from-arduino-uno-via-a-softwareserial-port, @6v6gt

Недавно я узнал, что контакты ESP, вероятно, терпимы к 6 В, ** НО ** я бы все равно использовал переключатель уровня. Также есть некоторая проблема при использовании SoftwareSerial для связи между Uno и ESP, когда что-то не работает на высоких скоростях передачи, обычно 9600 работает. Лично я бы поставил delay(50); и конец loop(), но у меня нет доказательств того, что это имеет значение :), @Code Gorilla

Я считаю, что «занято» — это ответ, который вы должны ожидать, и это буквально означает, что ESP все еще занят выполнением последней команды., @Code Gorilla

Существует хорошая библиотека, которая скрывает AT-команды за стандартным сетевым API Arduino: [WiFiEsp](https://github.com/bportaluri/WiFiEsp), @Juraj


1 ответ


1

изменить

AT+CIPMUX=1\r\n

в

AT+CIPMUX=1
,