Si parte dal considerare tutti i sensori installati in casa: rilevatori movimento, temperature, luce, apertura finestra e scuro esterno – questo per ogni stanza. Poi gli attuatori relè per accendere luci nelle stanze, o LED segnapasso, o cicalini, cancelli, luci esterne, ecc.
Poi ci sono i rilevatori particolari, come quelli che ricevono un impulso (connessione a massa ci un open-collector) dai rilevatori energia, informazioni dalla centralina d’allarme, sensore antiallagamento ecc..
TUTTE queste cose vengono segnalare/gestite dai 3 Arduino che sono nei 3 piani della casa. Per condizionare i segnali per gli Arduino ho dovuto costruire i circuiti sotto.
Questo sotto, il più complesso, è nell’interrato.
Questo sotto è al piano terra. C’è uno simile per il primo piano che non ho fotografato.
Data la precedente esperienza di correnti indotte su cavi che corrono lungo la casa, per “propinare” all’Arduino un segnale pulito, ho aggiunto anche delle impedenze per bloccare eventuali spike entranti – sono i blocchettini blu che si vedono nella foto circuito.
Qui un esempio degli N schemi per il condizionamento di vari segnali, e sotto ancora, altri schemi.
Una volta disponibili i segnali negli Arduino, li rendo disponibili in LAN tramite un protocollo ad-hoc. I tre arduino sono sempre connessi via tcp/ip al PC centrale, che dà loro dei comandi, o viene avvisato di variazioni di stato.
Ecco qui un esempio del listato del codice nell’Arduino Piano interrato . Come si vede, la comunicazione avviene su porte specifiche. L’arduino funge anche da http server per rispondere sulla porta 300, che avviene quando vengono interrogati da uno script php che mostra i risultati dell’interrogazione dei tre Arduino qui: michieletto.ddns.net .
Infine ora entra in gioco il “cuore” del sistema, ovvero il software (che io chiamo J3) scritto in VB6, per parlare con gli Arduino e con il mondo esterno. Questo sistema è sostanzialmente una macchina a stati che, in funzione dei segnali provenienti dagli Arduino e da altre fonti, dà dei comandi agli Arduino oppure emette frasi tramite sintesi vocale (tutti i piani hanno un altoparlante collegato ad un amplificatore che prende il segnale dalla sk audio del PC), oppure invia email.
Ci sono attualmente altre fonti da cui J3 prende informazioni: una stazione meteo installata fuori (LaCrosse WS2310) che comunica tramite seriale RS232 col PC, e controllata tramite il software “Weather Display” installato nel PC; c’è anche la lettura da Internet della pagina 101 di televideo (solo testo), con estrazione dell’ultim’ora – polling periodico della riga specifica della pagina di televideo.
Il sistema di lettura vocale nativo di Win2K è abbastanza buono, anche se quando legge le ultim’ora di televideo va a storpiare alcune parole, come ad esempio i nomi propri o le parole in inglese, ad esempio “Trump” lo legge con le “u”. NON sono riuscito a trovare un lettore italiano di pari qualità, e facile da interfacciare a VisualStudio, su WIN7.
Avevo pianificato altre fonti da cui prendere informazioni (ad esempio lettura dello stato degli altri dispositivi IP collegati in LAN, come TV, NAS, PC, smartphones, ma mi sono fermato, il sistema era già abbastanza complesso.