Проблема последовательного подключения 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
.
Есть ли что-то, что я упускаю из виду, из-за чего это не работает? Я также прикрепил изображение своих соединений.
Любая помощь приветствуется.
@Lamar, 👍0
Обсуждение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
@Carlmikael определенно прав в своем ответе, мне не следовало использовать аппаратные контакты с программным обеспечением.
Помимо этой проблемы, моя проблема была окончательно решена, когда я заметил, что если я включу NodeMCU перед включением питания Arduino, все будет работать как положено.
Может быть, кто-то может пояснить, почему это вызвало проблему?
- Отправьте несколько значений из Arduino Uno в nodeMCU, используя последовательный порт.
- Последовательная связь между nodemcu и Arduino Uno
- Получение мусорных значений при отправке объекта Json из Arduino Uno в NodeMCU с использованием SoftwareSerial
- Последовательная связь, если инструкция не работает
- SoftwareSerial мешает TVout
- AT-команда не отвечает на последовательный монитор
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Как публиковать запросы HTTP POST на моем веб-сайте?
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