Oggi capitata una cosa strana:
Arduino nano con lettore tessere RFID ed un Arduino Mega collegati tramite software serial, il nano passa il codice della tessera rfid al mega.
Provato su banco e tutto è ok.
Per verificare se riesco a trasmettere su un cavo lungo (7 - 9 metri credo), porto il nano sul terrazzo, tiro un cavo (cavo di rete CAT5).
Collego prima i pin 11 e 12 sul Mega (softwareserial) ed un cavetto al GND in quanto i due Arduino hanno alimentazioni separate.
Vado sul terrazzo, collego i due cavetti ai pin 7,8 del Nano (invertendo TX->RX e RX->TX e poi collego il cavetto del GND al GND del Nano. Si accende!!! E viene alimentata anche la schedina RFID ad esso collegata!!!
Stacco immediatamente il cavetto del GND, collego l'alimentatore USB ed alimento il Nano (viene alimentata anche la schedina rfid). Collego il cavetto GND e faccio qualche test di lettura tessere. Il tutto va a buon fine. Leggo i codici tessera sul serial monitor del Mega.
Ma la domanda è: come è possibile che sia stato alimentato il Nano collegando i due pin 7 e 8 (collegati a loro volta ai pin 11 e 12 del Mega e collegando il cavo al gnd dei due arduino? Non ho fatto prove di funzionamento ma ho staccato tutto subito.
Idee?
Ps: Scusate per il titolo ma non saprei cosa scrivere.
Cosa da non fare mai quella di fare collegamenti con tra un oggetto alimentato ed uno non alimentato ... si rischiano danni. I collegamenti si fanno con tutto non alimentato e poi si accende l'alimentazione, comunque ...
... le porte seriali di Arduino sono "seriali TTL" quindi, a riposo il pin TX è tenuto a +5V ... quando tu lo hai collegato al pin RX, tramite i vari componenti interni, hai comunque portato i +5V e, collegando il GND, in qualche modo hai fornito alimentazione alla MCU ...
Probabilmente è lo stesso ma ho utilizzato softwareserial e quindi non porte seriali hardware.
Avrei comunque avuto l'anomalia alimentando prima il Mega (con connessioni già effettuate) e poi il Nano.
Più che altro il "quasi spavento" nel vedere i led del Nano accendersi senza averlo alimentato (da usb)
Leggi anche l'altro thread di cui ti ho messo il link ... parla di pin di I/O digitali qualsiasi e comunque ... la SoftwareSerial simula una seriale e quindi il pin TX, a riposo, viene tenuto HIGH
Un piccolo esempio di "danno" facile da provocare ...
... prendere una striscia NeoPixel (WS8212) e, ad arduino alimentato, attacare il GND il pin DI e ... e no, ormai è tardi per il Vcc ... se si manda tensione sul DI con il GND attaccato, ma non il Vcc ... si distrugge il pin DI e la striscia non si accende più
Altri "danni" ad Arduino il trovi in QUESTO articolo
Letto adesso, grazie!
A questo punto, per stare tranquillo (i due Arduino sarebbero sempre collegati tra di loro ma potrei spegnerne uno per un aggiornamento o altro), mi conviene mettere due schedine RS485 in modo da irrobustire sicuramente la trasmissione ed evitare letture errate (che con i circa 10mt di cavo non ho comunque avuto). Queste dovrebbero "isolarmi" i pin dei due Arduino. Le schedine (RS485) le ho domani faccio una prova.
Ancora grazie mille!
Accade perché tutti i pin hanno sul chip due diodi di protezione: uno verso il positivo e l'altro da massa verso il pin. Una buona protezione potrebbero essere due diodi Sxhottky 1N5819 - RK14 - 1N5822 in parallelo ai diodi che stanno all'interno dell'integrato: avendo una tensione di soglia più bassa entrano in conduzione solo loro, evitando che si brucino quelli interni.
Era una board già piazzata e funzionante in un alto progetto ed i pin delle seriali hardware erano occupati.
Il mio era solo un test per verificarne il funzionamento della ricezione dati da rfid (via seriale) integrandolo nello sketch del mega già in funzione.
Nessun banale copia/incolla. Come detto a docdoc (rispondendo alla sua lecita domanda), si trattava di un test da effettuare su Mega già in funzione con i pin delle seriali hardware già occupate.
Tra l'altro, visto che la stessa problematica si avrebbe anche sui pin delle seriali hardware, non vedo il motivo di insinuare l'operato altrui. Sicuramene ritrovandoti a moderare un sacco di post, ti rendi conto di quanto si tenda a copiare senza capire il funzionamento di una cosa (vedi ad esempio anche video Youtube di "sedicenti divulgatori arduiniani" che dicono di collegare led alle uscite di arduino senza alcuna resistenza. Una volta feci notare l'errore e la risposta fu "beh, ma tanto funziona").
Nel mio caso giuro, l'utilizzo della SoftwareSerial è motivato
Capisco..
Però, scusami, se la board era una shield (visto che non puoi cambiare disposizione immagino sia una shield) ed era per Mega, la progettazione è stata diciamo poco oculata vista l'abbondanza di pin digitali. Io sulla Mega tendo ad allocarli a scendere dai pin più "alti" lasciando 14-19 liberi per ultimi per eventuali usi futuri.
Ma hai chiarito che non puoi, quindi ok, questione chiusa, scusami, era solo una mia curiosità.
Ma che dici? Scusa diche??? Ci mancherebbe!!! Hai solo espresso un tuo pensiero.
Per completezza, quella era una board gia' piazzata dove avendo a disposizione nelle immediate vicinanze una coppia di cavi mooolto lunghi (non utilizzati), mi e' stata comoda per testare la trasmissione seriale su lunga distanza (beh, per me 10 metri circa) tra l'altro passando in ambiente un poco disturbato (controsoffitto dove ci sono switching dei faretti, alimentazioni clima ecc.). Tutto qua. La mia precisazione, e piccolissimo risentimento non era affatto per te ma a chi ha associato il non utilizzo delle seraili hardware al fatto dei copia-incolla (ma come ho specificato ci puo' stare anche quel dubbio vedendo cosa si trova in giro sul web).
Comunque risolto con due convertitori rs485.