comunicazione seriale...

Puoi fare in 2 modi:

  1. RS485 con la seriale
  2. tutti con la shield ethernet

Soluzione 1
In pratica usi il solito protocollo seriale (RS462) ma con degli accorgimenti particolari perché questo ha delle limitazioni.
Ti servono però degli Arduino Mega perché hanno più di 1 porta seriale (ne hanno 4) ed a te ne servono 2 per ogni Arduino.
Una soluzione semplice è quella di usare un ArduinoMega come switch come indicato nell'immagine qui sotto


Clicca per ingrandire il diagramma

In sostanza il microcontrollore situato nel disimpegno serve a dirigere il traffico di ciascuna stanza verso il server e viceversa. Ogni connessione sfrutta una porta seriale.
Se ogni terminale (le stanze da letto e il bagno) utilizzano una sola connessione, sarà sufficiente utilizzare un Arduino che dispone di una sola porta seriale, altrimenti, se questi fungono da "ponte" per un altro nodo.
Ad esempio:

Le domande nascono spontanee:
Come fa il Server a comunicare con Bagno_2?

Serial.print("Bagno_2|Aria_forzata_OFF"); // Spegne il motorino che ricambia l'aria nel Bagno_2

Come arriva il comando fino a Bagno_2?
Il server invia la stringa al Disimpegno. Questo memorizza il messaggio e vede cosa c'è dall'inizio fino al carattere "|".
In base al nome della destinazione, il Disimpegno invia dalla sua seconda porta seriale il comando a Letto.
Letto, a sua volta, vede se la destinazione è Letto oppure Begno_2. In questo caso spedisce il pacchetto a Bagno_2 utilizzando Serial_2.

Con questo metodo si identifica nella prima parte del messaggio l'indirizzo a cui mandare l'informazione e nella seconda parte l'informazione vera e propria.

Soluzione 2
Tutti gli Arduino hanno una shield Ethernet ed un proprio indirizzo IP.
L'Arduino Disimpegno non è obbligatorio in quanto è sufficiente comprare un semplicissimo HUB.

Scegli la soluzione che più ti aggrada. :wink: