Pokud se Arduino připojilo k počítači a otevřelo Serial Monitor, budou stále fungovat Tx a Rx pin?

Předpokládejme, že jeden připojí dvě desky Arduino Uno přes piny Rx a Tx. Pak, pokud by byla jedna nebo obě desky Arduino připojeny k počítači a případně by se otevřely sériové monitory, budou pin Tx a Rx stále fungovat? tj. bude Arduino i nadále komunikovat prostřednictvím pinů Rx a Tx, když komunikuje s počítačem? Pokud ne, jak je zajistit, aby fungovaly při připojení k počítači?

Komentáře

  • Čip USB FTDI je připojen k pinům TX / RX. Serial tedy nemusí fungovat tak, jak očekáváte.

Odpovědět

Předpokládejme, že jedna propojila dvě desky Arduino Uno přes piny Rx a Tx.

Předpokládám, že připojíte TX jednoho Arduina k RX druhého a naopak, což je správný způsob, jak je propojit. Jak vysvětlil Sealion ve své odpovědi, neměli byste spojovat dva TX piny dohromady.

pokud byla jedna nebo obě desky Arduino připojeny k počítači a případně otevřely sériové monitory

Pokud to uděláte, Arduino si toho ani nevšimne.

No, abych byl přesnější … na Uno, nea je malý čip r USB konektor označený „MEGA16U2“. Tento čip se používá jako USB / sériový převodník a si to všimne, když připojíte USB odkaz a když otevřete port. Hlavní čip (velký PDIP28), který je mikrokontrolérem, který spouští vaši skicu, však nebude ani vědět, ani se o něj nebude starat.

bude pin Tx a Rx stále pracujete?

Absolutně.

bude Arduino stále komunikovat prostřednictvím Rx a Tx pin, když komunikuje s počítačem?

RX nebude s počítačem komunikovat. Co se stane, je:

  • Ať vaše Arduino zapíše na svůj sériový port, přijme jej jak ostatní Arduino, tak sériový monitor.
  • Cokoli pošlete přes sériový monitor, bude ztraceno.
  • Když Serial.read(), získáte vše, co nastavilo druhé Arduino.

Důvodem tohoto chování je 1   kΩ rezistor, který leží mezi TX Mega16U2 a RX hlavního mikrokontroléru. Když připojíte tento RX k druhému TX Arduina, který má nízkou impedanci (≈ 2 5   Ω), že TX „vyhraje“: nízkoimpedanční výstup přemůže vysokoimpedanční.

Odpovědět

jak zajistit, aby [dva navzájem komunikovali Arduinos] při připojení k počítači?

Existují různé způsoby, jak mohou 2 Arduinos navzájem přímo komunikovat, zatímco jeden nebo oba komunikují se sériovým monitorem přenosného počítače přes USB.

  • Pro komunikaci Arduinos použijte UART, který je nezávislý na připojení USB. (Viz https://www.arduino.cc/reference/en/language/functions/communication/serial/ )

    • Několik desek kompatibilních s Arduino, například Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2 atd. Mají 4 hardwarové UART; piny Serial1 (všimněte si „1“) lze použít ke komunikaci s jiným Arduino, aniž by došlo k narušení komunikace UART Serial (bez „1“) přes USB k notebooku. (Bohužel, Arduino Uno má pouze 1 hardware UART).
    • Arduino Micro založené na ATmega32u4 a deriváty Arduino založené na Arduino Leonardo a ATmega32u4, jako je FLORA a mnoho ARM derivátů založených na ARM, jako je řada Teensy , má rozhraní USB, které nepoužívá žádné kolíků UART; takže kolíky Serial1 (všimněte si „1“) lze použít ke komunikaci s jiným Arduinem, aniž by docházelo k interferenci komunikace Serial (bez „1“) bez UART přes USB k notebooku. (Bohužel , Arduino Uno má USB rozhraní, které používá své jediné hardwarové UART piny).
    • Dokonce i Arduino Uno, které má pouze 1 hardwarový UART, jehož piny jsou pevně připojeny čip rozhraní USB, může bit-bang pomalou simulaci UART na jiných pinech. Viz Jaký je ' rozdíl mezi všemi softwarové sériové knihovny? Která z nich je kompatibilní s Arduino Nano? .
  • Spíše než se pokoušet simulovat UART v softwaru (načasování je trochu složité), může být jednodušší / rychlejší použít jiné méně časově citlivé způsoby komunikace mezi Arduino Unos nebo jinými Arduiny, například

Odpověď

Mám úplně stejný problém! Pro ladění jsem používal desku Arduino Uno s Jtag ICE mkii, což fungovalo dobře. Když jsem začal používat UART, byl to těžký nepořádek. Přenos z Arduina na externí adaptér TTL-USB fungoval, ale ne v opačném směru. Hrál jsem hodiny, než jsem viděl toto vlákno, a to mi dalo nápad podívat se do shematic – > Bang! Viděl jsem dva odpory. Poučení: Nepoužívejte hardware Arduino bez zbylých nástrojů! Myslel jsem, že je dobrý nápad použít hardware pro rychlý vývoj. Nyní mě to stojí víc času, než jsem si myslel …

Odpověď

Neměli byste spojovat dva TX piny dohromady. Arduino má několik ochranných rezistorů, ale ani se nedoporučuje připojit dva výstupní piny.

Jediným způsobem, jak ušetřit přímé použití pinů RX / TX, je odstranění ochranných rezistorů (RN4A a RN4B v referenčním provedení) ) nebo alespoň RN4A a používat pouze jedno připojení najednou. Nepomáhá, pokud nepoužíváte připojení k PC, nebo neotevře Serial Monitor, protože piny jsou stále výstupem.

(Více pinů RX není problém, protože jsou vstupy)

(A samozřejmě vím, že by to většinu času mohlo fungovat společně s více piny TX, ale doporučil bych to)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *