Anta att en kopplade två av Arduino Uno-kort via Rx- och Tx-stift. Om ett eller båda Arduino-korten var anslutna till datorn och eventuellt öppnade seriella bildskärmar, fungerar Tx och Rx-stift fortfarande? dvs kommer Arduino fortfarande att kommunicera via Rx och Tx-stift när den kommunicerar till datorn? Om inte hur man får dem att fungera medan de ansluter till datorn?
Kommentarer
- USB FTDI-chipet är anslutet till TX / RX-stiften. Seriell fungerar kanske inte som du förväntar dig.
Svar
Antag att en kopplade två av Arduino Uno-kort genom Rx- och Tx-stift.
Jag antar att du kommer att ansluta TX för en Arduino till RX för den andra och vice versa, vilket är rätt sätt att ansluta dem. Som TheSealion förklarade i sitt svar, borde du inte ansluta två TX-pins tillsammans.
om en eller båda Arduino-korten var anslutna till datorn och möjligen öppnade seriella bildskärmar
Om du gör det kommer Arduino inte ens märka det.
Tja, för att vara mer exakt … det finns ett litet chip på Uno, nea r USB-kontakten, märkt ”MEGA16U2”. Detta chip används som en USB / seriell omvandlare, och det kommer att märka när du ansluter USB-länken och när du öppnar porten. Huvudchipet (den stora PDIP28), som är mikrokontrollern som kör din skiss, kommer dock inte att känna till eller bry sig.
kommer Tx och Rx pin arbetar du fortfarande?
Absolut.
Kommer Arduino fortfarande att kommunicera via Rx och Tx-stift när den kommunicerar till datorn?
RX kommunicerar inte med datorn. Vad som händer är:
- Oavsett vad din Arduino skriver till sin seriella port kommer både den andra Arduino och den seriella bildskärmen att tas emot.
- Vad du än skickar via den seriella bildskärmen går förlorad.
- När du
Serial.read()
får du vad som var inställt av den andra Arduino.
Orsaken till detta beteende är en 1 kΩ-motstånd som sitter mellan Mega16U2″ s TX och huvudmikrokontrollerns RX. När du ansluter denna RX till den andra Arduino ”s TX, som har låg impedans (≈ 2 5 Ω), att TX kommer att ”vinna”: en lågimpedansutgång överväger en högimpedans.
Svar
hur [två Arduinos kommunicerar med varandra] fungerar medan de ansluter till datorn?
Det finns en mängd olika sätt för två Arduinos att kommunicera direkt med varandra medan en eller båda kommunicerar med seriell bildskärm på en bärbar dator via USB.
-
Använd en UART för Arduinos för att kommunicera som är oberoende av USB-anslutningen. (Se https://www.arduino.cc/reference/en/language/functions/communication/serial/ )
- Flera Arduino-kompatibla kort som Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2 etc. har fyra UART-hårdvaror; stiften på Serial1 (notera ”1”) kan användas för att kommunicera med en annan Arduino utan att störa Serial (utan ”1”) UART-kommunikation via USB till en bärbar dator. (Ack, Arduino Uno har bara 1 hårdvara UART).
- De ATmega32u4-baserade Arduino Micro- och Arduino Leonardo- och ATmega32u4-baserade Arduino-derivaten som FLORA och många av de ARM-baserade Arduino-derivaten som Teensy-serien har ett USB-gränssnitt som inte använder någon av UART-stiften, så stiften på Serial1 (notera ”1”) kan användas för att kommunicera med en annan Arduino utan att störa Serial (utan ”1”) icke-UART-kommunikation via USB till en bärbar dator. , Arduino Uno har ett USB-gränssnitt som använder sina enda hårdvaru-UART-stift).
- Även Arduino Uno, som bara har 1 hårdvaru-UART vars stift är hårt anslutna till USB-gränssnittschipet kan smälla en långsam simulering av en UART på andra stift. Se Vad ' är skillnaden mellan alla programseriens bibliotek? Vilket är Arduino Nano-kompatibelt? .
-
I stället för att försöka simulera en UART i programvara (tidpunkten är lite knepig) kan det vara lättare / snabbare att använda andra mindre tidskänsliga sätt att kommunicera mellan Arduino Unos eller andra Arduinos, såsom
- SPI mellan 2 Arduinos (a) ; (b)
- I2C mellan två Arduinos (a) (b)
- PJON mellan två Arduinos
- några asynkron kommunikation protokoll har inga beroendeförhållanden alls
- etc.
Svar
Jag fick exakt samma problem! Jag använde Arduino Uno-kortet med en Jtag ICE mkii för felsökning som fungerade bra. När jag började använda UART var det en tung röra. Sändningen från Arduino till en extern TTL-USB-adapter fungerade men inte i andra riktningen. Jag spelade timmar innan jag såg den här tråden och det gav mig idén att titta på det schematiska – > Bang! Jag såg de två motstånden. Lärdom: Använd inte Arduino-hårdvaran utan resten av verktygen! Trodde att det var en bra idé att använda hårdvaran för snabb utveckling. Nu kostar det mer tid som jag tänkte …
Svar
Du borde inte ansluta två TX-pins tillsammans. Arduino har vissa skyddsmotstånd men även det rekommenderas inte att ansluta två utgångsstift.
Det enda spara sättet att använda RX / TX-stiften direkt är att ta bort skyddsmotstånden (RN4A och RN4B i referensutformningen ) eller åtminstone RN4A och använd bara en anslutning åt gången. Det hjälper inte om du inte använder PC-anslutningen eller inte öppnar Serial Monitor eftersom stiften fortfarande är en utgång.
(Flera RX-stift är inga problem eftersom de är ingångar)
(Och naturligtvis vet jag att det kan fungera med flera TX-stift tillsammans för det mesta, men jag skulle rekommendera det)