Если Arduino подключится к компьютеру и откроет Serial Monitor, будут ли работать контакты Tx и Rx?

Предположим, что вы соединили две платы Arduino Uno через контакты Rx и Tx. Затем, если одна или обе платы Arduino были подключены к компьютеру и, возможно, открыли последовательные мониторы, будут ли по-прежнему работать контакты Tx и Rx? т.е. будет ли Arduino по-прежнему обмениваться данными через контакты Rx и Tx, когда он общается с компьютером? Если нет, то как заставить их работать при подключении к компьютеру?

, 👍1

Обсуждение

Чип USB FTDI подключается к контактам TX/RX. Поэтому сериал может работать не так, как вы ожидаете., @Dougie


4 ответа


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

3

Предположим, что одна из двух плат Arduino Uno подключена через Rx и Tx контакты.

Я предполагаю, что вы подключите TX одного Arduino к RX другого. один и наоборот, что является правильным способом их соединения. В качестве theSealion объяснил в своем ответе, что вы не должны подключать два контакта TX. вместе.

если одна или обе платы Arduino были подключены к компьютеру и возможно открыты последовательные мониторы

Если вы это сделаете, Arduino даже не заметит.

Ну, если быть точнее... на Uno есть небольшой скол, возле Разъем USB с маркировкой «MEGA16U2». Этот чип используется как USB/последовательный конвертер, и он заметит, когда вы подключите USB-кабель и когда вы открываете порт. Однако основной чип (большой PDIP28), являющийся микроконтроллер, который запускает ваш скетч, ничего не знает и не заботится.

Будут ли контакты Tx и Rx работать?

Абсолютно.

будет ли Arduino по-прежнему обмениваться данными через контакты Rx и Tx, когда он общаться с компьютером?

Приемник не будет обмениваться данными с компьютером. Что произойдет:

  • Все, что ваш Arduino записывает в свой последовательный порт, будет получено как другой Arduino, так и последовательный монитор.
  • Все, что вы отправляете через последовательный монитор, будет потеряно.
  • Когда вы Serial.read(), вы получите то, что было установлено другим Ардуино.

Причиной такого поведения является резистор 1 кОм, который находится между TX Mega16U2 и RX основного микроконтроллера. Когда вы подключаетесь этот RX к другому TX Arduino, который имеет низкий импеданс (≈ 25 Ом), что TX «выиграет»: выход с низким импедансом подавляет выход с высоким импедансом один.

,

0

Не следует соединять два контакта TX вместе. В Arduino есть несколько защитных резисторов, но даже не рекомендуется подключать два выходных контакта.

Единственный безопасный способ использовать контакты RX / TX напрямую — удалить защитные резисторы (RN4A и RN4B в эталонном проекте) или, по крайней мере, RN4A и использовать только одно соединение за раз. Это не поможет, если вы не используете подключение к ПК или не открываете последовательный монитор, поскольку контакты по-прежнему являются выходом.

(Несколько выводов RX не проблема, так как они являются входными)

(Конечно, я знаю, что большую часть времени он может работать с несколькими контактами TX вместе, но я бы рекомендовал его)

,

2

как заставить [две Arduino общаться друг с другом] работать при подключении к компьютеру?

Существует множество способов прямой связи двух Arduino друг с другом, в то время как один или оба обмениваются данными с последовательным монитором портативного компьютера через USB.

  • Используйте UART для связи ардуино, не зависящей от USB-подключения. (См. https://www.arduino.cc/reference/en/language/functions/communication /серийный/ )

    • Некоторые Arduino-совместимые платы, такие как Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2 и т. д., имеют 4 аппаратных UART; контакты Serial1 (обратите внимание на «1») можно использовать для связи с другим Arduino, не мешая последовательной (без «1») связи UART через USB с ноутбуком. (Увы, у Arduino Uno только 1 аппаратный UART).
    • Arduino Micro и Arduino Leonardo на базе ATmega32u4, а также производные Arduino на базе ATmega32u4, такие как FLORA< /a> и многие из производных Arduino на базе ARM, такие как серия Teensy, имеют интерфейс USB, который не поддерживает не использовать любой контакт UART; поэтому контакты Serial1 (обратите внимание на «1») можно использовать для связи с другим Arduino, не мешая последовательному (без «1») обмену данными без UART через USB с ноутбуком. (Увы, Arduino Uno имеет USB-интерфейс, который действительно использует только свои аппаратные контакты UART).
    • Даже Arduino Uno, имеющая только 1 аппаратный UART, контакты которого жестко подключены к микросхеме интерфейса USB, может побитно симулировать медленную симуляцию UART на других контактах. См. В чем разница между всеми библиотеками серийных номеров программного обеспечения? Какой из них совместим с Arduino Nano? .
  • Вместо того, чтобы пытаться имитировать UART в программном обеспечении (время довольно сложно), может быть проще/быстрее использовать некоторые другие менее чувствительные ко времени способы связи между Arduino Unos или другими ардуино, такие как

    • SPI между двумя Arduino (a); (b)
    • I2C между двумя Arduino (a) (б)
    • PJON между двумя Arduino<!-- а-->
    • некоторые протоколы асинхронной связи вообще не зависят от времени
    • и т. д.
,

1

У меня точно такая же проблема! Я использовал плату Arduino Uno с Jtag ICE mkii для отладки, которая работала хорошо. Когда я начал использовать UART, это был большой беспорядок. Передача с Arduino на внешний адаптер TTL-USB работала, но не в другом направлении. Я играл несколько часов, прежде чем увидел эту ветку, и это натолкнуло меня на мысль изучить схему -> Хлопнуть! Я видел два резистора. Извлеченный урок: не используйте аппаратное обеспечение Arduino без остальных инструментов! Подумал, что использовать аппаратное обеспечение для быстрой разработки было хорошей идеей. Теперь это стоит мне больше времени, чем я думал...

,