Să presupunem că una dintre cele două plăci Arduino Uno este conectată prin pinii Rx și Tx. Apoi, dacă una sau ambele plăci Arduino au fost conectate la computer și, eventual, au deschis monitoare seriale, pinul Tx și Rx vor funcționa în continuare? de exemplu, Arduino va comunica în continuare prin pinul Rx și Tx atunci când comunică cu computerul? Dacă nu cum să le faci să funcționeze în timp ce se conectează la computer?
Comentarii
- Cipul USB FTDI este conectat la pinii TX / RX. Astfel, serialul nu poate funcționa așa cum vă așteptați.
Răspuns
Să presupunem că una dintre cele două plăci Arduino Uno este conectată prin pinii Rx și Tx.
Presupun că veți conecta TX-ul unui Arduino la RX-ul celuilalt și invers, care este modalitatea corectă de a le conecta. După cum a explicat TheSealion în răspunsul său, nu ar trebui să conectați doi PIN-uri TX împreună.
dacă una sau ambele plăci Arduino au fost conectate la computer și, eventual, au deschis monitoare seriale
Dacă faceți asta, Arduino nu va fi nici măcar remarcat.
Ei bine, pentru a fi mai exacți … există un cip mic pe Uno, nea r conectorul USB, etichetat „MEGA16U2”. Acest cip este utilizat ca convertor USB / serial și va observa când conectați legătura USB și când deschideți portul. Cu toate acestea, cipul principal (marele PDIP28), care este microcontrolerul care rulează schița dvs., nu va ști și nici nu va avea grijă.
va fixa Tx și Rx încă mai funcționezi?
Absolut.
Arduino va comunica în continuare prin Rx și pinul Tx atunci când comunică cu computerul?
RX nu va comunica cu computerul. Ce se va întâmpla este:
- Indiferent ce scrie Arduino în portul său serial, acesta va fi primit atât de celălalt Arduino, cât și de monitorul serial.
- Orice lucru pe care îl trimiteți prin intermediul monitorului serial se va pierde.
- Când
Serial.read()
, veți obține orice a fost stabilit de celălalt Arduino.
Motivul acestui comportament este 1 rezistor kΩ care se află între TX-ul Mega16U2″ s și RX-ul principal al microcontrolerului. Când conectați acest RX la celălalt TX Arduino, care este cu impedanță scăzută (≈ 2 5 Ω), că TX va „câștiga”: o ieșire cu impedanță scăzută o copleșește pe una cu impedanță mare.
Răspuns
cum să faci [doi Arduino care comunică între ei] să funcționeze în timp ce te conectezi la computer?
Există o varietate de modalități prin care 2 Arduino comunică direct între ele, în timp ce unul sau ambii comunică cu monitorul serial al unui computer laptop prin USB.
-
Utilizați un UART pentru Arduino pentru a comunica independent de conexiunea USB. (Consultați https://www.arduino.cc/reference/en/language/functions/communication/serial/ )
- Mai multe plăci compatibile Arduino, cum ar fi Arduino Mega 2560, Arduino Due, Arduino Uno Wifi Rev.2 etc. au 4 UART hardware; pinii Serial1 (rețineți „1”) ar putea fi folosiți pentru a comunica cu un alt Arduino fără a interfera cu comunicarea Serial (fără un „1”) UART prin USB către un laptop. (Din păcate, Arduino Uno are doar 1 UART hardware).
- Derivatele Arduino Micro și Arduino Leonardo bazate pe ATmega32u4 și derivatele Arduino pe bază de ATmega32u4, cum ar fi FLORA și multe dintre derivatele Arduino bazate pe ARM, cum ar fi seria Teensy au o interfață USB care nu folosește niciunul pinii UART; deci pinii Serial1 (rețineți „1”) ar putea fi utilizați pentru a comunica cu un alt Arduino fără a interfera cu comunicarea Serial (fără un „1”) non-UART prin USB către un laptop. , Arduino Uno are o interfață USB care folosește singurele sale pini UART hardware).
- Chiar și Arduino Uno, care are doar 1 UART hardware ale cărui pini sunt conectați la cipul de interfață USB, poate face o simulare lentă a unui UART pe alți pini. Consultați Care este ' diferența dintre toate bibliotecile seriale software? Care dintre ele este compatibil Arduino Nano? .
-
În loc să încercați să simulați un UART în software (sincronizarea este destul de dificilă), poate fi mai ușor / mai rapid să utilizați altele mai puțin sensibile la timp modalități de comunicare între Arduino Unos sau alte Arduino, cum ar fi
- SPI între 2 Arduino (a) ; (b)
- I2C între 2 Arduino (a) (b)
- PJON între 2 Arduino
- câteva protocoale de comunicare asincronă nu au deloc dependențe de sincronizare
- etc.
Răspuns
Am exact aceeași problemă! Foloseam placa Arduino Uno cu un Jtag ICE mkii pentru depanare care funcționa bine. Când am început să folosesc UART, a fost o mizerie grea. Transmiterea de la Arduino la un adaptor extern TTL-USB funcționa, dar nu în cealaltă direcție. Am jucat cu câteva ore înainte să văd acest fir și asta mi-a dat ideea să mă uit în tematică – > Bang! Am văzut cele două rezistențe. Lecție învățată: Nu utilizați hardware-ul Arduino fără restul instrumentelor! Mi s-a părut o idee bună să folosiți hardware-ul pentru o dezvoltare rapidă. Acum mă costă mai mult timp pe care l-am crezut …
Răspunde
Nu ar trebui să conectezi doi pini TX împreună. Arduino are unele rezistențe de protecție, dar nici nu este recomandat să conectați doi pini de ieșire.
Singura modalitate de salvare a utilizării direct a pinilor RX / TX este eliminarea rezistențelor de protecție (RN4A și RN4B în designul de referință ) sau cel puțin RN4A și utilizați o singură conexiune la un moment dat. Nu vă ajută dacă nu utilizați conexiunea PC sau nu deschideți monitorul serial, deoarece pinii sunt încă o ieșire.
(Pini RX multipli nu sunt o problemă, deoarece sunt intrări)
(Și, desigur, știu că ar putea funcționa împreună cu mai mulți pini TX împreună de cele mai multe ori, dar aș recomanda-l)