Проблема последовательного подключения Uno к NodeMCU

Это мой первый проект с какой-либо платой для разработки, и до сих пор он был просто взрывным.

Однако я столкнулся с некоторыми проблемами при попытке отправить последовательные данные с моего Uno на плату NodeMCU.

У меня есть следующие связи:

От Uno Rx до NMcu Tx

От Uno Tx до NMcu Rx

Uno GND на NMcu GND

microUSB от компьютера для питания NMcu

USB от компьютера для питания Uno

EDIT: после некоторых предложений я также попробовал следующее.

Uno DigitalPin 5 — NMcu D6

От Uno DigitalPin 6 до NMcu D5

Uno GND на NMcu GND

microUSB от компьютера для питания NMcu

USB от компьютера для питания Uno

С помощью следующего кода:

// Код отправителя UNO
#include <SoftwareSerial.h>
SoftwareSerial toESP(0, 1); //Rx, Tx (также пробовал 5,6)

void setup()
{
  Serial.begin(115200);
  toESP.begin(9600);
}

void loop()
{
  Serial.println("sending");
  toESP.println("message from Nano");
  delay(1000);
}

// код приемника NodeMCU
#include <SoftwareSerial.h>
SoftwareSerial fromNano(3, 2); //Rx, Tx (также пробовал D5, D6)

void setup()
{
  Serial.begin(115200);
  fromNano.begin(9600);
}

void loop()
{
  if (fromNano.available())
  {
    char inChar = fromNano.read();
    Serial.print(inChar);
  }
  else {
    Serial.println("not available");
  }
  delay(2000);
}

Я могу подключить последовательный монитор к обоим устройствам и увидеть, как UNO отправляет данные (на uno также мигает индикатор TX).

Код NodeMCU никогда не удовлетворяет условию fromNano.available.

Есть ли что-то, что я упускаю из виду, из-за чего это не работает? Я также прикрепил изображение своих соединений.

Любая помощь приветствуется.

, 👍0

Обсуждение

0 и 1 — это аппаратные последовательные контакты в Uno, а 3 — это аппаратные последовательные контакты в NodeMcu, поэтому вы не должны использовать их для SoftwareSerial. и провода на контактах 1 и 3 на NodeMcu (аппаратные последовательные контакты), @Juraj

Хм, спасибо за ответ. Я пытался использовать другие цифровые выводы на arduino и nodemcu (и обязательно обновил соответствующий код) прошлой ночью, но безуспешно. Я попробовал что-то вроде SoftwareSerial(5,6) для отправителя (arduino) и So ftwareSerial(D5,D6) для получателя (nodeMCU). Убедитесь, что цифровой контакт 5 Arduino подключен к nodemcu D6, и наоборот. Я попробую еще раз сегодня вечером., @Lamar

@Juraj - После попытки цифровых контактов 5,6 на Arduino и D5, D6 на nodemcu я все еще не могу получать последовательные данные. fromNano.available() всегда ложно. Я установил скорость 9600 бод. https://imgur.com/a/gfVo2nt, @Lamar


2 ответа


2

Arduino UNO использует контакты 0 и 1 для последовательной связи с USB. Вы не можете использовать их для softserial. Измените softserial на другие контакты. /Микаэль

,

Спасибо за комментарий. Можно ли просто использовать любые другие цифровые контакты для инициализации SoftwareSerial?, @Lamar

Я попробовал цифровые контакты 2 и 3 (а также 5,6) для RX, TX соответственно, и это, похоже, не решило проблему. Спасибо за предложение., @Lamar

Зачем использовать 2 последовательных соединения, вам нужен только один., @Carlmikael

Насколько я понимаю, я использую только одно последовательное соединение между платами. Я только что попробовал пары (2,3) и (5,6) независимо друг от друга для устранения неполадок., @Lamar

В коде вы используете два., @Carlmikael

Вы имеете в виду Serial vs SoftwareSerial? Я включаю последовательный канал для отладки через монитор в Arduino IDE., @Lamar

Ардуино 5В или 3В? NodeMcu не всегда устойчив к напряжению 5 В. Попробуйте отключить USB-соединение от Arduino, затем подключите 3 В от NodeMcu к 5 В на Arduino., @Carlmikael


0

@Carlmikael определенно прав в своем ответе, мне не следовало использовать аппаратные контакты с программным обеспечением.

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

Может быть, кто-то может пояснить, почему это вызвало проблему?

,