Как программно получить ответ на выданную 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
Я тоже получаю специальные символы.
@Rahul Rastogi, 👍1
Обсуждение1 ответ
Смотрите также:
- Отправка данных из ESP8266 в PHP
- Скетч мигания ESP8266 не мигает светодиодом
- nodeMCU — 2 цикла одновременно — один непрерывно, второй каждые 10 секунд.
- Вызов метода в основном скетче из библиотеки.
- Как получить данные из цикла?
- Код запускается, но не запускается после добавления подпрограммного кода
- Печать string and integer LCD
- AT-команда не отвечает на последовательный монитор
Вы можете попробовать уменьшить скорость передачи данных, чтобы увидеть, исчезнет ли проблема:
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