Arduino Pro micro Serial communication проблема с узлом MCU
Недавно я купил Arduino Pro micro на базе ATmega32U4. Я использую библиотеку клавиатуры и взаимодействую с моим ПК через USB.
Я пытаюсь создать последовательную связь между Arduino Pro micro и NodeMCU через контакты Rx, Tx (0, 1), но это не работает, т.Е. Не дает никакого вывода с кодом ниже на Pro micro:
#include <Keyboard.h>
int incomingByte;
unsigned long lastTime;
void setup() {
Serial.begin(115200);
Keyboard.begin();
}
void loop() {
if (Serial.available() > 0) {
lastTime = millis();
String payload = "";
while (1) {
if (millis() - lastTime > 1000)
break;
incomingByte = Serial.read();
Serial.println(incomingByte);
}
}
На NodeMCU есть простой скрипт flashed, который только записывает на serial некоторые символы в задержанном цикле.
При использовании библиотеки SoftwareSerial с Pro micro она работает нормально, т.Е. я могу читать данные, отправленные NodeMCU на пользовательских контактах Rx, Tx (9, 10). Я попробовал это сделать, потому что подумал, что, поскольку Pro micro взаимодействует с ПК, оригинальные контакты Rx и Tx заняты. Но после некоторых исследований я узнал, что в отличие от других плат Arduino, таких как UNO, Pro micro не использует их для связи через USB.
Хотя пользовательский сериал с использованием библиотеки SoftwareSerial работает, он слишком медленный и ненадежный, т.е. передача строки длиной 10 занимает 2-3 секунды. Кроме того, это ненадежно, потому что при отправке строк большей длины строки поступают неполными или иногда данные повреждаются (символы перемешиваются).
Опять же, это не моя главная забота, если я могу использовать оригинальные контакты Rx, Tx, как обычно, на любых других платах Arduino, это решает мою проблему.
Вот моя принципиальная схема:
@Rishabh, 👍0
Обсуждение1 ответ
Лучший ответ:
Контакты RX и TX Arduino Micro являются Serial1. Замените Serial
в вашем скетче на Serial1
для связи с esp8266 по контактам RX и TX.
К счастью, я узнал об этом прошлой ночью, и это тоже сработало. Спасибо за ваш вклад @Juraj.
Контакты Rx и Tx (0 и 1) на Arduino Pro Micro определены с помощью Serial1, поэтому замена "Serial" на Serial1
сработала для меня. Спасибо всем за проявленный интерес., @Rishabh
- Программирование Arduino Micro через RX/TX
- Arduino Pro Micro, получить данные с контакта Tx?
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
- Подключение NodeMCU для Serial1
- NodeMCU второй HARDWARE последовательный TX в качестве порта отладки
- Флэш-прошивка с шестнадцатеричным файлом по серийному номеру с Python (без avrdude, Arduino IDE)
- Arduino считывает состояние подключения устройства hc-05
- Использует ли Arduino pro-micro 3.3v кристалл 8 МГц или кристалл 16 МГц с делителем тактовой частоты 2?
Проблема в вашем дурацком методе последовательного чтения. Вы предполагаете, что есть данные для чтения, когда их нет. Прочтите это: https://majenko.co.uk/blog/reading-serial-arduino, @Majenko
Я, наверное, что-то пропустил, но: почему вы вообще используете SoftwareSerial на pro micro?, @timemage
@timemage Да, ты это пропустил. Он объяснил почему - он предположил, что контакты 0/1 были взяты с USB, затем выяснил обратное и теперь пытается использовать их с Serial вместо SoftwareSerial., @Majenko
Последовательное
устройство обычно представляет собой последовательное соединение USB, независимо от того, управляется оно контактами 0/1 или нет. Для контактов 0/1 с собственным USB-соединением необходимо использоватьSerial1
. Я думаю. Прошло много времени с тех пор, как я использовал Arduino с родным USB..., @MajenkoМеня не смущает, как Serial и Serial1 работают на Arduinos на базе 32u4. Я не вижу никаких признаков того, что используется что-то другое, кроме SoftwareSerial., @timemage
@Majenko спасибо, замена
Serial
на "Serial1" сработала для меня., @Rishabh