Tegyük fel, hogy az egyik az Arduino Uno táblák közül kettőt Rx és Tx csapokon keresztül csatlakoztatott. Akkor, ha az Arduino egyik vagy mindkét lapja számítógéphez csatlakozik, és esetleg kinyitja a soros monitorokat, akkor a Tx és az Rx pin továbbra is működni fog? azaz az Arduino továbbra is kommunikálni fog Rx és Tx pin-en keresztül, amikor kommunikál a számítógéppel? Ha nem, hogyan kell őket működésbe hozni, miközben csatlakozunk a számítógéphez?
Válasz
Tegyük fel, hogy az egyik az Arduino Uno táblák közül kettőt Rx és Tx csapokon keresztül csatlakoztatott.
Feltételezem, hogy az egyik Arduino TX-jét összekapcsolja a másik RX-jével, és fordítva, ami a helyes módja azok összekapcsolásának. Amint a TheSealion válaszában kifejtette, nem szabad két TX-csapot összekötni.
ha az Arduino alaplapok egyike vagy mindkettő csatlakoztatva volt a számítógéphez, és esetleg megnyíltak a soros monitorok
Ha ezt megteszi, az Arduino észre sem veszi.
Nos, hogy pontosabb legyek … van egy kis chip az Uno-n, nea r az „MEGA16U2” feliratú USB-csatlakozót. Ezt a chipet USB / soros átalakítóként használják, és észre fogja venni, amikor csatlakoztatja az USB-kapcsolatot, és amikor megnyitja a portot. A fő chip (a nagy PDIP28), amely a vázlatot futtató mikrovezérlő, nem fogja tudni és nem fogja érdekelni.
Tx és Rx rögzíteni fogja még mindig működik?
Teljesen.
az Arduino továbbra is kommunikálni fog Rx-en keresztül és a Tx pin, amikor kommunikál a számítógéppel?
Az RX nem fog kommunikálni a számítógéppel. Mi fog történni:
- Bármit is ír az Arduino a soros portjára, a másik Arduino és a soros monitor is megkapja.
- Bármit is küld a soros monitoron, elveszik.
- Ha
Serial.read()
, akkor megkapja, amit a másik Arduino állított be.
Ennek a viselkedésnek az oka egy kΩ ellenállás, amely a Mega16U2″ TX és a fő mikrokontroller RX között helyezkedik el. Amikor ezt az RX-t a másik Arduino TX-hez csatlakoztatja, amelynek impedanciája alacsony (≈ 2 5 Ω), akkor a TX „győzni fog”: az alacsony impedanciájú kimenet felülmúlja a nagy impedanciát.
Válasz
hogyan lehet [két egymással kommunikáló Arduinót] működtetni, miközben csatlakozik a számítógéphez?
Számos módja van annak, hogy 2 Arduino közvetlenül kommunikáljon egymással, miközben egyikük vagy mindkettő USB-n keresztül kommunikál egy laptop számítógép soros monitorjával.
-
Használjon UART-t az Arduinos számára az USB-kapcsolattól független kommunikációhoz. (Lásd: https://www.arduino.cc/reference/en/language/functions/communication/serial/ )
- Számos Arduino-kompatibilis tábla, például az Arduino A Mega 2560, az Arduino Due, az Arduino Uno Wifi Rev.2 stb. 4 hardveres UART-mal rendelkezik; a Serial1 csapjait (vegye figyelembe az “1” -t) fel lehetne használni arra, hogy kommunikáljon egy másik Arduinóval anélkül, hogy zavarja a Serial (“” 1 “nélküli) UART kommunikációt USB-n keresztül egy laptopon. (Jaj, az Arduino Uno-nak csak 1 hardveres UART-ja van).
- Az ATmega32u4 alapú Arduino Micro és Arduino Leonardo és ATmega32u4 alapú Arduino származékok, például FLORA és számos ARM-alapú Arduino-származék, például a Teensy sorozat rendelkezik USB-interfésszel, amely nem használ semmilyen az UART tűk közül; így a Serial1 csapjai (vegye figyelembe az “1” -t) arra használhatók, hogy más Arduinóval kommunikáljanak, anélkül, hogy zavarnák a soros (“1” nélküli) nem UART kommunikációt USB-n keresztül egy laptopon. (Jaj) , az Arduino Uno rendelkezik USB-interfésszel, amely csak az egyetlen hardveres UART-csapot használja).
- Még az Arduino Uno-t is, amelynek csak 1 hardveres UART-ja van, amelynek csapjai vezetékes Az USB interfész chip bit-bumm-os lehet az UART lassú szimulációjával más csapokon. Lásd: Mi a ' s az összes különbség a szoftver soros könyvtárak? Melyik kompatibilis az Arduino Nano-val? .
-
Ahelyett, hogy megpróbálná szimulálni az UART-ot a szoftverben (az időzítés meglehetősen trükkös), könnyebb / gyorsabb lehet más kevésbé időérzékenyeket használni az Arduino Unos vagy más Arduinos közötti kommunikáció módjai, például
- SPI 2 Arduinos között (a) ; (b)
- I2C 2 Arduinos között (a) (b)
- PJON 2 Arduinos között
- néhány aszinkron kommunikációs protokollnak egyáltalán nincsenek időzítési függőségei
- stb.
Válasz
Pont ugyanezt a problémát kaptam! Az Arduino Uno táblát egy Jtag ICE mkii-vel használtam a hibakereséshez, ami nagyon jól sikerült. Ahogy elkezdtem használni az UART-ot, súlyos rendetlenség volt. Az Arduinóról egy külső TTL-USB adapterre történő továbbítás működött, de nem a másik irányba. Órákkal játszottam, mielőtt megláttam ezt a szálat, és ez adta az ötletet, hogy belenézzek a sematikus – > Bang! Láttam a két ellenállást. Tanulság: Ne használja az Arduino hardvert a többi eszköz nélkül! Úgy gondoltam, hogy jó ötlet a hardver gyors fejlesztéséhez használni. Most több időbe kerül, mint gondoltam …
Válasz
Nem szabad két TX csapot összekapcsolnia. Az Arduino rendelkezik néhány védelmi ellenállással, de még akkor sem ajánlott két kimeneti csapot csatlakoztatni.
Az RX / TX érintkezők közvetlen használatának egyetlen mentési módja a védelmi ellenállások eltávolítása (a referenciatervben RN4A és RN4B ) vagy legalább az RN4A-t, és egyszerre csak egy kapcsolatot használjon. Nem segít, ha nem használja a számítógépes kapcsolatot, vagy nem nyitja meg a soros monitort, mivel a csapok továbbra is kimenet.
(A többszörös RX csapok nem jelentenek problémát, mivel ezek inputok)
(És természetesen tudom, hogy több TX pólussal együtt működhet a legtöbbször, de ajánlom)