Ардуино и ESP8266

Я подключаю свой ESP к Arduino к компьютеру.

Если я отправляю AT-команды со своего последовательного монитора, я получаю полный ответ. Я использую 115200 и оба NL & CR в моем серийном мониторе.

ESP TX подключен к TX Arduino, то же самое для RX.

Проблема возникает, когда я пытаюсь отправить команды из своего кода Arduino. Я не получаю никакого ответа. Я использую один и тот же 115200 как для последовательного порта, так и для ESP8266.

Я использую этот код:

#include <SoftwareSerial.h>
SoftwareSerial esp8266(0,1);

void setup()
{
    Serial.begin(115200);
    esp8266.begin(115200);
}

void loop()
{
    sendCommand("AT+GMR\r\n");
}

String sendCommand(String command, const int timeout, boolean debug)
{
    String come = "";

    while(esp8266.available())
    {
        char c = esp8266.read(); // прочитать следующий символ.
        Serial.write(c);
        come += c;
    }  
    Serial.println(come); 
    return come;
}

Я не понимаю, что здесь не так и почему это работает только с Serial Monitor.

, 👍-1

Обсуждение

Где этот чертов веб-сайт, который говорит людям использовать SoftwareSerial на контактах 1 и 0, чтобы я мог стереть его с лица земли?!?!, @Majenko

Вы подключили Tx>Tx и Rx<Rx. У вас нет делителей V. КАК ЭТО РАБОТАЕТ?!?!?!?! (я в замешательстве) Пожалуйста, опубликуйте изображение вашей схемы, @Dat Ha

@Majenko поиск «SoftwareSerial esp8266 (0,1);» показывает это буквально везде. В целом я отрицательно отношусь к идее канонического вопроса, но это и дублирование закрытия могут быть оправданы., @Chris Stratton

@Dat Ha - Да, «TX to TX» и «RX to RX» в некоторых случаях могут быть правильными. Смотрите мой ответ., @Chupo_cro


2 ответа


1

Сделайте выбор:

  1. Используете ли вы контакты 0 и 1 для связи с ПК или
  2. Используете ли вы контакты 0 и 1 для связи с ESP8266?

Вы не можете сделать и то, и другое.

Переместите ESP8266 на другие контакты.

,

Для esp8266 как в моем коде вверх, @Corneliu

@Corneliu, тогда ваш Arduino не может обмениваться данными с ПК, а это значит, что вам нужно будет удалить строки Serial.xxx и найти другой способ узнать, работает ли ваша программа. Этот путь не рекомендуется. Скорее переместите свой ESP8266 на другие контакты., @Chris Stratton

Хорошо. Я перемещаю esp на контакты 2 и 3; Я установил: ESP8266.begin(115200); И в моем цикле у меня есть: ESP8266.println("AT\n"); И в моем последовательном мониторе я получил: ƒÿ, @Corneliu

Вы правильно его подключили? Ваш назначенный контакт TX через делитель напряжения к ESP8266 RX и ESP8266 TX к назначенному вами RX?, @Majenko

Вы уверены, что скорость передачи данных обоих устройств (и последовательного монитора) установлена правильно? Если что-то не так, очень вероятно, что появятся странные символы., @Paul


2

Когда вы используете плату Arduino в качестве преобразователя USB --> RS232, вам необходимо, как вы сказали, подключить TX к TX и RX к RX. Но если вам нужна связь между микроконтроллером и ESP, вам нужно подключить TX к RX и RX к TX. Здесь я объяснил это подробно.

,