Allora, io direi che Ethernet o WiFi è indifferente, poi ti basta progettare un protocollino di comunicazione in TCP o UDP. Vediamo.
Comunque non ho capito i calcoli che hai fatto, perché ben 16 Mega? Perché parli di 1.100 pin ossia 5 pin per sensore? Provo a spiegarmi meglio, forse non ho capito bene io cosa hai in mente...
Se è un problema "logistico" ossia i vicinanza ai carichi ok, ma se è un problema di pin, sai che ogni Mega ha 54 pin digitali e 16 analogici che puoi comunque usare come digitali, per un totale di 70, esatto? Diciamo che in ogni Mega ti riservi 10 pin per cose come la Ethernet e qualche LED o pulsante o un display, siamo a 60 pin per Mega. Ma tu con gli HX711 non devi mica controllare 5 pin! Quei modulini comunicano in seriale con solo 2 fili (Clock e dati) più i pin di alimentzione (che sono fissi). Quindi ogni modulo richiede solo 2 pin, per cui teoricamente puoi gestire fino a 30 sensori per ogni Mega, il che significa che con (220/30=7.33) 8 Mega ce la faresti.
Poi parliamo del server centrale. Pensare di controllare centralmente (ossia leggere in "tempo reale") i vari pin mi sembra una cosa poco sensata. Intanto perché tu spero che non intenda gestire centralmente anche i pin di clock... Poi dato che stai usando Arduino ossia dei microcontrollori, fagli fare il loro lavoro, ossia ogni Mega legge i valori dei "suoi" sensori, e poi saranno questi valori che manderai digitalmente al server cntrale.
Per la comunicazione col server centrale quindi ci sono varie alternative:
- lo fa periodicamente, quindi in "push", ossia a tempo manda i valori delle letture
- manda il dato solamente quando almeno un sensore cambia il proprio valore (ossia la differenza con la prcedente lettura è entro un certo range, per evitare piccole fluttuazioni irrilevanti)
- manda le letture solo su richiesta del server, ossia fa lui un polling quando ha bisogno di ottenere i dati chiedendo il dato di un certo sensore o tutti
Anche la stessa connessione col server può essere prevista in vari modi:
A) permanente dal client ossia ogni client alla partenza si collega al server via TCP, invia lo stato di tutti i suoi sensori, e tiene aperta la sessione per tutto il tempo (soluzione ottimale per la velocità di risposta e la possibilità di controllare che il dato sia stato ricevuto dal server, ma oltre a richiedere risorse di rete sul server stesso, sui client è necessario prevedere un controllo della sessione ed eventuale riconnessione)
B) permanente dal server ossia ogni client è "passivo" e resta in attesa della connessione da parte del server il quale si collega e richiede la lettura di uno specifico sensore o di tutti (stessi pro e contro del precedente, ma il controllo delle sessioni è delegato al server, più facile da gestire e controllare)
C) su richiesta dal server ossia quando il server deve aggiornare i suoi dati si collega via TCP ad ogni client, il quale fornisce l'informazione richiesta.
D) i client mandano al server le informazoni via UDP quindi senza connessione diretta (maggiore rapiditià e semplicità anche di gestione, ma non c'è la certezza che il server lo abbia ricevuto, a meno che non si preveda una fase di "ACK" ossia un pacchetto UDP di risposta al client, e relativo eventuale retry)
E) il server fa un polling via UDP, "interrogando" i vari client tramite un opportuno pacchetto UDP (che potrebbe anche essere in broadcast per parlare con tutti), i quali risponderanno a loro volta con un altro pacchetto UDP.
Chiariti questi aspetti, ti resta solo disegnare il formato esatto del protocollo.