Arduino alimentato da softwareserial? Stranissimo!

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 ... :roll_eyes:

Guglielmo

Toh .. leggi anche QUI ... :roll_eyes:

Guglielmo

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) :slight_smile:

Grazi per la risposta Guglielmo

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 :wink:

Guglielmo

In tal caso, alimenti prima entrambi e poi colleghi le seriali che ... trovano le MCU già alimentate :wink:

Come sempre ... occhio solo a non fare strani contatti e a non provocare corti ...

Guglielmo

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ù :frowning:

Altri "danni" ad Arduino il trovi in QUESTO articolo :wink:

Guglielmo

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.

Scusa la curiosità, ma con tutte le UART che ha il Mega, perché usi SoftwareSerial?

... me lo chiedo tutte le volte pure io ... purtroppo credo sia conseguenza di ... copia/incolla senza prestare troppa attenzione :roll_eyes:

Guglielmo

...perché il codice non si può trasportare a occhi chiusi da un microcontrollore a un altro, non c'è niente da fare! Bisogna sapere ciò che si fa! :slight_smile:

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 :nerd_face:

1 Like

Capisco..:wink:
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. :sunglasses:
Ma hai chiarito che non puoi, quindi ok, questione chiusa, scusami, era solo una mia curiosità. :wink:

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.

1 Like

Guarda che io ho detto:

... con il beneficio del dubbio, ma considerando che è cosa che capita nel 95% dei casi :roll_eyes:

Guglielmo

2 Likes

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.