Jeśli Arduino podłączy się do komputera i otworzy monitor szeregowy, czy styki Tx i Rx nadal będą działać?

Załóżmy, że jedna łączy dwie płyty Arduino Uno za pomocą pinów Rx i Tx. Następnie, jeśli jedna lub obie płyty Arduino zostały podłączone do komputera i prawdopodobnie otworzyły monitory szeregowe, czy styki Tx i Rx nadal będą działać? tj. czy Arduino będzie nadal komunikować się za pośrednictwem pinów Rx i Tx podczas komunikacji z komputerem? Jeśli nie, to jak sprawić, by działały podczas połączenia z komputerem?

Komentarze

  • Układ USB FTDI jest podłączony do pinów TX / RX. Dlatego port szeregowy może nie działać zgodnie z oczekiwaniami.

Odpowiedź

Załóżmy, że jedna łączy dwie płyty Arduino Uno za pomocą pinów Rx i Tx.

Zakładam, że połączysz TX jednego Arduino z RX drugiego i odwrotnie, co jest właściwym sposobem ich połączenia.Jak wyjaśnił Seealion w swojej odpowiedzi, nie powinieneś łączyć ze sobą dwóch pinów TX.

jeśli jedna lub obie płyty Arduino były podłączone do komputera i prawdopodobnie otwierały się monitory szeregowe.

Jeśli to zrobisz, Arduino nawet tego nie zauważy.

Cóż, żeby być dokładniejszym … na Uno jest mały chip, nea r złącze USB, oznaczone „MEGA16U2”. Ten układ jest używany jako konwerter USB / szeregowy i zauważy po podłączeniu łącza USB i otwarciu portu. Jednak główny układ (duży PDIP28), który jest mikrokontrolerem obsługującym twój szkic, nie będzie o tym wiedział ani tym nie przejmował się.

styki Tx i Rx nadal działa?

Oczywiście.

czy Arduino będzie nadal komunikować się przez Rx i pin Tx podczas komunikacji z komputerem?

RX nie będzie komunikować się z komputerem. Co się stanie, to:

  • Cokolwiek Arduino zapisze na swoim porcie szeregowym, zostanie odebrane zarówno przez drugie Arduino, jak i przez monitor szeregowy.
  • Cokolwiek wyślesz przez monitor szeregowy, zostanie utracone.
  • Kiedy Serial.read(), otrzymasz wszystko, co zostało ustawione przez drugie Arduino.

Przyczyną tego zachowania jest 1   rezystor kΩ, który znajduje się między TX Mega16U2 i RX głównego mikrokontrolera. Po podłączeniu tego RX do TX drugiego Arduino, który ma niską impedancję (≈ 2 5   Ω), że TX „wygra”: wyjście o niskiej impedancji przewyższa wyjście o wysokiej impedancji.

Odpowiedź

jak sprawić, by [dwa Arduino komunikowały się ze sobą] działały podczas połączenia z komputerem?

Istnieją różne sposoby bezpośredniej komunikacji między dwoma Arduinami, podczas gdy jedno lub oba komunikują się z monitorem szeregowym laptopa przez USB.

  • Użyj UART dla Arduino do komunikacji, która jest niezależna od połączenia USB. (Patrz https://www.arduino.cc/reference/en/language/functions/communication/serial/ )

    • Kilka płyt zgodnych z Arduino, na przykład Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2 itd. Mają 4 sprzętowe UART; piny Serial1 (zwróć uwagę na „1”) mogą służyć do komunikacji z innym Arduino bez zakłócania komunikacji szeregowej (bez „1”) UART przez USB do laptopa. (Niestety, Arduino Uno ma tylko 1 sprzętowy UART).
    • Arduino Micro oparte na ATmega32u4 i Arduino Leonardo i pochodne Arduino oparte na ATmega32u4, takie jak FLORA i wiele pochodnych Arduino opartych na architekturze ARM, takich jak seria Teensy , ma interfejs USB, który nie używa żadnego pinów UART; więc piny Serial1 (uwaga na „1”) mogą być używane do komunikacji z innym Arduino bez zakłócania komunikacji szeregowej (bez „1”) nie-UART przez USB do laptopa. (Niestety , Arduino Uno ma interfejs USB, który używa swoich jedynych sprzętowych pinów UART).
    • Nawet Arduino Uno, które ma tylko 1 sprzętowy UART, którego styki są podłączone na stałe do chip interfejsu USB, może bit-bang powolnej symulacji UART na innych pinach. Zobacz Jaka ' jest różnica między wszystkimi biblioteki oprogramowania szeregowego? Która z nich jest zgodna z Arduino Nano? .
  • Zamiast próbować symulować UART w oprogramowaniu (synchronizacja jest trochę trudna), może być łatwiej / szybciej użyć innych mniej wrażliwych na czas sposoby komunikacji między Arduino Unos lub innymi Arduino, takie jak

Odpowiedź

Mam dokładnie ten sam problem! Używałem płyty Arduino Uno z Jtag ICE mkii do debugowania, co działało dobrze. Kiedy zacząłem używać UART, był to wielki bałagan. Transmisja z Arduino do zewnętrznego adaptera TTL-USB działała, ale nie w drugą stronę. Grałem na wiele godzin, zanim zobaczyłem ten wątek, i to dało mi pomysł, aby przyjrzeć się shematic – > Bang! Widziałem dwa rezystory. Wyciągnięta lekcja: nie używaj sprzętu Arduino bez pozostałych narzędzi! Pomyślałem, że to dobry pomysł, aby użyć sprzętu do szybkiego rozwoju. Teraz to kosztuje mnie więcej czasu niż myślałem …

Odpowiedź

Nie należy łączyć ze sobą dwóch pinów TX. Arduino ma pewne rezystory zabezpieczające, ale nawet nie jest zalecane podłączanie dwóch pinów wyjściowych.

Jedynym bezpiecznym sposobem bezpośredniego użycia pinów RX / TX jest usunięcie rezystorów ochronnych (RN4A i RN4B w projekcie referencyjnym) ) lub przynajmniej RN4A i używaj tylko jednego połączenia na raz. Nie pomaga, jeśli nie używasz połączenia z komputerem lub nie otwiera monitora szeregowego, ponieważ styki są nadal wyjściem.

(Wiele pinów RX nie stanowi problemu, ponieważ są wejściami)

(I oczywiście wiem, że może działać z wieloma pinami TX przez większość czasu, ale poleciłbym to)

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *