è da tempo che sto pensando ad un modo semplice ed economico per realizzare un sistema domotico che potesse implementare i seguenti sistemi in ordine d'importanza:
Gestione Luci (interne/esterne/giardino/tutte) semplici ON/OFF su relè
Gestione sensori interruttori/regolatori di tensione per accensione/spegnimento e regolazione intensità luci, basato su sensori touch capacitivi
Gestione sensori presenza per accensione/spegnimento utenze
Gestione apertura chiusura tapparelle/persiane in base ad orari preimpostati ed/o informazioni da centralina meteo
Gestione RFID per apertura porte/cancelli e controllo accessi
ecc..
l'idea è di utilizzare un arduino mini con I/O su bus I2C ogni ambiente per la gestione delle singole operazioni locali, un arduino uno + I/O su bus I2C per ambienti che necessitano una maggiore potenza di calcolo, tipo locale caldaia, ed un ARM11 con QTopia linux embedded od android come sistema di controllo centrale per la gestione centralizzata di tutti gli ambienti.
Il I2C non regge queste distanze.
Devi usare un altro bus per esempio RS485, ma devi gestire il flusso di dati in modo che un server chiama un arduino e solo quello risponde. Ci sono integrati che fanno convertitori seriale TTL a RS485.
Perche vuoi riinventare il controllo domotico e non usi un progetto giá fatto?
Ciao Uwe
Io sono disponibile..
E sono d'accordo per quanto riguarda il mettere tutto in ordine perchè non si perda.
Metti in conto che secondo me ci vuole almeno una ethernet shield o una gsm shield per avere il controllo da remoto.
Per la connessione tra i vari nodi guarda i thread postati sotto. Ci sono sia soluzioni sia wireless che ethernet.
non ho completato il post precedente, ecco l'architettura di rete ipotizzata:
livello 0: bus di campo I2C per acquisizione I/O
livello 1: rs485 arduino to arduino (MODBUS RTU)
livello 2: rs485 oppure ethernet verso il sistema centrale ARM11 Tiny6410 (MODBUS RTU o CanOpen) il secondo protocollo non saprei come implementarlo...
decentrando la logica di controllo sulle schede arduino poste localmente, anche se si perde la comunicazione con il sistema centralizzato, i singoli ambienti continueranno le loro operazioni normalmente
è una bella sfida ci sarà un sacco di lavoro da fare
diciamo che il succo era cmq di orientarsi su rs485, e uwe ha sostanzialmente riassunto il perchè:
Il I2C non regge queste distanze.
Devi usare un altro bus per esempio RS485, ma devi gestire il flusso di dati in modo che un server chiama un arduino e solo quello risponde.
La cosa che sarebbe da sviluppare è eventualmente il protocollo.
un ARM11 con QTopia linux embedded od android come sistema di controllo centrale per la gestione centralizzata di tutti gli ambienti
qui ci sarebbe da capire se è necessaria o complementare; io sinceramente trovo necessaria una console su Android (smartphone o tablet) per pilotare il tutto, ma il tutto deve funzionare anche senza.
Piuttosto prevederei N punti con touchscreen (montato naturalmente su Arduino :P) per un controllo utente di tipo centralizzato
se vuoi risparmiare qualche soldino piuttosto che un arduino mini per ogni punto di derivazione usi un arduino standalone (basta che usi il cerca in alto a destra e trovi un 150 risultati)
inoltre.
per la comunicazione io direi che non è un problema, ti serviranno dei MAX488 o 485 (488 full e 485 halfduplex, il 485 impiega un pin in più per scegliere se stare in ascolto o in trasmissione ma nel 485 escono 2 fili, nel 488 4 fili) poi ad ogni nodo dai un numero univoco (da 1 a 255) e invii prima quel carattere e poi la comunicazione, poi magari invii ln carattere 255 per indicare che la trasmissione è finita.
io sto usando l'rs485 su dei palmari, usi l'interrupt per avviare la comunucazione seriale e nel mio caso invio un numero e quello mi risponde e basta, poi altro numero e mi risponde un alto palmare, tu dovresti mettere un bit (o byte in questo caso) di stop
superlol:
inoltre.
per la comunicazione io direi che non è un problema, ti serviranno dei MAX488 o 485 (488 full e 485 halfduplex, il 485 impiega un pin in più per scegliere se stare in ascolto o in trasmissione ma nel 485 escono 2 fili, nel 488 4 fili) poi ad ogni nodo dai un numero univoco (da 1 a 255) e invii prima quel carattere e poi la comunicazione, poi magari invii ln carattere 255 per indicare che la trasmissione è finita.
Buona idea!!
Senza troppi sbattimenti , semplice e funzionale