Home
Accesso / Registrazione
 di 

Sistema domotico MassaBus

sistema massabus

Il sistema MassaBus è un sistema domotico adatto per controllare ed automatizzare ambienti domestici ed aziendali. Il sistema è costituito da varie schede interconnesse tramite il bus seriale RS485. Le schede sono in grado di ricevere input sia digitali che analogici e scrivere output digitali, nonché di misurare temperature ambientali. Tutto viene governato da un PC master dotato di opportuno software in grado di dare intelligenza al sistema domotico.

 

La domotica rappresenta una delle più importanti e innovative branche dell'elettronica e dell'automazione, in quanto nel futuro sempre più case verranno dotate di una intelligenza propria gli permetterà di regolare consumi  e di adattarsi agli usi giornalieri di essa. Il sistema MassaBus è un sistema domotico adatto per controllare ed automatizzare ambienti domestici ed aziendali. Esso si basa sullo standard di comunicazione RS485, molto usato a livello industriale per la sua elevata resistenza ai disturbi induttivi e capacitivi. L’interfacciamento del sistema al computer centrale avviene tramite una porta seriale standard RS232 mentre la comunicazione nel bus viene gestita in modalità MASTER – SLAVE con una rete RS485 di tipo half-duplex che permette di estendere il sistema fino ad una distanza di 1200 metri. Il sistema può essere usato per automatizzare i vari dispositivi presenti in una abitazione o in una azienda e per monitorare degli ambienti interni o esterni. Attualmente il sistema permette di collegare fino a 32 dispositivi (limite dettato dalla rete RS485 ma espandibile fino  a 254 attraverso opportune schede di rigenerazione del segnale) comprendenti un dispositivo MASTER composto da un PC e dei dispositivi SLAVE che permettono di gestire uscite digitali e monitorare ingressi digitali, tensioni,  temperature e altro.

 

Caratteristiche principali

  • Interfacciamento al computer tramite seriale RS232
  • bus di comunicazione RS485 avente alta resistenza ai disturbi e costituito da un unico cavo twistato che interconnette tutte le schede
  • interfaccia RS232 isolata elettricamente dal bus di comunicazione RS485
  • sistema estendibile senza rigeneratori fino a 1200m e 31 dispositivi slave, oppure oltre 1200m e fino a  253 dispositivi slave attraverso l’uso di rigeneratori di segnale
  • Alimentazione centralizzata
  • Flessibilità, possibilità di ampliamento ed adattamento agli ambienti in cui è predisposto
  • Controllo centralizzato tramite PC predisposto con software di gestione
  • I/O isolati dal sistema
  • Utilizzo componenti di facile reperibilità
  • Massima liberà nella programmazione degli indirizzi: ogni unità indirizzabile può avere da 1 a 254 come indirizzo e l’indirizzo può essere programmato direttamente via software
  • Le schede slave dispongono di alcune caratteristiche comuni quali: un led di segnalazione attività, un interruttore che consente di attivare la programmazione degli indirizzi e un pulsante di reset per applicare i nuovi indirizzi o per effettuare il reset della scheda
  • Tutte le schede interfacciate al bus RS485 dispongono di dip switch per adattare la scheda alle caratteristiche del bus.

 

Tecnica di comunicazione nel BUS

Per gestire un bus avente un'unica linea in half duplex è necessario prevedere l’implementazione di un protocollo che gestisca sia le attivazioni/disattivazioni dei trasmettitori nel bus, sia le modalità con cui instaurare il trasferimento di dati tra master e slave (e viceversa). A livello fisico l’attivazione e disattivazione dei trasmettitori avviene direttamente controllando dei terminali presenti nei transceiver RS485.

Nel sistema MassaBus vengono impiegati dei transceiver MAX485 prodotti dalla Maxim (o equivalenti) che presentano due terminali di controllo per l’attivazione del trasmettitore e del ricevitore (DE,RE), oltre che ai terminali di invio/ricezione dati (DI,RO), del bus (A/B) e alimentazione. Inoltre internamente dispongono delle negazioni necessarie ad adattare i livelli logici TTL, con il quale lavorano i vari terminali di invio e ricezione, nei livelli logici del bus RS485. I terminali di controllo sono DE che permette di attivare a livello alto la trasmissione nel bus e RE che permette di abilitare la ricezione a livello basso dei dati in transito sul BUS. I livelli di attivazione di DE e RE essendo complementari, nel sistema MassaBus, sono collegati assieme e permettono così di controllare la comunicazione attraverso un unico segnale di selezione della direzione: con un 1 logico si attiva il trasmettitore, mentre con uno 0 logico si attiva il ricevitore. Questa modalità fa anche in modo che un dato inviato non venga ricevuto dallo stesso dispositivo di invio, come invece accadrebbe mantenendo il ricevitore sempre attivo collegando RE a massa. Questi accorgimenti permettono di risolvere il problema dell’abilitazione dei trasmettitori, ma non risolvono il problema dei conflitti che potrebbero verificarsi in caso di più unità trasmittenti attive contemporaneamente. Per risolvere ciò è necessario prevedere un protocollo di comunicazione che detti le regole con il quale i dispositivi hanno l’autorizzazione di inviare dati sul canale. Il sistema MassaBus usa la modalità Master – Slave che adotta il seguente protocollo logico di comunicazione:

  • Il master è unico ed è la sola unità che può iniziare la comunicazione nel  bus.
  • I dispositivi slave rimangono tutti in ascolto ed analizzano i dati provenienti dal master, se uno slave è richiamato attraverso un indirizzo esegue l’operazione ed invia al master i dati richiesti o la conferma dell’operazione.
  • Sono previsti casi particolari in cui il master non comunica con un solo slave, ma con tutti i dispositivi slave (Broadcast). In questo caso gli slave non possono effettuare alcuna risposta al master per evitare conflitti nella rete a bus.

Questo tipo di modalità ha il vantaggio di evitare conflitti nel bus in maniera semplice a discapito, però, della velocità di esecuzione delle operazioni: per ogni operazione è necessario il richiamo preliminare dell’unità master al dispositivo slave coinvolto. Questo problema non è molto critico data la mole dei dati in transito nel bus e la velocità di esecuzione richiesta nel sistema domotico.

 

Comunicazione logica del sistema

Il sistema MassaBus per poter gestire la propria architettura a bus non ha bisogno solo degli accorgimenti illustrati nel capitolo precedente, ma deve anche prevedere un ben preciso protocollo di comunicazione che permetta, oltre al trasferimento dati, anche l’indirizzamento dei dispositivi presenti nel bus.  Questo tipo di protocollo viene detto “protocollo di linea”. Esso è stato ideato dal sottoscritto e si rifà ai protocolli di linea adottati a livello 2 ISO OSI nelle reti, adattati all’utilizzo specifico nel sistema MassaBus. Tale protocollo ha le seguenti caratteristiche:

  • E’ un protocollo di linea a pacchetti organizzati in trama.
  • Indirizza fino a 254 dispositivi (da 1 a 254).
  • Permette 63 tipi di comando ai dispositivi (da 1 a 63).
  • Consente l’invio di 2 campi dati ad 8 bit per pacchetto.
  • Utilizza una rivelazione (ma non di correzione) degli errori attraverso operazioni di XOR, detta “Checksum”.
  • Ha una trama avente 11 byte.

Il protocollo di linea applicato nel sistema prevede per la comunicazione una forma a pacchetto avente una trama (figura sotto) composta da 11 byte, aventi ognuno una funzione specifica. I byte contrassegnati con asterisco sono quelli coinvolti nel calcolo del checksum finale.

I byte hanno le seguenti funzioni nella trama:

  • Start byte (0): questo byte indica l’inizio della trama.
  • Indirizzo destinatario(1): è un indirizzo ad 8 bit che indica il destinatario del pacchetto.
  • Indirizzo mittente (2):  è un indirizzo ad 8 bit che indica il mittente del pacchetto.
  • Type e zero flag (3): questo byte è composto da 2 parti: i primi due bit meno significativi rappresentano gli “zero flag”, mentre gli altri bit indicano il tipo di comando a cui si riferisce il pacchetto. Gli zero flag sono bit posti a 1 quando il campo data 1 o data 2 ha valore zero (il meno significativo indica uno zero, in data 1, quando ha valore 1, il secondo bit indica uno zero, in data 2, quando ha valore 1). Questo accorgimento è necessario poiché il master utilizza linguaggi di alto livello aventi spesso problemi nel trattare dati aventi in mezzo alla trama valori nulli (pari a 0).
  • Data 1 e data 2 (4 e 5): rappresentano i 2 byte inviati dal pacchetto
  • Checksum low (6): contiene come bit più significativo un 1 fisso e come 4 bit meno significativi i 4 bit meno significativi del Checksum calcolato prima della trasmissione.
  • Checksum high (7): contiene come bit più significativo un 1 fisso e come 4 bit meno significativi i 4 bit più significativi del Checksum calcolato prima della trasmissione. I bit posti ad 1 fisso dei due byte di Checksum low e high consentono di evitare il formarsi di byte aventi valore 0 e di sequenze simili agli end byte. 
  • End byte (8,9 e 10): sono una sequenza di 3 byte aventi valore 3, che non può presentarsi in altri campi altri della trama, indicanti la fine del pacchetto.

 

Indirizzamento dispositivi

L’indirizzamento dei dispositivi MassaBus avviene tramite un codice binario ad 8 bit, permettendo di indirizzare fino a 254 dispositivi. Tale numero massimo è dovuto alle limitazioni sull’utilizzo degli indirizzi, in particolare:

  • L’indirizzo 0 non può essere utilizzato
  • L’indirizzo 255 è riservato al master per comunicazioni di broadcast ( a tutti i dispositivi slave, in contemporanea) e per la programmazione iniziale degli indirizzi.

Il master deve essere unico nella rete e deve disporre di un unico indirizzo tra 1 e 254, assegnatogli prima dell’ assegnazione degli indirizzi agli slave.

I dispositivi slave possono essere al massimo 253 con indirizzi da 1 a 254.

Va ricordato che questo protocollo non si interessa del mezzo fisico utilizzato, pertanto per poter usare 254 dispositivi è necessario prevedere unità di rigenerazione del segnale essendo la rete RS485 limitata, nei transceiver utilizzati, a 32 dispositivi interconnessi senza rigenerazione.

 

LE SCHEDE DEL SISTEMA DOMOTICO

La parte hardware progettata del sistema MassaBus si articola attualmente su quattro tipologie di dispositivi:

  • Scheda alimentazione: provvede ad alimentare l’intero sistema.
  • Scheda di interfaccia bus: provvede a convertire i segnali dell’interfaccia PC RS232 in segnali adatti al bus RS485 del sistema.
  • Scheda “Multi I/O device”: permette di controllare 8 uscite a relè, 8 ingressi optoisolati e dispone di un ingresso analogico 0-5V per collegare sensori o dispositivi aventi in uscita un segale analogico. 
  • Scheda “Temperature sensor”: permette il controllo della temperatura presente in un ambiente o in un oggetto.

 

SCHEDA ALIMENTAZIONE

Questa è scheda progettata per fornire la corretta alimentazione elettrica per tutte le unità del bus e pertanto deve essere unica in tutto il bus, se i dispositivi nel bus hanno una alimentazione centralizzata e interconnessa. L’utilizzo di una alimentazione centralizzata permette di proteggere in maniera efficace il sistema in caso di blackout o sabotaggio dell’alimentazione elettrica, attraverso l’utilizzo di un gruppo di continuità. Ovviamente le altre schede possono anche essere alimentate indipendentemente a discapito della centralizzazione delle alimentazioni dell’impianto.

La scheda prevede una tensione in ingresso pari a 12Vac, pertanto per poter alimentare la scheda con la tensione di rete è necessario interporre un trasformatore riduttore di tensione (230V/12V), la cui uscita a 12V può essere connessa direttamente all’ingresso della scheda.

 

Caratteristiche scheda alimentazione

La scheda progettata dispone delle seguenti caratteristiche:

  • Dispone di raddrizzatore, pertanto può essere collegata direttamente a trasformatori di alimentazione. La tensione di alimentazione consigliata può essere almeno 14Vac in caso di tensione alternata diretta da trasformatore o almeno 18Vdc in caso di alimentazione con tensione continua (questa possibilità permette di collegare come alimentazione della scheda dispositivi di backup a batteria, evitando così l’utilizzo di costosi UPS)
  • Supporta come tensione in ingresso un range molto elevato essendo dotata di stabilizzatore di tensione per l’alimentazione della scheda di interfaccia bus ed essendo i dispositivi slave dotati di proprio stabilizzatore interno
  • La scheda è protetta tramite fusibile da cortocircuiti (esso andrà dimensionato in base alla grandezza dell’impianto).
  • Dispone di un uscita stabilizzata a 5V per alimentare la scheda di interfaccia bus (vedere il capitolo “Scheda interfaccia bus”)
  • Dispone di un uscita non stabilizzata a 16V per l’alimentazione dei dispositivi slave presenti nel bus.

 

Fare click sull'immagine per ingrandirla.

 

SCHEDA INTERFACCIA BUS MASTER

Fare click sull'immagine per ingrandirla.

 

La scheda di interfaccia bus progettata si occupa di adattare i segnali dell’interfaccia RS232 del computer master in segnali di tipo RS485, adatti alla comunicazione nel bus. La scheda può essere alimentata a 5V sia dalla scheda di alimentazione (che ha una apposita uscita riservata a questa scheda), sia dal computer master con cui è collegata via seriale RS232 visto che i PC solitamente dispongono già di linee interne di alimentazione stabilizzate a 5V. La scheda dispone nel lato sinistro del connettore standard RS232 a 9 pin, mentre nel lato destro trovano spazio un connettore morsetto a 3 vie per collegare il bus domotico alla scheda (linee A,B e GND), un connettore a due vie per l’alimentazione a 5V della scheda e un dip switch dotato di tre interruttori che permettono di attivare la resistenza di terminazione della linea e le resistenze di polarizzazione del bus. La scheda dispone inoltre di un led verde che indica la corretta alimentazione della scheda e di un led rosso che indica l’attività del bus domotico, attivandosi quando il master effettua una chiamata ai device slave.

 

Caratteristiche scheda interfaccia bus master

Questa scheda presenta le seguenti caratteristiche:

  • Alimentazione a 5V (da scheda di alimentazione  o PC master).
  • Interfaccia verso PC master RS232, adattabile ad usb con appositi convertitori.
  • Isolamento galvanico tra bus RS485 e RS232 tramite fotoaccoppiatori e convertitore DC/DC isolato.
  • Comando direzione dati bus RS485 tramite segnale RTS RS232.
  • Adattamento segnali RS232 – TTL
  • Presenza led di segnalazione alimentazione e attività bus.
  • Possibilità di attivazione terminazione e polarizzazione sulla linea bus.

E’ possibile notare la presenza di un convertitore RS232 – TTL (MAX232) che si occupa di convertire i segnali tipici dell’interfaccia RS232 in segnali 0-5V TTL compatibili. Questi segnali TTL vengono utilizzati dai fotoaccoppiatori di isolamento che si occupano di mantenere galvanicamente isolate la linea dati lato RS232 dalla linea lato BUS. Le due parti della scheda (lato RS232 e lato BUS) oltre che essere isolate a livello di segnali sono isolate anche a livello di alimentazioni attraverso l’uso di un convertitore DC/DC isolato. Nel lato bus i segnali elettricamente isolati dalla parte dell’ interfaccia RS232 vengono mandati all’integrato transceiver MAX485 che provvede ad adattare i segnali entranti ai segnali necessari al bus RS485. In particolare il segnale RTS presente nell’interfaccia RS232 viene utilizzato, dopo l’isolamento tramite fotoaccoppiatori, per la selezione della direzione di comunicazione del transceiver RS485. La parte lato bus è direttamente alimentata dalla tensione a 5V entrante a destra dello schema a blocchi, mentre tutta la parte relativa all’interfaccia RS232 viene alimentata tramite il convertitore DC/DC.

 

Fare click sull'immagine per ingrandirla.

 

SCHEDA MULTI I/O DEVICE

La scheda Multi I/O device del sistema MassaBus permette di controllare l’attivazione di 8 uscite a relè, lo stato di 8 ingressi digitali optoisolati e la tensione presente in un ingresso analogico. La scheda dispone di un microcontrollore di gestione PIC 16F876, programmato con opportuno firmware, che assolve a tutte le funzioni di gestione della scheda e alla comunicazione nel sistema MassaBus. La scheda viene alimentata a 16V dalla scheda di alimentazione del bus ed  è dotata di due stabilizzatori (7812 e 7805) che permettono l’alimentazione dei dispositivi a 12V e 5V.

 

Fare click sull'immagine per ingrandirla.

 

La scheda dispone di 8 relè comandati dal microcontrollore attraverso l’integrato driver ad alte correnti ULN2803 che provvede a supportare la corrente richiesta dai relè e consente di ridurre i circuiti esterni necessari rispetto all’uso dei classici transistor, essendo la corrente dei relè superiore alla corrente massima assorbita dal microcontrollore (20mA contro i 60mA richiesti dai relè). Gli ingressi sono optoisolati attraverso dei fotoaccoppiatori 4N25, che permettono di garantire l’isolamento tra gli ingressi esterni e i circuiti elettronici presenti nella scheda. L’ingesso analogico è collegato, tramite un circuito di protezione, ad un convertitore analogico-digitale interno al microcontrollore che accetta tensioni da 0 a 5V ed il circuito di protezione permette proprio di limitare la tensione in ingresso al convertitore analogico digitale. La scheda, come tutti i dispositivi interfacciati al bus RS485, è dotata del transceiver MAX485 e di un dip switch a tre vie che consente di attivare la resistenza di terminazione e le due resistenze di polarizzazione del bus. La scheda presenta inoltre un interruttore che permette di discriminare la funzionalità normale dalla funzionalità di programmazione dell’indirizzo e un led di segnalazione accensione e attività.

 

Fare click sull'immagine per la versione PDF.

 

SCHEDA TEMPERATURE SENSOR

La scheda “Temperature sensor” è una scheda del sistema MassaBus che provvede a misurare la temperatura in un ambiente o su una cosa. Per effettuare ciò utilizza un sensore di temperatura digitale della Dallas Semiconductor DS18S20 che permette di rilevare temperature da -55 a +125°C con una accuratezza di +/- 0,5°C. Essendo il sensore di tipo digitale esso può essere posto anche a distanza di qualche metro dalla scheda di gestione, permettendo l’attacco in maniera semplice su un oggetto di cui vi è necessario monitorare la temperatura.

 

Fare click sull'immagine per ingrandirla.

 

La scheda collegata al bus permette di fornire al sistema MassaBus la temperatura ambientale o di una cosa che potrà essere elaborata dal sistema domotico per eseguire azioni di vario genere. La scheda ha come cuore centrale in microcontrollore PIC 16F628 che si occupa di gestire sia il sensore, sia il bus domotico. La scheda può essere alimentata direttamente con l’alimentazione centralizzata del sistema MassaBus essendo dotata di stabilizzatore.

 

Fare click sull'immagine per la versione PDF.

 

Si nota la presenza dello stabilizzatore 7805 (IC4) che provvede a fornire i 5V stabilizzati necessari al corretto funzionamento dei circuiti integrati della scheda. Il microcontrollore PIC (IC1) ha collegato il bus OneWire del sensore attraverso una sua particolare porta con uscita di tipo open-collector chiamata RA4 (presente nel package sul pin 3). In questa maniera è possibile utilizzare attraverso tale porta il protocollo OneWire utilizzato dal sensore, anche attraverso l’uso della resistenza di pull-up R3 da 4,7K prevista dal protocollo. A sinistra del microcontrollore si può notare il pulsate di reset P1 collegato al pin di reset generale del microcontrollore e i pin che collegano l’interfaccia UART interna al PIC con il transceiver MAX485 ed il relativo dip switch a 3, entrambi descritti nello schema elettrico della scheda Multi I/O Device. Sono presenti inoltre i componenti presenti in tutte le schede slave del sistema MassaBus, ovvero il led di segnalazione attività con l’opportuna resistenza di limitazione della corrente e il deviatore che consente di selezionare la modalità normale o la modalità programmazione. A destra del microcontrollore è presente il quarzo a 4 MHz con i relativi condensatori che garantisce una maggiore stabilità e precisione rispetto all’oscillatore a 4 MHz interno al microcontrollore.

 

REALIZZAZIONE SU PCB

Scheda alimentazione

 

 

Scheda interfaccia bus

 

Scheda multi I/O device

 

Scheda Temperature sensor

 

SOFTWARE SISTEMA DOMOTICO

SCHEDA MULTI I/O DEVICE

Il firmware è il programma implementato sulla ROM FLASH del microcontrollore che esegue tutte le operazioni di gestione della scheda, della comunicazione nel bus e che premette quindi al microcontrollore stesso di funzionare. I microcontrollori, come tutti i sistemi programmabili, eseguono le istruzioni attraverso un linguaggio macchina binario, pertanto per poterli programmare facilmente è necessario utilizzare un linguaggio a livello più alto quale l’assembly. Sebbene l’utilizzo di questo linguaggio risolva il problema della realizzazione del codice da parte di un umano, spesso si preferisce adottare linguaggi ancora di più alto livello quali ad esempio BASIC, C e PASCAL. L’utilizzo di questi linguaggi consente di ottenere una maggiore semplicità nella stesura del codice e nella sua comprensione. Nella fattispecie per programmare il microcontrollore PIC si è fatto uso del compilatore “mikroBasic”, in versione freeware, facente uso del linguaggio BASIC e contenete al suo interno alcune librerie di gestione preprogrammate delle periferiche, tra cui quelle utilizzate nel firmware della scheda, ovvero le librerie ADC, EEPROM e UART.La libreria ADC si occupa di gestire in maniera semplice e diretta la conversione analogica di un canale (nel caso del sistema MassaBus il canale 0 corrispondente al terminale AN0 del PIC. La libreria EEPROM permette in maniera semplice di scrivere e leggere le locazioni di memoria della EEPROM di cui è dotato internamente il PIC, mentre la libreria UART permette di utilizzare in maniera semplice l’USART in modalità asincrona presente a livello hardware all’interno del microcontrollore.

Il firmware del pic implementato nella scheda Multi I/O Device, con l’uso delle librerie citate, svolge nel dettaglio le seguenti funzioni:

  • Provvede ad implementare le caratteristiche del protocollo MassaBus nella comunicazione con il bus.
  • Verifica periodicamente a ciclo continuo il dato in input per aggiornare un registro chiamato H formato da 8 bit che rappresentano gli ingressi aventi avuto una transazione da livello 0 a 1, ponendo tali bit a 1, ed un registro chiamato L formato da 8 bit che rappresentano gli ingressi che da livello 1 sono passati a 0, ponendo tali bit a 1. Questi registri vengono inoltre salvati in EEPROM in caso di variazione per poter essere ripristinati anche dopo un reset o spegnimento della scheda e sono liberamente resettabili tramite un comando.
  • Verifica periodicamente la disponibilità di dati dall’UART.
  • Le uscite dispongono di una modalità impulsiva che permette di attivare e disattivare le uscite impostate con un solo comando in un tempo da 0,5 a 255 secondi. Tali impostazioni sono contenute in due registri chiamati pulse_byte, con a livello 1 i bit rappresentanti le uscite impulsive, e pulse_delay con in binario il valore del ritardo tra l’accensione e lo spegnimento. Il tempo di ritardo è stato gestito attraverso il timer1 a 16 bit del microcontrollore PIC che attraverso il circuito interno, configurato con il prescaler a 8 divisioni e come frequenza base 1MHz proveniente dalla frequenza di clock (4MHz) diviso 4 (questo per l’architettura interna del pic), che provoca un interrupt ogni 0,526 secondi. Pertanto il valore del pulse_byte prima di essere confrontato con il numero degli interrupt avvenuti viene raddoppiato (come visibile nel firmware stesso) creando una temporizzazione che conta il secondo (in maniera ovviamente non precisa essendo 0,526 >0,5). L’utilizzo del timer consente al microcontrollore di eseguire altre operazioni durante il conteggio consentendo alla scheda di rimanere sempre vigile ai comandi impartitigli.
  • La scheda permette di convertire un valore di tensione analogico in digitale attraverso la gestione da parte del programma di un convertitore ADC interno. Questo convertitore può essere avviato singolarmente oppure insieme agli altri ADC con un comando in broadcast.
  • I registri H e L, il valore in output, i registri pulse_byte e pulse_delay nonché gli indirizzi vengono sono salvati nella memoria EEPROM ad ogni modifica consentendone il ripristino in caso di spegnimenti o reset.
  • Supporta la conversione del valore del convertitore A/D in maniera singola e in broadcast.
  • Essendo la conversione A/D in broadcast senza conferma, il firmware della scheda può permettere tramite una funzione una sola lettura a conversione, permettendo di capire se il comando era stato ricevuto correttamente.
  • Gestione del transceiver MAX485 per permettere la comunicazione nel bus condiviso.
  • Programmazione degli indirizzi diretta via software.

 

Di seguito è possibile osservare il diagramma di flusso progettato del programma inserito nel pic. In esso si fa riferimento a delle procedure esterne (decodifica dati, controllo input e codifica dati) che possono essere ritrovate in dettaglio nel firmware in linguaggio BASIC fornito. Nel diagramma di flusso progettato è possibile notare la presenza di un ciclo continuo (LOOP) che si occupa principalmente di resettare il Watchdog timer, controllare il valore binario degli ingressi input e di controllare la presenza di dati in transito nel bus. Tali dati se destinati alla scheda (direttamente o tramite indirizzo di broadcast) faranno eseguire al firmware le procedure richieste. E’ presente inoltre una speciale modalità che permette la programmazione iniziale degli indirizzi direttamente via software (con la necessità però di intervenire sull’apposito deviatore di selezione modalità presente sulla scheda).

Per ingrandire cliccare sopra l'immagine: si aprirà il PDF contenente l'immagine ingrandibile a piacere.

Il diagramma di flusso e il listato del programma da inserire nel PIC sono inclusi nel file allegato alla fine del progetto.

 

SCHEDA TEMPERATURE SENSOR

Il firmware di gestione è stato progettato, come per le altre schede aventi microcontrollore PIC, attraverso il compilatore mikroBasic pertanto valgono le stesse considerazioni fatte precedentemente. Il compilatore contiene al suo interno una libreria chiamata OneWire che permette la gestione diretta dei sensori di temperatura DS18S20 e del pin del microcontrollore adibito alla comunicazione con il sensore, attraverso delle subroutine apposite:

  • Ow_Reset(Porta, pin) che effettua il reset del sensore di temperatura e restituisce 1 se il sensore non viene rilevato;
  • Ow_Read(Porta, pin) che permette di leggere un dato nel bus OneWire;
  • Ow_Write(Porta, pin, dato) che permette di scrivere un dato nel bus OneWire.

 

Vengono utilizzate inoltre anche le librerie EEPROM per la gestione della omonima memoria e la libreria UART per il controllo della seriale. Essendo il tempo di conversione di 750ms per non rallentare il funzionamento del bus si è scelto di articolare il funzionamento della scheda con due tipi di funzioni normali: una per la partenza della conversone e una per il prelievo del valore convertito. Le funzioni svolte dal firmware sono le seguenti:

  • Provvede ad implementare le caratteristiche del protocollo MassaBus nella comunicazione con il bus.
  • La funzione di partenza della conversione della temperatura può essere effettuata singolarmente e in broadcast consentendo di inviare un unico comando di conversione a tutte le schede e permettendo successivamente di prelevare in maniera veloce il valore a tutte le schede senza attendere più volte il tempo di 750ms necessario alla conversione.
  • Il firmware utilizza il timer1 a 16 bit configurato per fornire un interrupt ogni 524ms (come nella scheda Multi I/O Device) che permette di scandire il tempo necessario alla conversione senza impegnare l’esecuzione del programma. Essendo l’unità temporale dell’interrupt di 524ms per effettuare un conversione coprendo i 750ms del sensore sono necessari due interrupt per poter poi prelevare il valore di temperatura.
  • In accordo con le funzioni del sensore la scheda può rilevare la presenza del sensore.
  • Essendo la conversione in broadcast senza conferma, il firmware della scheda può permettere tramite una funzione una sola lettura a conversione, permettendo di capire se il comando era stato ricevuto correttamente.
  • Gestione del transceiver MAX485 per permettere la comunicazione nel bus condiviso.
  • Programmazione degli indirizzi diretta via software.

 

Di seguito è possibile osservare il diagramma di flusso del programma inserito nel pic. In esso si fa riferimento a delle procedure esterne (decodifica dati, controllo input e codifica dati) che possono essere ritrovate in dettaglio nel firmware in linguaggio BASIC fornito. Nel diagramma di flusso progettato, analogamente a quello della Multi I/O Device, vi è presente un ciclo continuo (LOOP) che si occupa in questo caso principalmente di verificare la fine di un eventuale conversione del sensore iniziata precedentemente e la presenza di dati in transito nel bus. Se la scheda è richiamata (direttamente o tramite indirizzo di Broadcast) il firmware si occupa di effettuare l’operazione richiesta. Come in tutte le schede slave del sistema MassaBus è presente un speciale modalità (selezionabile sulla scheda tramite deviatore) che permette la programmazione degli indirizzi direttamente via software.

Per ingrandire cliccare sopra l'immagine: si aprirà il PDF contenente l'immagine ingrandibile a piacere.

Il diagramma di flusso e il listato del programma da inserire nel PIC sono inclusi nel file allegato alla fine del progetto.

 

SOFTWARE COMPUTER MASTER

Il software di gestione del PC master progettato si occupa della gestione di tutte le schede presenti nel sistema MassaBus e della gestione delle varie operazioni che il sistema domotico dovrà eseguire. Il software di gestione per avere la massima praticità è stato distinto in due entità software separate che comunicano tra di loro attraverso il protocollo TCP/IP. La prima chiamata MassaBus Controller è l’interfaccia software verso il protocollo software del sistema MassaBus e si occupa di gestire la comunicazione con i dispositivi slave e la porta seriale COM utilizzata nel PC. La seconda entità è quella che realmente effettua le  decisioni e le azioni da intraprendere nel sistema domotico e comunica con il software MassaBus Controller attraverso una porta TCP/IP selezionabile. Essa è liberamente programmabile dall’utilizzatore e permette di rendere il sistema MassaBus veramente adatto alle esigenze dell’utente finale. Nel dettaglio tale software potrà leggere le temperature dei vari sensori o leggere gli stati degli ingressi delle schede di I/O eseguendo azioni che verranno trasmesse all’esterno tramite le uscite delle schede di I/O, oppure comunicando via il software l’evento accaduto. L’utilizzo del TCP/IP consente sia l’utilizzo dei programmi a livello locale (specificando l’indirizzo IP locale di loopback), sia a livello di rete locale o addirittura di internet. Quest’ultimo utilizzo consente di far risiedere il software MassaBus Controller con il collegamento al bus domotico su un computer separato rispetto al software di controllo delle operazioni che il bus domotico dovrà effettuare. Entrambe le entità software sono state progettate e programmate tramite il linguaggio VisualBasic .net.

 

Il software MassaBus Controller è l’interfaccia software progettata tra il programma di controllo e il sistema domotico MassaBus. Esso è diviso in due modalità operative: comando manuale e comando automatico. Nella modalità a comando manuale è possibile controllare direttamente dal programma MassaBus ogni singola caratteristica di ogni scheda presente nel sistema. In questa modalità è disponibile una comoda ricerca automatica che effettua una scansione degli indirizzi utilizzati dalle varie schede e li restituisce in ordine su una lista. Nella modalità a comando automatico, invece, MassaBus controller apre un porta TCP/IP da cui sarà possibile inviare i comandi direttamente da un programma di controllo realizzato ad hoc per l’utente finale in grado di eseguire le attività del bus domotico, garantendo la massima praticità. Il software MassaBus controller provvederà poi a girare le risposte al programma via TCP/IP.

Il software dispone, inoltre, di alcune funzionalità accessorie:

  • Gestione delle impostazioni della porta COM
  • Programmazione degli indirizzi
  • Programmazione dei bit impulsivi di ogni scheda Multi I/O Device
  • Consultazione dei registri H e L di ogni scheda Multi I/O Device
  • Possibilità di creazione file di log contenete le principali attività accadute nel funzionamento

Essendo Vb.net un linguaggio di programmazione orientato ad oggetti il programma progettato è diviso in più classi funzionali, esse verranno descritte singolarmente di seguito.

 

Esempio software di controllo: MassaBus application example

Il software progettato MassaBus Controller da solo non è in grado di controllare le funzioni affidate al sistema domotico, per questo motivo esso dispone di una modalità automatica che permette ad un software esterno di controllare le varie unità del bus domotico attraverso un porta TCP/IP. Tale software può essere adattato al massimo per soddisfare le esigenze dell’utente finale. In questa parte si analizza un software di esempio per comprendere alcuni aspetti della domotica: il monitoraggio e la mutazione immediata delle funzioni. Il software di esempio progettato si occupa di visualizzare a video la temperatura di due sensori di temperatura (schede Temperature sensor) presenti nel bus e monitorare l’attivazione di un sensore di movimento piroelettrico PIR attraverso l’ingresso 1 di una scheda Multi I/O Device. Quando il sensore PIR rivelerà un movimento il software a seconda della modalità impostata via software può intraprendere due azioni: accendere una luce o attivare un allarme. Queste due funzioni vengono svolte in maniera immediata e senza alcuna modifica alla circuiteria del sistema, rappresentando quindi la praticità di utilizzo di un sistema domotico. La circuitazione di esempio utilizzata con il software di controllo e il sistema MassaBus dove è anche possibile vedere un esempio di assegnazione degli indirizzi nel bus.

Fare click sull'immagine per ingrandirla.

 

In tale circuito si nota la presenza di un campanello di allarme, di una luce e del sensore PIR per il rilevamento dei movimenti. Il campanello richiede una tensione di 12Vac, mentre la luce a led viene alimentata con 16Vdc eppure  non vie è alcun problema di pilotaggio essendo il relè considerabile come un normale deviatore meccanico. Il sensore PIR invece provvede a fornire al primo ingresso una tensione di 16Vdc (che è supportabile dalla scheda nonostante l’ingresso sia progettato per una tensione di 12V) che si occupa di attivare il fotoaccoppiatore di ingresso e il led di segnalazione. Questa applicazione ovviamente ha una dubbia utilità, permette però di capire come un sistema domotico possa “interagire” con l’ambiente circostante. Ad esempio se nel computer master viene installato un cellulare GSM con opportuno software di controllo comunicante via TCP/IP con il software MassaBus Controller, sarà possibile controllare a distanza l’ambiente in cui il sistema MassaBus è installato. Tutto questo tramite normali SMS o chiamate dati. Il circuito descritto montato fisicamente dove si possono notare in centro la campana di allarme, il sensore PIR e introno le schede MassaBus utilizzate. 

 

ALCUNE IMMAGINI: TEST E APPLICAZIONE PRATICA

Questo sistema è in continua evoluzione: gli aggiornamenti e le nuove schede open source vengono pubblicate a questo indirizzo http://www.massarielectronics.it/elettronica/5/15-sistema-domotico-massabus.html .

In fondo potete trovare il file con tutti i documenti necessari per approfondire struttura, funzionamento e realizzazione del sistema.

Purtroppo il file supera la dimensione massima caricabile nel sito, comunques il file è disponibile a questo indirizzo http://www.massarielectronics.it/filedir/files_elettronica/MassaBusFILE.zip .

AllegatoDimensione
diagramma di flusso scheda multi io.pdf973.79 KB
diagramma di flusso temperature sensor.pdf794.97 KB
schema alimentatore massabus.jpg25.25 KB
schema a blocchi interfaccia bus.jpg20.53 KB
schema interfaccia bus master.jpg40.1 KB
schema a blocchi scheda multi io.jpg24.18 KB
schema a blocchi scheda temperatura.jpg16.25 KB
schema a blocchi application example.JPG28.49 KB
schema scheda multi io.pdf291.53 KB
schema scheda temperatura.pdf96.85 KB

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog
ritratto di divivoma

...ma non c' è gia il

...ma non c' è gia il MODBus...?? cioè mi pare faccia le stesse cose..( nn sto dicendo che l'hai copiato) ma che in realtà un protocollo simile esiste già..

ritratto di Marco Massari

Penso che probabilmente un

Penso che probabilmente un protocollo simile esista, io ho semplicemente cercato una soluzione per far comunicare le schede e da qui è nato il protocollo caratteristico del sistema.

ritratto di orciml

protocollo

a cosa servono i 3 byte di fine trama visto che hai una trama fissa.
puoi contare i byte ricevuti dallo start.
lo stesso vale per i bit del checksum sai in che posizione si trova.

ciao Loris

ritratto di Marco Massari

Ciao, i 3 byte fine fine

Ciao, i 3 byte fine fine trama servono perché la funzione di mikroBasic (l'IDE usato per scrivere il firmware) che legge la seriale necessita di terminatore. Il terminatore formato dai 3 byte non è presente mai in altri byte quindi qualsiasi dato transita nel bus il terminatore rimane l'unico ad avere 3 byte con il valore 3. Questo permette di usare sia funzioni che contano i byte che ricevono come hai giustamente consigliato, sia funzioni che attendono un terminatore.

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 0 utenti e 29 visitatori collegati.

Ultimi Commenti