Infine si è deciso di realizzare un software per PC che gestisca parte delle funzioni della casa, come l’accensione delle luci, l’impostazione della temperatura di soglia per far azionare il condizionamento, l’attivazione dell’allarme. Per ottenere questo abbia usato il protocollo di comunicazione seriale RS232 ed un semplicissimo software per PC scritto in VisualBasic. Questa funzione è gestita dal PIC16F887.
Protocollo RS232
Per la sua semplicità e le poche risorse hardware richieste, la comunicazione seriale è estensivamente usata nell’elettronica industriale. Oggi lo standard di comunicazione seriale più popolare è certamente lo standard EIA/TIA-232. Nacque nei primi anni sessanta per opera della Electronic Industries Association ed era orientato alla comunicazione tra i mainframe e i terminali. È uno standard che definisce un’interfaccia seriale a bassa velocità per lo scambio di dati tra dispositivi digitali. Stendendo un cavo fisico tra due apparecchiature elettroniche dotate di una porta Rs-232 è possibile realizzare una comunicazione tra di esse. L’Rs-232 è uno standard completo, questo significa che si può avere la compatibilità tra l’host e la periferica specificando:
- Tensioni comuni e livelli dei segnali
- Configurazione dei collegamenti tra i terminali
- Un minimo di informazioni di controllo tra l’host e la periferica
La sua implementazione a livello fisico originariamente avveniva tramite un connettore SUB-D a 25 pin, mentre al giorno d’oggi avviene tramite un connettore di tipo SUB-D a 9. Le caratteristiche principali di questo standard sono:
- Lo 0 logico viene chiamato space e corrisponde ad una tensione in linea da 5V a 15V;
- L’ 1 logico viene chiamato mark e corrisponde ad una tensione in linea da -5V a -15V;
- La linea quando è a riposo rimane in stato logico 1 (mark) corrispondente ad una tensione in linea dai -5V ai -15V;
- Tra 3V e -3V vi è una zona di incertezza che permette di resistere ai rumori indotti da fonti esterne;
- Tutti i segnali sono riferiti ad un’unica massa, rendendo il collegamento di tipo sbilanciato e quindi non adatto a distanze considerevoli, per tale motivo lo standard prevede elevate escursioni delle tensioni trasmesse;
- La distanza massima del collegamento è in relazione con la velocità di trasmissione (es. a 9600bit/s si può arrivare fino a 75 metri);
- Tipi di trasmissione asincrona e sincrona;
- Supporto alle modalità di funzionamento full duplex, half duplex e simplex;
Nel sistema si è scelto, tra il computer centrale e la scheda di controllo, di utilizzare una tipologia di comunicazione asincrona in modalità full duplex a 2 fili con riferimento comune. Pertanto di seguito verrà descritta in dettaglio solo la tipologia asincrona.
La principale caratteristica di questa tipologia di trasmissione è l’indipendenza dei clock tra i due apparati, permettendo di ridurre il numero di collegamenti. Però per poter funzionare correttamente senza elevati errori di ricezione è necessario avere generatori di clock locali di elevata precisione e sincronizzati in maniera corretta. I dispositivi comunicanti prima di poter trasmettere devono aver impostato già la velocità di trasmissione e il formato del dato (o anche detto carattere) da comunicare. La trasmissione di un carattere da parte del trasmettitore può avvenire in qualsiasi momento, indipendentemente da altri caratteri (essendo la trama dei caratteri contigui considerata a livello superiore dai dispositivi comunicanti).
Quando viene ricevuto il carattere è necessario che il ricevitore attivi il clock, lo sincronizzi con quello del trasmettitore e attenda prima di disattivare, la fine della trasmissione del carattere. Per fare ciò è quindi necessario utilizzare dei bit di controllo da associare ad ogni carattere:
- Bit di start: è un bit aggiunto all’inizio della trasmissione del carattere avente la durata di un singolo bit che porta la linea in stato logico 0 (space). Questo bit di controllo permette di sincronizzare il clock del ricevitore con quello del trasmettitore.
- Bit di parità: è un bit opzionale che può essere aggiunto alla fine della trasmissione del carattere per effettuare una semplice rivelazione degli errori. La parità può essere pari o dispari e il bit aggiunto deve far si che la regola di parità (pari o dispari) venga rispettata dagli “1” logici presenti nel codice ASCII del carattere (o dato). Pertanto se si seleziona una parità di tipo pari e il numero degli “1” del dato è dispari il bit di parità sarà pari a “1” per rendere pari il numero degli “1” logici complessivi del dato e del bit di parità. Quando il ricevitore riceverà il dato verificherà il rispetto della regola di parità per rilevare la presenza di errori durante la comunicazione. Ovviamente questo tipo di verifica è molto debole poiché è necessario che vi sia un solo bit errato, altrimenti un dato potrebbe essere preso come corretto anche se presenta più bit errati.
- Bit di stop: è un bit aggiunto a fine invio del carattere che mette nuovamente a riposo la linea prima di un eventuale nuovo invio. Esso può durare 1, 1,5, 2 Tbit ed è rappresentato dallo stato logico in linea 1 (mark).
La lunghezza del campo carattere può essere solitamente a 5, 8 o 9 bit. Nel nostro sistema viene usato il formato di invio 8N1: 1 bit di start, 8 bit di dato, nessun bit di parità e bit di stop della durata di 1 Tbit. La trama di bit viene trasmessa e ricevuta da un dispositivo chiamato UART (Universal Asynchronous Receiver-Transmitter) che svolge tutte le funzioni di serializzazione e parallelizzazione richieste in una comunicazione seriale asincrona (incluse l’aggiunta dei bit di controllo), permettendo al microprocessore di occuparsi solo del campo carattere.
La velocità di comunicazione è stata scelta a 9600bit/s: tale velocità è infatti adeguata per gestire i dati scambiati tra il master e le unità e garantire un numero limitato di errori, anche in modalità asincrona. A fronte delle precedenti considerazioni si può rappresentare la struttura dei bit trasmessi in linea RS232 come in figura, in essa si può notare come i segnali RS232 siano la negazione dei normali livelli logici TTL (con livello logico 1, +5V, a riposo), gestiti dai sistemi a microprocessore o microcontrollore, pertanto gli UART dovranno provvedere anche al loro adattamento logico.
In genere i segnali utilizzati dai sistemi digitali variano tra 0 e 5 V e non sono quindi direttamente compatibili con la standard; in commercio esistono però appositi traslatori di livello che hanno il compito di fornire sia in trasmissione che in ricezione gli opportuni livelli pur non modificando la forma del segnale trasmesso
MAX232
I segnali proveniente dal collegamento con dispositivi RS232 devono essere adattati per poter essere utilizzati dai sistemi digitali che hanno una logica di tipo TTL (0 -5V).In commercio esistono appositi traslatori di tensione che hanno il compito di fornire sia in trasmissione che in ricezione gli opportuni livelli pur non modificando la forma del segnale trasmesso. Tutte queste funzioni di inversione ed adattamento vengono svolte dall’integrato MAX232 della Maxim che contiene al suo interno dei duplicatori e invertitori di tensione che fanno uso di circuiti detti a “pompa di carica”. Questo permette di garantire, con una sola alimentazione di 5V, la tensione positiva e negativa dello standard RS232 con una efficienza molto alta. Lo schema interno rappresenta in maniera chiara le inversioni logiche effettuate sui segnali e i circuiti di duplicazione e inversione della tensione. Nella pratica la tensione entrante a 5V viene duplicata a 10V per essere in linea con i livelli di tensione dei segnali di tipo RS232. Successivamente tale tensione viene invertita a -10V consentendo di utilizzare entrambi i livelli +10V e -10V necessari alla comunicazione in standard RS232. Per effettuare tali operazioni l’integrato necessita di 5 condensatori (solitamente da 10uF) come rappresentato nello schema interno. L’integrato supporta la conversioni di 2 canali RS232 a TTL e di 2 canali TTL a RS232.
Progettazione software PC
Il software di gestione da PC si occupa della gestione di tutte le varie operazioni che il nostro sistema domotico dovrà eseguire. Il software è stato progettato con un’interfaccia grafica minimale e per essere il più intuitivo possibile, in quanto chiunque potrà usarlo.
Aperto il software, per stabilire la connessione con il sistema, bisognerà settare la porta seriale COM utilizzata dal PC per il collegamento. Nei computer più moderni è difficile trovare ancora delle porte seriali, per questo in commercio esistono degli adattatori USB-Seriale, appunto quello usato da noi. Stabilito il collegamento si potrà gestire l’illuminazione interna della casa, il controllo della temperatura, prelevare i dati dei sensori e controllare l’antifurto. Il software molto semplice nella sua struttura, è stato progettato e programmato tramite il linguaggio VisualBasic di Microsoft.