Anta at en koblet to av Arduino Uno-kortene gjennom Rx- og Tx-pinner. Så hvis en eller begge Arduino-kortene var koblet til datamaskinen og muligens åpnet serielle skjermer, vil Tx og Rx pin fortsatt fungere? vil Arduino fremdeles kommunisere gjennom Rx og Tx pin når den kommuniserer til datamaskinen? Hvis ikke hvordan du får dem til å fungere mens de kobles til datamaskinen?
Kommentarer
- USB FTDI-brikken er koblet til TX / RX-pinnene. Seriell fungerer kanskje ikke slik du forventer.
Svar
Anta at en koblet to av Arduino Uno-kortene gjennom Rx- og Tx-pinner.
Jeg antar at du vil koble TX av den ene Arduino til RX for den andre og omvendt, som er den rette måten å koble dem på. Som TheSealion forklarte i svaret hans, bør du ikke koble to TX Pins sammen.
hvis ett eller begge Arduino-kortene var koblet til datamaskinen, og muligens åpnet serielle skjermer
Hvis du gjør det, vil ikke Arduino legge merke til det.
Vel, for å være mer nøyaktig … det er en liten brikke på Uno, nea r USB-kontakten, merket “MEGA16U2”. Denne brikken brukes som en USB / seriell omformer, og den vil legge merke til når du kobler til USB-lenken og når du åpner porten. Imidlertid vil hovedbrikken (den store PDIP28), som er mikrokontrolleren som kjører skissen din, verken vite eller bry seg.
vil Tx og Rx pin jobber du fremdeles?
Absolutt.
vil Arduino fremdeles kommunisere gjennom Rx og Tx-pin når den kommuniserer til datamaskinen?
RX vil ikke kommunisere med datamaskinen. Hva som vil skje er:
- Uansett hva Arduino skriver til den serielle porten, vil den mottas av både den andre Arduino og den serielle skjermen.
- Uansett hva du sender gjennom den serielle skjermen, vil du gå tapt.
- Når du
Serial.read()
, får du det som ble satt av den andre Arduinoen.
Årsaken til denne oppførselen er en 1 kΩ motstand som sitter mellom Mega16U2″ s TX og hovedmikrokontrollers RX. Når du kobler denne RX til den andre Arduino «s TX, som har lav impedans (≈ 2 5 Ω), at TX vil «vinne»: en lavimpedansutgang overvelder en høyimpedans.
Svar
hvordan får [to Arduinos til å kommunisere med hverandre] til å fungere mens de kobles til datamaskinen?
Det finnes en rekke måter for to Arduinos å kommunisere direkte med hverandre mens en eller begge kommuniserer med Serial Monitor på en bærbar datamaskin via USB.
-
Bruk en UART for Arduinos til å kommunisere som er uavhengig av USB-tilkoblingen. (Se https://www.arduino.cc/reference/en/language/functions/communication/serial/ )
- Flere Arduino-kompatible tavler som Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2, etc. har 4 UART-maskiner; pinnene til Serial1 (merk «1») kan brukes til å kommunisere med en annen Arduino uten å forstyrre Serial (uten «1») UART-kommunikasjon over USB til en bærbar datamaskin. (Alas, Arduino Uno har bare 1 UART-maskinvare).
- De ATmega32u4-baserte Arduino Micro- og Arduino Leonardo- og ATmega32u4-baserte Arduino-derivatene som FLORA og mange av de ARM-baserte Arduino-derivatene som Teensy-serien har et USB-grensesnitt som ikke bruker noen av UART-pinnene, slik at pinnene til Serial1 (merk «1») kan brukes til å kommunisere med en annen Arduino uten å forstyrre Serial (uten «1») ikke-UART-kommunikasjon over USB til en bærbar datamaskin. (Alas , Arduino Uno har et USB-grensesnitt som ikke bruker den eneste maskinvaren UART-pinner).
- Selv Arduino Uno, som bare har 1 UART-maskinvare hvis pinner er hardt koblet til USB-grensesnittbrikken, kan slå en langsom simulering av en UART på andre pinner. Se Hva ' er forskjellen mellom alle programvarens serielle biblioteker? Hvilken er Arduino Nano-kompatibel? .
-
I stedet for å prøve å simulere en UART i programvare (timingen er litt vanskelig), kan det være lettere / raskere å bruke andre mindre tidssensitive måter å kommunisere mellom Arduino Unos eller andre Arduinos, som
- SPI mellom 2 Arduinos (a) ; (b)
- I2C mellom 2 Arduinos (a) (b)
- PJON mellom 2 Arduinos
- noen asynkron kommunikasjon protokoller har ingen timingavhengigheter i det hele tatt
- etc.
Svar
Jeg fikk akkurat det samme problemet! Jeg brukte Arduino Uno-kortet med en Jtag ICE mkii for feilsøking som fungerte bra. Da jeg begynte å bruke UART, var det et tungt rot. Overføringen fra Arduino til en ekstern TTL-USB-adapter fungerte, men ikke i den andre retningen. Jeg spilte timer før jeg så denne tråden, og det ga meg ideen til å se på skjematikken – > Bang! Jeg så de to motstandene. Leksjon: Ikke bruk Arduino-maskinvaren uten resten av verktøyene! Trodde det var en god idé å bruke maskinvaren for rask utvikling. Nå koster det meg mer tid at jeg trodde …
Svar
Du bør ikke koble to TX-pins sammen. Arduino har noen beskyttelsesmotstander, men til og med anbefales det ikke å koble til to utgangspinner.
Den eneste spare måten å bruke RX / TX-pinnene direkte på er å fjerne beskyttelsesmotstandene (RN4A og RN4B i referanseutformingen ) eller i det minste RN4A og bare bruke en tilkobling om gangen. Det hjelper ikke hvis du ikke bruker PC-tilkoblingen eller ikke åpner Serial Monitor siden pinnene fremdeles er en utgang.
(Flere RX-pinner er ikke noe problem siden de er innganger)
(Og selvfølgelig vet jeg at det kan fungere med flere TX-pinner sammen det meste av tiden, men jeg vil anbefale det)