wifi-тройка модуль (esp8266) не слушается arduino due, но слушается порта

Тема в разделе "ESP8266, ESP32", создана пользователем studentIvan, 12 дек 2017.

Метки:
  1. studentIvan

    studentIvan Нерд

    Стокнулся с такой проблемой - подключил wifi-тройка модуль к Arduino Due на Serial2, затем проверил работоспособность общения через

    Код (C++):

    void loop() {
      // Если приходят данные из программного Serial - отправим их в порт компьютера
      if (Serial2.available()) {
        Serial.write(Serial2.read());
      }
      // Если приходят данные из компьютера - отправим их в программный Serial
      if (Serial.available()) {
        Serial2.write(Serial.read());
      }
    }
     
    esp8266 быстро отвечает и выполняет любые команды на скорости 115200 бод. Однако библиотека ESP8266.h в Arduino IDE не подключается - говорит SoftwareSerial.h не найден. Ну и ладно - попробовал как по этой ссылке сделать (при помощи AT-команд)

    Выполняю команду Serial2.println("AT+RST"); и ничего не происходит. Serial2.find("ready") ничего не находит.

    Код (C++):

    String cmd = "AT+CWJAP=\"" + ssid + "\",\"" + pwd + "\"";
    Serial2.println(cmd);
     
    тоже никак не реагирует - в чем может быть дело? При этом AT-команды через loop продолжают работать на ура.

    Может ли быть дело в функции, которой я ожидаю ответ от esp8266?

    Код (C++):

    /**
    * @param {HardwareSerial&} serial
    * @param {char*} response - OK for example
    * @param {int} timeout - timeout in seconds
    */

    boolean waitResponsefromSerial(HardwareSerial &serial, char *response, int timeout) {
      int timeoutx2 = timeout * 2;

      do {
        delay(500);
     
        if (serial.find(response)) {
          return true;
        }

      } while ((timeoutx2--) > 0);

      return false;
    }
     
    Использую так

    Код (C++):

    String cmd = "AT+CWJAP=\"" + ssid + "\",\"" + pwd + "\"";
    Serial2.println(cmd);
    return waitResponsefromSerial(Serial2, "OK", 10); // получаю false в итоге