как сделать связь Arduino с esp8266

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

Здесь, если мой код Arduino:

#include <SoftwareSerial.h>
SoftwareSerial ESPserial(0, 1); // RX | TX

void setup()
{
  Serial.begin(115200);     // communication with the host computer
  // Start the software serial for communication with the ESP8266
  ESPserial.begin(9600);

  Serial.println("Enter 1 to turn led high & 2 to turn led low.");
}
// the loop function runs over and over again forever
void loop() {
  // listen for communication from the ESP8266 and then write it to the serial monitor
  if ( ESPserial.available() )   {
    Serial.write( ESPserial.read() );
  }

  // listen for user input and send it to the ESP8266
  if ( Serial.available() )       {
    ESPserial.write( Serial.read() );
  }

}

Вот код esp8266:

void setup()
{
  Serial.begin(9600);     // связь с хост-компьютером
  // Запуск прогрмаммного последовательного порта для связи с ESP8266
  // инициализируем цифровой вывод LED_BUILTIN как выход.
  pinMode(LED_BUILTIN, OUTPUT);
}
// функция цикла запускается снова и снова навсегда
void loop() {
  Serial.println("ESP -- Hello");
  delay(1000);
  // прослушивание пользовательского ввода и отправка его на ESP8266
  if ( Serial.available() )  {

    int ledState = Serial.parseInt();
    if (ledState == 1) {
      digitalWrite(LED_BUILTIN, HIGH);   // включаем светодиод (HIGH - уровень напряжения)
      Serial.println("ESP Led On\n");
    }
    if (ledState == 2) {
      digitalWrite(LED_BUILTIN, LOW);    // выключаем светодиод, понижая напряжение
      Serial.println("ESP Led Off\n");
    }
  }
}

Как только я загружу оба скетча, я вижу, что терминал «ESP -- Hello» продолжает печатать с esp8266, но когда я ввожу 1 или 2, он не отправляется на esp8266, из-за чего я никогда не вижу «ESP». off", так что поправьте меня, ребята, какую ошибку я делаю.

, 👍0

Обсуждение

Никогда не используйте SoftwareSerial на контактах 0 и 1! И никогда не используйте контакты 0 и 1 *ни для чего*, если вы используете Serial для связи Arduino с ПК., @Majenko

@Majenko хорошо, спасибо, тогда как я могу решить проблему этой связи на UNO, у меня есть только эти RX и TX, соединяющие их контакты 0,1, так что я должен попробовать тот же код на mega2560, @user889030

вы можете использовать SoftwareSerial на любой паре контактов. именно поэтому он называется «программным» серийным, @Juraj


1 ответ


Лучший ответ:

0

использование SoftSerial на аппаратном последовательном порту не работает на Arduino должным образом, так как иногда данные поступают, а иногда нет с добавлением мусора, поэтому использование цифровых контактов, других 2, & 3, кроме аппаратного серийного номера, решили проблему.

,

Возможно, вам следует уточнить, что использование SoftSerial на аппаратном последовательном порте не работает, выберите любые другие цифровые контакты, кроме аппаратных последовательных контактов., @MatsK

@MatsK спасибо, я обновил ответ, @user889030