Alimentazione e comunicazione seriale tra un Arduino e altri 4?

Problema:
Ciao a tutti! per il mio progetto ho bisogno di utilizzare un Arduino per alimentarne altri 4 in parallelo, allo stesso tempo mi servirebbe poter comunicare con ognuno degli Arduino (comunicazione seriale rx-tx) e con il computer USB o Bluetooth). Al momento sto utilizzando un Arduino Mega, il quale ha 4 vie di comunicazione, dove una di queste è utilizzata dalla comunicazione con il computer.

Domande:

  1. come posso fare per ottenere 5 vie di comunicazione contemporaneamente 4 con gli Arduino ed una con il computer? Devo costruirmi il mio microcontroller personale? 2) avete idea di quanto mi consterebbe farlo progettare a qualcuno secondo le mie esigenze? 3) Quanti arduino (senza sensori o attuatori) possono essere connessi ad un solo Arduino?

Scusa per le domande:
So di aver fatto molte domande e anche un po' vaghe, ma al momento mi servirebbe una direzione generale, sarei grato se rispondeste con la vostra opinione anche a solo una di queste, che ho numerato per vostra comodità, grazie! :slight_smile:

Provo a rispondere anche se non sono ferratissimo...

  1. puoi usare la softwareSerial
  2. una cifra se non è tuo cugino
  3. cosa intendi? non puoi alimentare un arduino usando un altro arduino. puoi collegare quello che vuoi finché hai pin liberi

Grazie mille! mi sto documentando adesso per provare softwareSerial come mi hai suggerito, sembra proprio quello che stavo cercando.
Riguardo al cugino non ce l'ho, ma ho un conoscente, vedrò se mi potrà aiutare.
Riguardo all'ultima domanda che ho chiesto, le mie reminiscenze di fisica dalle superiori non sono il massimo, questo è quello che avevo in testa nel fare la domanda: Arduino è alimentato da un voltaggio di 5v dal computer, se deve alimentare a sua volta altri 4 Arduino in parallelo, allora significa che questo voltaggio si dividerà alimentando per 1,25v ogni Arduino, il che potrebbe non essere abbastanza. Scusa nel caso avessi offeso lo stesso concetto di "fisica" con questo dubbio xD

Allora... intanto per alimentare 5 arduino in parallelo dal pc vuol dire che hai un cavo usb che esce dal pc con 5 spinotti che colleghi ciascuno ad un arduino.
Se pensavi di collegare un arduino al pc con cavo usb e di alimentare gli altri 4 prendendo i 5V dal pin 5V di arduino NON puoi. In parallelo non dividi la tensione, che rimane sempre 5V. Vai a sommare le correnti, che supererebbero il massimo che il pin 5V può dare.
Quindi devi alimentare i 5 arduino con 5 fonti di alimentazione (o anche un'unica fonte che eroghi abbastanza corrente per tutti).

Capisco, fino ad adesso ho connesso due Arduino Nano per prova ed effettivamente la connessione diventa poco stabile, probabilmente per il deficit di energia. Penso allora che dovrò collegare delle batterie, grazie ancora!

Separa i due problemi

Alimentare gli arduino

E connettere tra loro tanti arduino

Si possono risolvere entrambi, in tante maniere

Spiega cosa vuoi fare e troviamo come farlo il meglio

fratt:
collegare un arduino al pc con cavo usb e di alimentare gli altri 4 prendendo i 5V dal pin 5V di arduino NON puoi.

Perché? Ogni Arduino assorbirà circa 20mA, fanno 100mA totali che la USB può fornire tranquillamente. Fossero anche 40mA sarebbero sempre solo 200mA.

Per quanto riguarda la software serial ci sono grosse limitazioni sia sulla velocità che sulla contemporaneità, potrebbe andare bene come no a seconda del caso specifico.

Sarebbe interessante sapere se quelle comunicazioni devono realmente essere contemporanee e indipendenti (complessità hardware massima) oppure se un'architettura master-slave su bus seriale unico sarebbe ugualmente valida (sempre per il caso specifico) e allora di seriale ne basta una sola per fare tutto.

871654.png

871654.png

Claudio_FF:
Perché? Ogni Arduino assorbirà circa 20mA, fanno 100mA totali che la USB può fornire tranquillamente. Fossero anche 40mA sarebbero sempre solo 200mA.

Claudio, sei indubbiamente più preparato di me, quindi non mi permetto di contestare questa affermazione.
In ogni caso, secondo me non è una grande idea usare il pin 5V di un arduino per alimentarne un altro (o più di uno). Per questo ho sconsigliato la cosa.

Se sono vicini tali da poter essere considerati un circuito unico non ci sono problemi, il terminale 5V sono i 5V dell'USB.

Se sono distanti invece questa alimentazione "prolungata" può essere sensibile a disturbi.

Altro caso, se il primo Arduino viene alimentato da jack, Vin, o equivalente, allora assorbire troppa corrente dal 5V potrebbe surriscaldare il regolatore 5V.

Siamo sempre lì

Se lo OP non specifica cosa vuole fare non possiamo consigliargli come farlo

Riguardo ai 5 arduino vicini
Ammetto che se fossero vicini potrebbero condividere l'alimentazione
Ma potrei anche usare un solo mega invece di tanti uno

Come ho detto: soluzioni ne esistono tante
È il problema che è unico, e che non conosciamo

Ma se gli Arduino sono vicini (quanto vicini?) non ha più senso un bus i2c?

Se sono lontani, una seriale software o hardware che sia con livelli di tensione TTL è comunque una pezza che porta più problemi che vantaggi, a quel punto meglio passare direttamente all'interfaccia RS485 secondo me.

Grazie mille per l'attenzione che mi state dando, e scusate per il ritardo (spero il sito vi mandi una notifica), come richiesto intendo fornire ulteriori informazioni.

COMUNICAZIONE:

Sto cercando di realizzare un prodotto modulare dove un modulo Arduino Mega comunica con il computer, e gli altri Arduino Nano comunicano con il Mega, sempre, per mandare informazioni al computer. Non sono coinvolti attuatori nel processo.

Il risultato che voglio ottenere non è dissimile nella logica di funzionamento dal prodotto chiamato Palette Gear.

immagine 1 (Edit: per qualche motivo questa immagine non ho potuto caricarla, in ogni caso vi chiederei di fare una breve ricerca su google, grazie!)

Dopo varie ricerche, diverso tempo fa ho deciso di utilizzare la comunicazione seriale, ma adesso che illustro nel dettaglio l'hardware che voglio ottenere mi potrete dire se sbaglio, o almeno se sia possibile portare a termine il mio proposito con la comunicazione seriale che attualmente utilizzo.

immagine 2

I moduli rossi rappresentano una futura implementazione quando mi sentirò a mio aggio con la prima configurazione a "croce greca", in ogni caso vorrei tenere la porta aperta verso future comunicazioni tra Arduino Mega e i moduli che vi sono connessi indirettamente (moduli in rosso appunto).

Il compito dei moduli è dunque far pervenire ad Arduino Mega le seguenti informazioni:

  • Tipologia e posizione di ogni modulo rispetto agli altri (anche l'orientamento delle quattro facce del quadrato)
  • Far pervenire assieme agli input dei moduli, la loro provenienza, tra gli 8 slots quadrati intorno ad Arduino Mega.

ALIMENTAZIONE:

I motivi per i quali preferisco utilizzare l'Arduino centrale per alimentare gli altri sono i seguenti:

  • le batterie e la loro dimensione influenzerebbero il design del prodotto finale e ne aumenterebbero il prezzo
  • Dovrei sostituire le batterie per ogni modulo
  • Dovrei implementare uno scomodo sistema di accensione e spegnimento per ognuno dei moduli, mentre sarebbe più intuitivo connetterli e disconnetterli alla fonte di energia per attivarli e disattivarli.

HARDWARE:

Utilizzo dei pogo pin magnetici (come l'alimentatore del Mac Book Pro 2015 che sto utilizzando) così che i moduli si connettano facilmente tra di loro: al momento (per il sistema a croce greca) utilizzo 4 pin, 2 per GND e Vin e due per la comunicazione seriale, so che in futuro avrò bisogno di riprogettare l'hardware per far funzionare la comunicazione ma per adesso mi va bene così.

CODICE:
Per quanto riguarda il codice, sono riuscito ad ottenere di riconoscere una connessione hardware tra Arduino Mega e un Arduino Nano, e ottenere le informazioni descritte sopra (quale lato e che tipo di modulo è stato connesso).
Una parte del codice identifica quale dei 4 lati sta ricevendo informazioni tramite una connessione, per poi ricevere informazioni dal modulo connesso riguardo alla sua tipologia ed alla sua attivazione. Se manteniamo la connessione seriale non dovrei avere problemi su questo fronte.

Ecco queste sono le informazioni su quello che sto cercando di ottenere, ho diviso i vari problemi ed almeno che non sia intrinsecamente necessario, preferirei che ogni soluzione proposta non fosse troppo distruttiva del quadro mostrato, ma si limitasse, a darmi delle efficaci dritte.

Grazie a chi deciderà di spendere il suo tempo nel rispondere a questo post :slight_smile:

Standardoil:
Ecco fatto spero ci sia tutto, tutto tranne il codice che non credo sia necessario, e c comunque potrebbe essere riscritto a seconda della configurazione hardware proposta.

Claudio:
Credo che in questo caso (considerando le informazioni necessarie al Mega) ci stiamo riferendo a comunicazioni indipendenti e quindi alla spaventosa "complessità massima" della comunicazione seriale, giusto?

Constestant:
Mi informerò su cosa sia l'interfaccia RS485, in caso leggessi questo update, fammi sapere se ritieni il metodo ancora valido!

ho provato ad usare la funzione quote al termine del post ma non ha funzionato... visto che non voglio incasinare la formattazione del mio post per questa volta lo tengo così, in futuro comincerò con il quotare.

Io continuo a ritenere la connessione i2c o comunque un bus master/slave multidevice la soluzione migliore.
Cosi stai reinventando la ruota facendo via software quello che potresti ottenere via hardware (addressing, polling, crc etc etc).

Grazie! cercherò ognuna delle parole chiave e magari mi ripasserò I2C per meglio capire in cosa mi sto imbattendo.

cotestatnt:
Io continuo a ritenere la connessione i2c o comunque un bus master/slave multidevice la soluzione migliore.
Cosi stai reinventando la ruota facendo via software quello che potresti ottenere via hardware (addressing, polling, crc etc etc).

banshee119:
cercherò ognuna delle parole chiave

Se le premesse sono queste, tieni in considerazione che la strada da percorrere sarà lunga :wink:

Ma non ti scoraggiare! Affronta un pezzo per volta a cominciare da come funziona il protocollo i2c sia dal punto di vista "sistemistico"/software che da quello elettrico e vedrai che i risultati arrivano.

Tra l'altro sarebbe da capire se le unità sono singolarmente caratterizzate, e quindi la posizione è ininfluente, o se la posizione invece determina la loro funzione, e qui è molto più complesso.

cotestatnt:
Se le premesse sono queste, tieni in considerazione che la strada da percorrere sarà lunga :wink:

Ma non ti scoraggiare! Affronta un pezzo per volta a cominciare da come funziona il protocollo i2c sia dal punto di vista "sistemistico"/software che da quello elettrico e vedrai che i risultati arrivano.

Molto incoraggiante xD
Scherzo, grazie per il supporto!

Claudio_FF:
Tra l'altro sarebbe da capire se le unità sono singolarmente caratterizzate, e quindi la posizione è ininfluente, o se la posizione invece determina la loro funzione, e qui è molto più complesso.

Ogni modulo è caratterizzato dalla sua tipologia, ma ha anche una direzione, verso e posizione tra gli slot della matrice. Tutte queste informazioni devono giungere al modulo centrale. In sostanza il computer deve sapere esattamente la configurazione di elementi e le lore posizione nell'ambiente fisico. Ti riporto una parte del mio post precedente che potrebbe esserti sfuggita, altrimenti fammi sapere se non dovessi aver capito.

banshee119:
COMUNICAZIONE:

Sto cercando di realizzare un prodotto modulare dove un modulo Arduino Mega comunica con il computer, e gli altri Arduino Nano comunicano con il Mega, sempre, per mandare informazioni al computer. Non sono coinvolti attuatori nel processo.

Il risultato che voglio ottenere non è dissimile nella logica di funzionamento dal prodotto chiamato Palette Gear.

immagine 1 (Edit: per qualche motivo questa immagine non ho potuto caricarla, in ogni caso vi chiederei di fare una breve ricerca su google, grazie!)

Dopo varie ricerche, diverso tempo fa ho deciso di utilizzare la comunicazione seriale, ma adesso che illustro nel dettaglio l'hardware che voglio ottenere mi potrete dire se sbaglio, o almeno se sia possibile portare a termine il mio proposito con la comunicazione seriale che attualmente utilizzo.

immagine 2

I moduli rossi rappresentano una futura implementazione quando mi sentirò a mio aggio con la prima configurazione a "croce greca", in ogni caso vorrei tenere la porta aperta verso future comunicazioni tra Arduino Mega e i moduli che vi sono connessi indirettamente (moduli in rosso appunto).

Il compito dei moduli è dunque far pervenire ad Arduino Mega le seguenti informazioni:

  • Tipologia e posizione di ogni modulo rispetto agli altri (anche l'orientamento delle quattro facce del quadrato)
  • Far pervenire assieme agli input dei moduli, la loro provenienza, tra gli 8 slots quadrati intorno ad Arduino Mega.

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