Domanda:
Possono 50 Arduino essere collegati a margherita?
Mudzify
2016-06-13 15:15:42 UTC
view on stackexchange narkive permalink

Ho più utenti su postazioni (50), ciascuno con una piccola tastiera per l'input.Devo raccogliere input da tutti gli utenti;Voglio usare Arduinos per ogni utente, che mostrerà anche le risposte su un display a 7 segmenti.Ho intenzione di collegare tutti gli Arduino utilizzando I2C ma temo che il segnale possa cadere a causa delle limitazioni a lunga distanza e del fan-out, quindi sto valutando il collegamento a margherita.

È una buona idea, o lo èesiste un approccio migliore per farlo?

[Sistemi bus I2C molto grandi e bus lunghi] (http://www.nxp.com/documents/application_note/AN11084.pdf)
Li alimenterai anche su questo cavo?
Qualcuno nel mezzo che taglia un cavo o che giocherella in altro modo con i dati.Letteralmente un attacco man-in-the-middle
Perché non gestire più postazioni con ogni Arduino?Un singolo Arduino dovrebbe essere abbastanza veloce da eseguire il polling di più tastiere e gestire più display (specialmente con buffer di aggancio appropriati su ciascuna postazione), quindi invece di 50 dispositivi sul bus, potresti averne solo 5 o 10.
Per il prezzo di un arduino, perché non utilizzare un Raspberry Pi con un dongle wifi?Probabilmente uscirai più economico per non dover comprare tutto quel cavo!Se questa non è un'applicazione assolutamente critica in tempo reale, sembra che questo sia lo strumento sbagliato per il lavoro.
per metà prezzo, usa un NodeMcu che integra già il Wifi.
Cinque risposte:
pipe
2016-06-13 16:20:12 UTC
view on stackexchange narkive permalink

Come dice la nota applicativa pubblicata da RedGrittyBrick:

Perché l'originale I 2 C-le applicazioni bus erano interne a un'apparecchiatura, ad esempio in un PC o in un'apparecchiatura radio / TV / audio, I 2 C-bus è raramente considerato per i sistemi quando lunghe distanze con un gran numero di drop-offsono richiesti.

La soluzione nella nota applicativa consiste nell'utilizzare circuiti di pilotaggio specifici per convertire i segnali in qualcosa che possa essere guidato su distanze maggiori.

Poiché turichiederà comunque circuiti di pilotaggio, lascia che ti suggerisca invece di dare un'occhiata a RS-485.Questo è uno standard collaudato e affidabile per la trasmissione bidirezionale su cavi lunghi.Utilizza un normale UART sul tuo Arduino e i circuiti dei driver possono essere trovati in molte forme e forme.Se non vuoi creare il tuo PCB, sono disponibili schede adattatrici che prendono un segnale TTL RX / TX da un UART e lo converte in livelli RS-485.

RS485 è concettualmente una buona categoria di soluzioni, sebbene 50 nodi possano iniziare a superare la capacità di pilotaggio di alcune implementazioni RS485, almeno è un problema che dovrebbe essere controllato.
Il caso peggiore (RS-485) è un selettore A / B che alterna tra due gruppi di 25 nodi.Un pin di Arduino eseguirà la commutazione in modo che sia sincronizzato con l'ultimo marker EOT.Poiché ogni nodo ha un ID univoco e il rilevamento delle collisioni integrato, dovrebbe funzionare.
Jules
2016-06-13 22:57:42 UTC
view on stackexchange narkive permalink

Se non sei particolarmente legato all'idea di utilizzare Arduino per questo, potresti provare altre schede microcontrollore.Sono abbastanza affezionato alle varie schede che si basano sul chip ESP8266;questi avrebbero il vantaggio di avere una connessione di rete wireless integrata in modo che tutti possano parlare direttamente al sistema centrale che memorizza l'input.

Se il costo aggiuntivo (davvero diverso) non è un problema, il wireless sarebbe molto vantaggioso.In particolare, non sono necessari più di 50 collegamenti di cavi diversi e la progettazione del cablaggio del segnale per lo spazio.
@user2943160 Giusto: il costo non è effettivamente un problema a meno che tu non abbia già l'attrezzatura.Un modulo come l'onnipresente scheda ESP12 (venduta da numerosi fornitori cinesi) più una scheda breakout (perché è un modulo a montaggio superficiale, e probabilmente vorrai connetterti ai pin) costa solo una piccola quantità in più di un arduino clone cinese, e un po 'meno di un vero arduino.E sicuramente meno di un arduino + uno shield ethernet o altro hardware esterno.
hardillb
2016-06-13 19:11:26 UTC
view on stackexchange narkive permalink

Hai considerato Arduino Ethernet con PoE?Risolve il problema di alimentazione dei dispositivi e consente comunicazioni a 2 vie

Questo è praticamente ciò per cui è stato inventato Power over Ethernet.Ottimo suggerimento.Puoi persino implementarlo da solo con tensioni diverse dallo standard, poiché Ethernet non utilizza tutte le coppie nel cavo.
Un Arduino è piuttosto scadente per Ethernet, entrambi richiedono un adattatore di rete esterno che probabilmente costa più della scheda base, e non ha molta memoria per gestire i pacchetti (anche se in questo caso non devono essere lunghi).Per l'applicazione in questione c'è il problema aggiuntivo che la maggior parte degli adattatori Ethernet compatibili con Arduino sono UTP punto-punto che richiedono che sia fornita una porta hub per nodo, che a 50 nodi si aggiunge a una quantità assurda di cablaggio.Per renderlo pratico, è necessario trovare adattatori 10Base2 incorporati.
@Dan: Dipende dal tipo di Ethernet di cui stai parlando: Gigabit ethernet (e versioni successive) utilizza tutte le coppie ...
@psmears se riesci a trovarmi un caso d'uso di arduino che necessita di gigabit, sarò impressionato
@psmears A quel punto, non stai più parlando di PoE.
@hardillb: Haha, vero - Non volevo che le persone avessero l'impressione che tu possa farla franca con due delle quattro coppie per * qualsiasi * configurazione Ethernet :)
@jpaugh: Perché no?PoE funziona perfettamente con Gigabit Ethernet ...
@psmears Non sono un esperto, ma se Gigabit Ethernet utilizza già tutti i cavi, come puoi utilizzarne alcuni per l'alimentazione?
@jpaugh: L'alimentazione e i segnali vengono inviati sugli stessi fili: in parole povere, i segnali vengono inviati tramite CA e l'alimentazione viene inviata come offset CC e filtrata al ricevitore.
@jpaugh: Non solo, ma Gigabit Ethernet utilizza tutte e quattro le coppie in entrambe le direzioni contemporaneamente.Il filtro del ricetrasmettitore sottrae il proprio segnale di uscita per ottenere il segnale inviato dall'altra parte.Tutto ciò viene fatto per mantenere la frequenza sufficientemente bassa da funzionare con il cavo Cat-5e, piuttosto che richiedere tolleranze ancora più strette.
Chris Stratton
2016-06-13 23:20:06 UTC
view on stackexchange narkive permalink

Se la distanza tra i tuoi nodi non è grande e non hai bisogno di ottenere comunicazioni particolarmente rapide, una delle poche cose è probabilmente una catena in cui i messaggi vengono propagati da uno all'altro tramite UART seriali puoi fare a meno di aggiungere hardware . Non c'è limite alla lunghezza della catena che puoi ottenere se ogni scheda rigenera il segnale che trasmette, tuttavia ogni nodo aggiungerà un certo ritardo prima di trasmettere un messaggio - nell'implementazione più semplice, il ritardo per nodo potrebbe essere uguale a tempo di trasmissione del contenuto del messaggio.

Tuttavia, sembra che potrebbe essere necessario passare messaggi in entrambe le direzioni lungo la catena. La sfida in questo sarebbe la presenza di un solo UART hardware su ciascuna scheda. Puoi aumentarlo con un software uart, anche se per ottenerne più di uno devi usare un'implementazione più sofisticata rispetto a quella predefinita fornita con l'IDE. Oppure, se riesci a tenere fuori mano qualsiasi seriale USB a bordo, puoi utilizzare l'UART hardware per comunicare in una direzione e il software nell'altra.

O ovviamente potresti usare un [Mega 2560] (https://www.arduino.cc/en/Main/ArduinoBoardMega2560), che ha 4 UART invece di 1 solo come gli altri Arduino.
Sì, ma il costo per 50 nodi ATmega1284 / 2560 si sommerebbe rapidamente.Software Serial in realtà dovrebbe funzionare per questo, o ci sono più parti UART che costano meno rispetto ad ATmega328p.
closedball
2016-06-13 19:25:39 UTC
view on stackexchange narkive permalink

Puoi superare i limiti I2C utilizzando DS28E17 bridge da 1 cavo a I2C.

Ovviamente, la soluzione dipenderà dal tuo budget e dalla larghezza di banda richiesta.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...