Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um...

79
Desenvolvimento de um Protótipo de um Sistema Domótico Francisco Daniel Matos Pinto Dissertação para obtenção do Grau de Mestre em Engenharia Electrotécnica e de Computadores Júri Presidente: Professor Doutor Nuno Cavaco Gomes Horta Orientador: Professor Doutor Renato Jorge Caleira Nunes Co-Orientador: Professor Doutor António Manuel Raminhos Cordeiro Grilo Vogal: Professor Doutor Alberto Manuel Ramos da Cunha Outubro de 2010

Transcript of Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um...

Page 1: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

Desenvolvimento de um Protótipo de um Sistema

Domótico

Francisco Daniel Matos Pinto

Dissertação para obtenção do Grau de Mestre em

Engenharia Electrotécnica e de Computadores

Júri

Presidente: Professor Doutor Nuno Cavaco Gomes Horta

Orientador: Professor Doutor Renato Jorge Caleira Nunes

Co-Orientador: Professor Doutor António Manuel Raminhos Cordeiro Grilo

Vogal: Professor Doutor Alberto Manuel Ramos da Cunha

Outubro de 2010

Page 2: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 3: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

III

Agradecimentos

Gostaria de agradecer a todos aqueles que me apoiaram nesta dissertação e também ao longo

da minha vida académica.

Ao Professor Renato Nunes, orientador da presente dissertação, pelo apoio, orientação e

disponibilidade.

Aos meus Pais e irmã, o meu profundo agradecimento pela possibilidade de obter este Curso e

pelo acompanhamento e apoio incondicional ao longo de toda a minha vida.

À Magui, por toda a compreensão, preocupação, dedicação e enorme ajuda a ultrapassar os

obstáculos encontrados.

Aos meus colegas e amigos, em especial ao Diogo Primor, Gilberto Rodrigues, Jorge Carola,

Luís Pragosa e Rafael Ferreira, pela amizade e pelo acompanhamento durante o percurso

académico. Gostaria também de agradecer ao Marco e ao Miguel e a todos os meus colegas

da Sala de TFC da Área Científica de Electrónica.

Page 4: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

IV

Page 5: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

V

Resumo

A automação de habitações – domótica – é um assunto que suscita o interesse da população

em geral. A existência de sistemas para realizar tarefas rotineiras, tornar a habitação mais

segura e ao mesmo tempo permitir poupar recursos como energia eléctrica, alicia o comum dos

consumidores. Um sistema domótico agrega um conjunto de tecnologias e de mecanismos que

funcionam em conjunto e como tal, necessitam de ser facilmente integráveis para melhor

servirem o utilizador. As soluções disponíveis actualmente possuem diversas restrições das

quais se destacam a sua incapacidade de interactuarem com outras tecnologias, dificuldade de

evoluírem e de se adaptarem a novas necessidades dos utilizadores e possuírem um elevado

custo.

Este trabalho foi desenvolvido no contexto do sistema DomoBus que tem como principais

objectivos ser flexível, integrável e de baixo custo, assim como oferecer mecanismos de

suporte à interoperação com outras tecnologias. No sentido de dar um contributo para melhorar

o sistema DomoBus foi desenvolvido trabalho ao nível dos seus Módulos de Controlo os quais

são implementados por sistemas embebidos de muito baixo recursos em termos de memória e

capacidade de processamento. Foi desenhada uma nova a arquitectura de software para os

módulos tendo como principais objectivos reduzir a complexidade das aplicações, simplificar o

seu desenvolvimento, torná-las mais fiáveis, oferecer capacidades multitarefa e garantir

características de tempo real. Adicionalmente foram desenvolvidas facilidades de comunicação

robustas que suportam retransmissões, optimizam o uso da largura de banda disponível e

evitam congestionamentos. Isto constituiu um desafio muito significativo devido aos recursos

extremamente limitados do microcontrolador usado, particularmente ao nível da memória. A

solução desenvolvida mostrou-se flexível e robusta, sendo facilmente portável para outras

plataformas embebidas dada a sua generalidade e independência quer do microcontrolador

usado quer de outros recursos específicos, nomeadamente ao nível da comunicação.

Palavras-chave:

Domótica, DomoBus, sistemas embebidos, aplicações domóticas, protocolos de comunicação,

sistemas de tempo real.

Page 6: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 7: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

VII

Abstract

Home automation - domotics - is a subject on which the population in general is interested. The

existence of systems with the possibility of performing routine chores and, at the same time, of

making resources saving, such as electrical energy, attracts a typical consumer. A domotic

system aggregates a group of technologies and mechanisms that work together and so, should

be easily integrable to better serve the user. The solutions that currently exist have some

restrictions namely the incapacity to interact with other technologies, difficulties to upgrade and

to adapt to the new needs of the users and are expensive.

This work was developed in the context of the domotic system DomoBus which intends to be a

flexible, integrable and low cost solution for home automation, and to provide mechanisms that

support interoperation with other technologies. The main objective of this dissertation is to

enhance the DomoBus system, developing a new version of the Control Modules that are

implemented by embedded systems with very low memory and processing resources. The goal

of this work is to design and implement a new software architecture that provides multitask and

real-time capabilities and reduce the complexity of applications, simplifying their development

and enhancing their reliability. Additionally it was also developed a new communication software

module that ensures robust communications that support retransmissions, optimizes bandwidth

usage and avoids congestions. The fulfillment of these features was very challenging due to the

extremely low memory resources available on the microcontroller used. The developed solution

proved to be flexible and robust, and easily portable to other embedded platforms due to its

generality and independence of specific hardware features offered by the microcontroller,

namely at the communication level.

Key-words:

Domotics, DomoBus, embedded systems, domotic applications, communication protocols, real-

time systems.

Page 8: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 9: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

IX

Índice

Agradecimentos............................................................................................................................ III

Resumo ......................................................................................................................................... V

Abstract ....................................................................................................................................... VII

Índice ............................................................................................................................................ IX

Lista de tabelas ............................................................................................................................ XI

Lista de figuras ............................................................................................................................ XII

Lista de abreviações ................................................................................................................. XIV

1 Introdução ............................................................................................................................. 1

1.1 Enquadramento ............................................................................................................. 1

1.2 Objectivos ...................................................................................................................... 2

1.3 Estrutura da dissertação ............................................................................................... 3

2 Trabalho relacionado ............................................................................................................ 5

2.1 Protocolos no domínio da Domótica ............................................................................. 5

2.1.1 Estrutura genérica de um protocolo de comunicação ........................................... 5

2.1.2 Protocolos de comunicação vocacionados para domótica ................................... 6

2.1.3 Suporte à interoperação ........................................................................................ 9

2.1.4 Outros protocolos de comunicação ....................................................................... 9

2.1.5 Comparação de tecnologias com aplicabilidade domótica ................................. 12

2.2 Sistemas Operativos e ambientes de desenvolvimento ............................................. 13

2.3 Microcontroladores ...................................................................................................... 16

2.4 Sistema DomoBus ....................................................................................................... 19

3 Sistema DomoBus .............................................................................................................. 21

3.1 Componentes do sistema ............................................................................................ 21

3.2 Rede do sistema DomoBus e acesso ao meio ........................................................... 22

3.3 Hardware dos módulos ............................................................................................... 24

3.3.1 Módulos de Controlo ........................................................................................... 24

3.3.2 Módulos de Supervisão ....................................................................................... 25

3.4 Software dos Módulos de Controlo ............................................................................. 26

4 Arquitectura de software dos Módulos de Controlo ........................................................... 29

4.1 Núcleo de tempo real .................................................................................................. 29

4.2 Comunicação ............................................................................................................... 30

4.3 Suporte das aplicações DomoBus .............................................................................. 32

4.3.1 Módulo de Gestão das Propriedades .................................................................. 35

4.3.2 Módulo de Tratamento das Mensagens .............................................................. 35

4.3.3 Módulo de acesso à EEPROM ............................................................................ 37

4.4 Aplicações DomoBus implementadas ......................................................................... 37

4.4.1 Aplicação de gestão do nó .................................................................................. 37

4.4.2 Aplicação Relay – Actuações ligar/desligar ........................................................ 37

Page 10: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

X

4.4.3 Aplicação Switch – Leitura de interruptores ........................................................ 38

5 Detalhes de Implementação ............................................................................................... 39

5.1 Comunicação ............................................................................................................... 39

5.2 Suporte das aplicações DomoBus .............................................................................. 42

5.2.1 Módulo PROP ...................................................................................................... 42

5.2.2 Módulo MSG ........................................................................................................ 45

5.3 Arquitectura das aplicações DomoBus implementadas .............................................. 48

6 Avaliação e testes ............................................................................................................... 51

6.1 Impacto da adição de um campo novo nas tramas .................................................... 51

6.2 Utilização de respostas só com o número de sequência ............................................ 53

6.3 Impacto da utilização de respostas super-prioritárias ................................................. 56

6.4 Melhorias introduzidas com o ajuste do tempo de acesso ao meio ........................... 58

6.5 Análise dos resultados ................................................................................................ 59

7 Conclusões ......................................................................................................................... 61

7.1 Trabalho futuro ............................................................................................................ 62

8 Referências ......................................................................................................................... 65

Page 11: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

XI

Lista de tabelas

Tabela 1 - Campos das tramas do tipo Data Frames do sistema CAN Bus ............................... 11

Tabela 2 - Principais características de diferentes tecnologias com aplicabilidade domótica ... 13

Tabela 3 - Lista de operações para tratamento das propriedades ............................................. 20

Tabela 4 - Características da placa de desenvolvimento CS-EP930x relevantes para a função

de supervisão ..................................................................................................................... 26

Tabela 5 - Funções de manipulação de eventos e propriedades do módulo PROP .................. 44

Tabela 6 - Funções implementadas no módulo MSG ................................................................. 47

Tabela 7 - Tempo de trama e débito para tráfego reduzido e para os vários tipos de

propriedade ......................................................................................................................... 51

Tabela 8 - Tempo de trama e débito para tráfego elevado e para os vários tipos de propriedade

............................................................................................................................................ 52

Tabela 9 - Tempo de trama e débito para tráfego reduzido para as condições descritas na

secção 6.2 (tráfego reduzido) ............................................................................................. 54

Tabela 10 - Tempo de trama e débito para tráfego elevado para as condições descritas na

secção 6.2 (tráfego elevado) .............................................................................................. 55

Tabela 11 – Comparação do tempo de trama e débito para a situação descrita na secção 6.3

(tráfego reduzido) ............................................................................................................... 56

Tabela 12 - Tempo Comparação do tempo de trama e débito para a situação descrita na

secção 6.3 (tráfego elevado) .............................................................................................. 57

Page 12: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

XII

Lista de figuras

Figura 1 - Protocolo de comunicação OSI 5

Figura 2 - Transmissão de bits no X10 ......................................................................................... 7

Figura 3 - Tempo de acesso ao meio para o envio de um pacote de dados [9] ........................... 8

Figura 4 - Tempo de acesso ao meio com a existência de pacotes prioritários [9] ...................... 8

Figura 5 – Trama do tipo Standard [23] ...................................................................................... 10

Figura 6 – Trama do tipo Extended [23] ...................................................................................... 10

Figura 7 - Método do CAN Bus para atribuição do barramento ao dispositivo de transmissão

[23] ...................................................................................................................................... 11

Figura 8 - Funções de um Sistema Operativo ............................................................................ 14

Figura 9 - Placa AT90USBkey .................................................................................................... 18

Figura 10 - Placa ATAVRAUTO100 ............................................................................................ 18

Figura 11 - Placa AVR Butterfly .................................................................................................. 18

Figura 12 - Placa AVRRAVEN .................................................................................................... 19

Figura 13 - Placa Arduino Uno .................................................................................................... 19

Figura 14 - Componentes e arquitectura do sistema DomoBus ................................................. 21

Figura 15 - Intervalos de tempo para acesso ao meio ................................................................ 23

Figura 16 – Formato da trama DomoBus .................................................................................... 23

Figura 17 - Módulo de Controlo................................................................................................... 25

Figura 18 - Placa de desenvolvimento CS-EP930X utilizada como Módulo de Supervisão ...... 26

Figura 19 - Comunicação Série Assíncrona ............................................................................... 30

Figura 20 - Controlo de congestionamento através do algoritmo AIMD ..................................... 32

Figura 21 - Integração das aplicações com os diferentes módulos ............................................ 33

Figura 22 – Estrutura de uma mensagem DomoBus normalizada ............................................. 34

Figura 23 - Aplicação Relay ........................................................................................................ 38

Figura 24 - Aplicação Switch ....................................................................................................... 38

Figura 25 - Esquema simplificado da máquina de estados da NET ........................................... 41

Figura 26 – Exemplo de array de eventos e respectiva ordenação por tipo (Byte (B), Word (W)

ou Array (A)), aplicação (A), número de propriedade (P) e dispositivo (D) ........................ 43

Figura 27 - Byte de controlo que permite indicar a validade do valor de uma propriedade e o

número de sequência para emparelhar mensagens .......................................................... 43

Figura 28 - Byte que indica o valor atribuído aos eventos .......................................................... 44

Figura 29 - Procedimento para obter da EEPROM o esqueleto da mensagem pretendida ....... 46

Figura 30 - Representação simplificada da máquina de estados do módulo MSG .................... 47

Figura 31 - Comparação do débito de tramas com e sem número de sequência no campo de

dados (tráfego reduzido)..................................................................................................... 52

Figura 32 - Comparação do débito de tramas com e sem número de sequência no campo de

dados (tráfego elevado) ...................................................................................................... 53

Figura 33 - Comparação do débito utilizando mensagens nas condições descritas na secção

6.2 (tráfego reduzido) ......................................................................................................... 54

Page 13: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

XIII

Figura 34 - Comparação do débito utilizando mensagens nas condições descritas na secção

6.2 (tráfego elevado) ........................................................................................................... 55

Figura 35 - Comparação do débito para a situação descrita na secção 6.3 (tráfego reduzido) . 57

Figura 36 - Comparação do débito para a situação descrita na secção 6.3 (tráfego elevado) .. 58

Page 14: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

XIV

Lista de abreviações

AIMD Additive-Increase, Multiplicative-Decrease

API Application Programming Interface.

BACnet Building Automation and Control Networks.

CAN Controller Area Network.

CPU Central Processing Unity

CRC Cyclic Redundancy Check.

CSMA/CD Carrier Sense Multiple Access with Collision Detection.

EEPROM Electrically-Erasable Programmable Read-Only Memory

EHS European Home Systems Protocol.

EIB European Installation Bus.

FIFO First In First Out

KNX Konnex Networks.

MMC MultiMediaCard

OSI Open Systems Interconnection.

RAM Random Access Memory

RISC Reduced Instruction Set Computing

SD Secure Digital

SDRAM Synchronous Dynamic Random Access Memory

SPI Serial Peripheral Interface Bus

UART Universal Asynchronous Receiver/Transmitter

UPnP Universal Plug and Play.

XML Extensible Markup Language.

Page 15: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

1

1 Introdução

1.1 Enquadramento

A domótica congrega um conjunto de tecnologias que têm como principal objectivo a

automação de uma habitação e que permitem, para além da realização de algumas tarefas

rotineiras, proporcionar segurança, gerir o consumo de energia e de outros recursos, conforto e

integração de serviços aos utilizadores do sistema.

Existem pontos convergentes entre a domótica e a automação de edifícios – edifícios

inteligentes ou imótica – mas continua a ser possível distingui-los. Enquanto no primeiro caso o

objectivo principal é o de dotar o lar de um maior conforto e segurança, no caso dos edifícios a

área de actuação é distinta visto que os objectivos são diferentes. Os edifícios inteligentes

podem permitir, entre outras funcionalidades, gerir os elevadores, controlar o estacionamento e

os acessos, manter a climatização adequada e poupar energia. Obviamente que nas

habitações automatizadas também podem existir sistemas para controlar acessos e para

conseguir uma poupança energética mas, estes sistemas têm características e especificações

completamente diferentes das dos edifícios inteligentes.

A possibilidade de um sistema domótico ter a capacidade de tomar decisões e de se adaptar

ao meio em que está inserido e aos seus utilizadores permite poupar tempo, esforço e dinheiro.

Estes pressupostos aliados à introdução de um maior conforto e segurança motivam o

interesse da população em geral que vê também neste conjunto de tecnologias, uma mais-valia

para tornar mais independentes pessoas idosas ou portadoras de deficiências [1].

Apesar do interesse da população nos sistemas domóticos, estes continuam longe de estar

presentes na maioria dos lares. A ausência de um único meio de comunicação comum a todos

os dispositivos obriga à utilização da cablagem já existente ou à instalação de soluções

proprietárias que hipotecam a expansão do sistema, sendo uma explicação para a existência

deste cenário. Anteriormente, a cablagem que existia nas habitações limitava-se ao

fornecimento de energia eléctrica e ao serviço de telefone sendo que com o aparecimento de

produtos como sistemas de alarmes ou videovigilância, estes tiveram de ser instalados com

uma rede de fios própria levando à existência de uma habitação com um conjunto de fios sem

a capacidade de dialogar entre si. Esta situação piora com o facto de os fios de telefone, por

exemplo, não terem capacidade para comunicações de velocidade elevada nem flexibilidade

para configurações. Os fios utilizados para a instalação eléctrica precisam igualmente de um

isolamento conveniente para não causarem interferências ou ruído, potencialmente

problemáticos, quando utilizados para automação de habitações [3]. Neste momento, com o

advento de novos serviços de telecomunicações, que necessitam de uma rede específica e

muitas vezes com cabo coaxial, cada vez mais lares dispõem de um meio de comunicação

Page 16: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

2

fiável e de elevado débito e que, apesar de não ser possível aproveitá-lo para fins de

alimentação eléctrica ou para comunicações internas, pode ser utilizado para as soluções

domóticas comunicarem com o exterior oferecendo possibilidades de gestão e supervisão do

sistema.

O meio de comunicação surge como aspecto diferenciador dos vários sistemas domóticos

existentes no mercado sendo que a especificidade das aplicações (com necessidades de

consumo e de largura de banda diferenciados) e das próprias habitações, assim como o facto

de muitas vezes se ter de recorrer a diferentes meios de comunicação para a implementação

do sistema, torna difícil o estabelecimento de uma norma e compromete ainda mais a

implementação em larga escala dos sistemas domóticos [2]. O preço é também influenciado

pelos aspectos citados e surge igualmente como um problema para a adesão a estas

tecnologias [1].

1.2 Objectivos

O cenário descrito na secção anterior serviu de ponto de partida para o desenvolvimento de um

sistema domótico denominado por DomoBus, no qual se baseia este trabalho, e que tem como

finalidade possibilitar a integração com outros sistemas, ter capacidade de expansão e muito

baixo custo. Esta dissertação pretende demonstrar que utilizando microcontroladores de muito

baixos recursos, interligados numa rede de sensores e actuadores, é possível criar um sistema

domótico com um elevado grau de funcionalidades, com um custo muito reduzido e com uma

elevada fiabilidade e robustez. Torna-se também possível a ligação a outras redes permitindo

uma monitorização e comando locais ou remotos e oferecendo suporte a mecanismos de

interoperação [19].

A disponibilização de dispositivos de muito baixo custo e que se interligam em rede abre

caminho à implementação de sistemas de grande dimensão (com um elevado número de

dispositivos) permitindo soluções de super-automatização dotadas de um conjunto sofisticado

de funcionalidades e oferecendo um suporte adequado à criação de ambientes inteligentes.

Dado o objectivo de se usarem microcontroladores com recursos bastante limitados,

principalmente em termos de memória, isso constitui um desafio para a criação de uma

plataforma de software que simplifique o desenvolvimento das aplicações e permita reduzir a

dimensão do seu código. Em consonância com este objectivo, pretende-se também

desenvolver um novo módulo de comunicação fiável que suporte retransmissões, e que

optimize a largura de banda disponível, minimizando as colisões e oferecendo mecanismos de

controlo de congestionamento. Pretende-se deste modo desenvolver mecanismos de

comunicação bastante fiáveis e eficientes, o que representa um desafio muito significativo

considerando a reduzida capacidade de memória dos microcontroladores usados – 512 bytes.

Page 17: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

3

Os desenvolvimentos a realizar seguem o modelo DomoBus, pretendendo-se oferecer às

aplicações um conjunto de serviços que simplificam a leitura e a alteração das propriedades

associadas a cada dispositivo domótico. Dada a generalidade do modelo, pretende-se que

muitas operações possam ser realizadas de forma automática (por exemplo, a leitura de

propriedades ou a notificação de alterações) sem que a aplicação tenha de se preocupar com

esses detalhes.

A solução a desenvolver deverá também ser facilmente portável para outras plataformas e

microcontroladores, pelo que serão apenas usados recursos básicos disponíveis na

generalidade dos microcontroladores (um temporizador e uma UART) e evitando-se o recurso

a hardware específico como, por exemplo, controladores de comunicação.

1.3 Estrutura da dissertação

No segundo capítulo desta dissertação é feito o levantamento de protocolos com aplicabilidade

domótica, de sistemas operativos para sistemas embebidos e apresenta-se uma listagem de

microcontroladores e de placas de desenvolvimento em que estes se encontram inseridos. É

também feita uma introdução ao sistema DomoBus.

Dado que este trabalho se centra sobre o sistema DomoBus este será aprofundado no terceiro

capítulo, sendo descrita a sua arquitectura e os principais componentes que o constituem,

assim como o protocolo de comunicação usado.

No quarto capítulo é proposta a nova arquitectura de software para os Módulos de Controlo,

sendo abordado o sistema operativo, o módulo de comunicação e a plataforma de suporte às

aplicações DomoBus.

O quinto capítulo descreve os detalhes da implementação dos módulos de software.

A contribuição deste trabalho é validada no sexto capítulo onde são feitos testes e

apresentados resultados seguidos da respectiva análise.

As conclusões da dissertação e propostas para trabalhos futuros são apresentadas no sétimo

capítulo.

Page 18: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 19: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

5

2 Trabalho relacionado

2.1 Protocolos no domínio da Domótica

2.1.1 Estrutura genérica de um protocolo de comunicação

Para haver comunicação, é sempre necessária a existência de uma fonte (emissor), de uma

mensagem e de um receptor. Um protocolo de comunicação descreve formalmente o formato

da mensagem a ser transmitida e as respectivas regras de transmissão relativamente à sintaxe,

semântica e sincronização da comunicação. Assim, em 1984 foi desenvolvido pela International

Organization for Standardization (ISO) uma norma de comunicações entre redes de

computadores distribuído por sete camadas, ou níveis, (física, lógica, rede, transporte, sessão,

apresentação e aplicação) para definir as diferentes fases pelas quais a informação passa de

um dispositivo para outro através de uma rede. Este modelo tem o nome de Open Systems

Interconnection (OSI).

Figura 1 - Protocolo de comunicação OSI

As três primeiras camadas consideram-se a base para definição das características da rede de

dados e aqui não existe qualquer interacção directa com os utilizadores finais. A primeira,

camada física, tem a função de conseguir transmitir correctamente um bit sobre o meio físico

de interligação e é necessário ter em conta as características de propagação do sinal para

definir este nível. O nível lógico utiliza os serviços da camada física para enviar pacotes de

dados entre duas máquinas ligadas à mesma rede física. Aqui, é muito importante controlar a

multiplexagem do meio de transmissão para ser possível enviar a trama e garantir que os

dados enviados são recebidos correctamente sem serem adulterados por falhas no meio físico.

O método de detecção mais utilizado (baseado em códigos polinomiais) é o Cyclic Redundancy

Code (CRC) já que a sua implementação em hardware é simples. No receptor são executadas

Page 20: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

6

as operações inversas de modo a ser possível extrair a informação. A camada de rede, ao

contrário da camada lógica, considera a rede como uma entidade lógica que interliga máquinas

independentemente das redes físicas a que estão ligadas. A rede passa então a considerar-se

como resultante da interligação de várias redes físicas ou sub-redes. Este nível é também

responsável por suportar os mecanismos necessários ao encaminhamento dos pacotes de

dados entre quaisquer sistemas que a ele se encontram ligados, independentemente da rede

física. O nível de transporte oferece um serviço de transmissão de mensagens que permite a

comunicação entre utilizadores finais do sistema de comunicação. Para garantir uma

comunicação fiável, o nível de transporte tem de detectar a existência de faltas e assegurar a

sua recuperação. As faltas podem ter origem na corrupção dos dados, na perda de

mensagens, na sua duplicação ou na eventual recepção de mensagens dos níveis inferiores

numa ordem incorrecta. A recuperação de faltas efectua-se retransmitindo a mensagem. A

camada de sessão permite multiplexar várias instâncias de comunicação sobre a mesma

ligação de transporte. Em muitas arquitecturas este nível não existe ou então está parcialmente

englobado noutra camada. O nível de apresentação permite compatibilizar a informação entre

sistemas diferentes pois a representação de dados relativa a cada sistema, depende da

arquitectura dos processadores, unidades aritméticas e também das linguagens e

compiladores utilizados. Por fim, o nível de aplicação engloba as funcionalidades relativas às

aplicações propriamente ditas [1].

Existem diversos protocolos de comunicação com potencial para serem utilizados numa

aplicação domótica. Para além daqueles que são específicos para a automação habitacional,

existem outros que devido à sua versatilidade podem ser igualmente utilizados. Apresenta-se

de seguida a descrição de alguns protocolos com aplicabilidade domótica.

Os protocolos mais comuns usados em domótica apenas possuem as camadas física, lógica e

de rede passando de imediato para a camada de aplicação.

2.1.2 Protocolos de comunicação vocacionados para domótica

Konnex Networks (KNX) – é uma norma (EN 50090, ISO/EIC 14543) e resulta da

convergência de três protocolos anteriores: European Instalation Bus (EIB), European Home

System Protocol (EHS) e Batibus. Herdou do EIB a pilha de protocolos de comunicação tendo

esta sido complementada com a camada física dos outros dois sistemas. Devido ao facto de

contemplar vários meios de comunicação (rede eléctrica, par entrelaçado, rádio frequência,

infravermelhos e Ethernet) e de existir a possibilidade de incluir gateways para outros meios,

torna-se um sistema flexível. Tal como esperado, a taxa de transferência deste sistema varia

consoante o meio de comunicação utilizado: na rede eléctrica situa-se nos 1200 bps e esta

taxa aumenta quando se utiliza rádio frequência e par entrelaçado atingindo nestes casos os

valores de 16 kbps e 9600 bps, respectivamente [5]. Este sistema é bastante fiável mas tem a

desvantagem de a sua implementação ter, normalmente, um custo elevado [1].

Page 21: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

7

X10 – este protocolo utiliza a instalação eléctrica existente numa habitação para comunicar

entre dispositivos permitindo a sua utilização em casas já existentes, sem necessidade de

utilizar cabos adicionais. Este aspecto torna-o um dos sistemas de maior aceitação e

acessibilidade económica [1][2]. Cada dispositivo possui uma identificação e reage apenas aos

comandos que lhe são endereçados. O bit “1” corresponde a uma rajada de 120 kHz e o bit “0”

corresponde à ausência desta. No primeiro caso, cada rajada (com duração de 1 ms) é enviada

com um desfasamento máximo de 200 µs. De modo a melhorar a relação sinal/ruído e para

diminuir a probabilidade de o ruído eléctrico poder ser confundido com um sinal válido, optou-

se por enviar sempre o bit seguido do seu complemento. Assim, o bit “1” é representado por

uma rajada (120 kHz) seguida de um 0 (ausência de sinal) e o bit “0” por silêncio (ausência de

sinal) seguido de uma rajada (120 kHz). Desta maneira conseguem-se transmitir 50 bps numa

rede eléctrica de 50 Hz. Uma transmissão padrão deste protocolo inclui os quatro seguintes

campos [2]:

• Código de início: todos os comandos devem ser iniciados com o código “1110” de

modo a ser sinalizado o início de uma trama. Ao contrário de todos os outros campos,

esta sequência não é acompanhada do envio dos seus bits complementares;

• Código de casa: identifica a casa. São utilizados 4 bits (mais os seus valores

complementares). No total existem 16 combinações possíveis;

• Código de dispositivo ou função: 4 bits (mais respectivos bits complementares). São

portanto possíveis 16 combinações diferentes;

• Dispositivo/Função: indica se o código anterior corresponde a um dispositivo ou a uma

função. É utilizado um bit seguido do seu valor complementar.

Figura 2 - Transmissão de bits no X10

São necessários 11 períodos do sinal da rede eléctrica para transmitir uma mensagem

completa. O envio do código de início demora 2 ciclos, o código da casa necessita de 4 ciclos e

o código de Dispositivo/Função demora 4 ciclos a ser transmitido. Entre comandos, deve existir

uma pausa de 3 ciclos e este facto leva a que exista uma latência que se torna perceptível e

faz com que este protocolo seja ineficiente para interacção com utilizadores [24].

LonWorks – criado pela Echelon Corporation, este protocolo é especialmente dirigido ao

desempenho e fiabilidade das aplicações de controlo. Suporta vários meios físicos de

comunicação tais como: par entrançado, fibra óptica e rádio frequência. Esta tecnologia

Page 22: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

8

implementa as sete camadas do modelo de redes de comunicação Open Systems

Interconnection (OSI) e tem diversas características tais como: detecção de mensagens

duplicadas, prevenção de colisões, retransmissão automática e detecção e correcção de erros.

Para além destas características, o LonWorks tem um modo de acesso ao meio denominado

por Predictive p-Persistent CSMA. À semelhança de qualquer protocolo Carrier Sense Multiple

Access (CSMA), os dispositivos LonWorks acedem ao meio após um período de tempo com

uma componente fixa e outra aleatória. Deste modo evita-se, ou pelo menos minimiza-se, a

colisão de dados. Mais concretamente, este sistema divide a componente aleatória em partes

iguais de tempo e portanto quando um dispositivo tiver uma mensagem para enviar, fá-lo-á

num determinado intervalo com uma probabilidade p que será ajustada de acordo com o nível

de tráfego da rede, Figura 3.

Figura 3 - Tempo de acesso ao meio para o envio de um pacote de dados [9]

Numa situação de rede inactiva, o tempo de espera aleatório é dividido em 16 partes e portanto

os dispositivos aguardam em média 8 fatias de tempo. À medida que o tráfego na rede for

aumentando, o número de divisões de tempo será multiplicado por uma constante com um

valor entre 0 e 63. Assim, o máximo tempo de espera para um dispositivo aceder ao meio é o

equivalente a 1008 (63 * 16) fatias de tempo. A percepção do estado da rede está relacionada

com o número de confirmações recebidas pelos dispositivos após o envio de uma mensagem.

É também disponibilizado um mecanismo para melhorar a transmissão de pacotes críticos

privilegiando o acesso ao meio a dispositivos prioritários, Figura 4, já que estes serão

transmitidos em primeiro lugar.

Figura 4 - Tempo de acesso ao meio com a existência de pacotes prioritários [9]

O sistema LonWorks apresenta débitos os seguintes débitos: 78.13 kbps para cabo

entrançado, 5.4 kbps para redes eléctricas de 60 Hz e 3.6 kbps para redes eléctricas de 50 Hz.

Page 23: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

9

Tem, contudo, a grande desvantagem de ser necessário utilizar um processador específico, o

Neuron [9].

2.1.3 Suporte à interoperação

Building Automation and Control Networks (BACnet) – desenvolvido para permitir

comunicação entre sistemas de aplicação Domótica, este protocolo (ISO 16484-5) começou a

ser desenvolvido em 1987. BACnet define um número de serviços que são utilizados para

comunicar entre dispositivos (“Who-Is”, “I-Am”, “Who-Has”, “I-Have”). Este protocolo pode

comunicar, por exemplo, por Ethernet ou RS-232 e ser incluído em redes com outros sistemas

tais como o LonWorks ou KNX [6].

Universal Plug and Play (UPnP) – este conjunto de protocolos (ISO/IEC 29341) utiliza as

portas TCP 5000 e UDP 1900 e tem como objectivo permitir que os dispositivos se liguem de

uma forma transparente e simplificada permitindo uma maior facilidade para dotar uma

habitação de partilhar de ficheiros, comunicações e entretenimento. A razão para o nome desta

tecnologia tem a ver com o facto de após a ligação de um dispositivo, este poder

dinamicamente obter um endereço, ter acesso aos serviços disponíveis e comunicar com

outros dispositivos. Os dispositivos UPnP têm, para além destas, outras características:

• Dispositivos independentes do meio: um dispositivo pode ser utilizado em diversos

meios (com ou sem fios) com suporte IP;

• Possibilidade de utilização de um qualquer Sistema Operativo e linguagem de

Programação – UPnP não restringe o desenvolvimento de Application Programming

Interface (API);

• Escalabilidade: cada dispositivo pode ter serviços específicos definidos pelos

fabricantes;

• A interface disponibilizada ao utilizador pode ser acedida através de um navegador

Web.

A descrição UPnP para cada dispositivo é escrita em Extensible Markup Language (XML) e

inclui informações como nome do fabricante, nome e número de série. Inclui também uma lista

de serviços embebidos assim como de comandos aos quais o dispositivo responde [10].

2.1.4 Outros protocolos de comunicação

Controller Area Network (CAN) BUS – originalmente desenvolvido nos anos 80 para que os

diversos dispositivos electrónicos que constituem um automóvel pudessem comunicar entre si

e efectuar toda a gestão do funcionamento do veículo. A parte mais divulgada do protocolo

CAN BUS reside na camada lógica do modelo de redes de comunicação OSI e tem

actualmente outras áreas de aplicação que não apenas no contexto dos veículos como, por

exemplo, automação industrial, equipamento médico e Domótica.

Page 24: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

10

A norma define a existência de quatro tipos de tramas:

• Data Frame: utilizada para enviar informação genérica de um dispositivo para outro;

• Remote Frame: este tipo de trama é utilizado pelo dispositivo receptor para pedir ao

dispositivo emissor a transmissão de uma mensagem;

• Error Frame: geradas e transmitidas pelo hardware e utilizada para indicar a

ocorrência de um erro durante a transmissão;

• Overload Frame: utilizada pelo dispositivo receptor para indicar que ainda não está

preparado para receber tramas.

As Data Frames são as mais comuns e as mais importantes para o utilizador interagir com o

sistema e podem ser do tipo standard frame ou extended frame, que diferem no número de bits

que compõe o campo que identifica o dispositivo, 11 bit ou 29 (11+18) bit, respectivamente

(Figura 5 e Figura 6).

Figura 5 – Trama do tipo Standard [22]

Figura 6 – Trama do tipo Extended [22]

A descrição dos campos que compõem a trama encontra-se na Tabela 1.

Page 25: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

11

Tabela 1 - Campos das tramas do tipo Data Frames do sistema CAN Bus

Campo Descrição Dimensão

Start of

Frame

Indica o início da trama e está

presente nas Standard Frame e

Extended Frame

1 bit

Arbitration Indica a prioridade da trama de

modo a resolver conflitos quando

vários dispositivos iniciam o envio

de mensagens para o meio

11 bit para Standard Frame e

29 bit para Extended Frame

Control Indica o número de bytes do campo

Data na mensagem a ser enviada

6 bit (2 bit são reservados)

Data Contém a mensagem a ser

transmitida

Pode variar entre 0 e 64 bit

CRC Utilizado para verificar a

integridade da mensagem

transmitida

16 bit

ACK Indica que a mensagem foi

correctamente recebida

2 bit

Cada nó pode enviar ou receber mensagens (não simultaneamente) e é disponibilizado um

sistema para arbitrar as prioridades: se o barramento estiver livre, qualquer nó pode transmitir

mas, se dois ou mais dispositivos tentarem iniciar o envio da mensagem ao mesmo tempo, a

mensagem com o identificador dominante (com mais bits dominantes – zeros) terá acesso ao

barramento caso contrário, entrará no modo de recepção. Na Figura 7, o bit 8 do nó 2 tem um

valor recessivo - 1- enquanto os restantes têm um valor dominante. Este nó entra portanto no

modo de recepção (representado a cinzento na figura). O décimo bit do nó 1 está no estado

recessivo enquanto o do nó 3 está no estado dominante. Assim, o nó 3 ganha acesso ao

barramento e pode transmitir os dados livremente e o nó 1 altera o seu estado para recepção.

Figura 7 - Método do CAN Bus para atribuição do barramento ao dispositivo de transmissão [22]

Page 26: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

12

Cada nó necessita de um processador, onde os sensores e actuadores estão ligados e onde a

mensagem recebida vai ser interpretada e a mensagem a enviar vai ser escolhida, um

controlador CAN, que no caso de recepção guarda os bits e no caso de envio envia para o

barramento de forma série e um transceiver (integrado ou não no controlador) que faz a

adaptação entre os níveis do sinal de barramento e o do controlador CAN. Para distâncias

inferiores a 40 m o débito máximo é de 1 Mbps [11] baixando para 40 kbps para uma distância

de 1000 m (máxima). O CAN tem a grande desvantagem de, tal como referido, ter de recorrer a

um controlador próprio o que eleva os custos de aquisição do hardware [22]. É relativamente

fácil encontrar microcontroladores que incluem um controlador de comunicações CAN mas

estes possuem um custo mais elevado face a microcontroladores equivalentes sem CAN.

PROFIBUS – protocolo pertencente à família FieldBus - rede de computadores para controlo

distribuído em tempo real e utilizada predominantemente em aplicações industriais – seguindo

a norma EN 50170 e contando com três variantes principais:

• PROFIBUS-DP (Descentrallised Periphery): solução de alta velocidade, voltada

essencialmente para sistemas de controlo com tempo crítico e recorrendo ao meio

físico RS-485 ou fibra óptica. Esta variante é indicada para o chão de uma fábrica,

onde existe um grande volume de informações;

• PROFIBUS-FMS (Fieldbus Message Specification): evolução da variante anterior e

utilizada para redes de controladores programáveis - PLCs - e PCs;

• PROFIBUS-PA (Process Automation): versão mais recente do PROFIBUS e tem como

principal característica a possibilidade de transferir dados através da cablagem de

alimentação.

Recorrendo ao meio físico RS-485, a comunicação pode ser efectuada com um débito entre

9.6 kbps (até 1200 m) a 12 Mbps (até 100 m) e permite 32 dispositivos por segmento, até ao

total de 127 dispositivos [12].

2.1.5 Comparação de tecnologias com aplicabilidade domótica

A Tabela 2 contém os principais aspectos que normalmente são tidos em conta na altura de

optar por uma solução domótica. O CAN Bus não sendo específico para domótica, pode ser

utilizado. Já em relação ao PROFIBUS, dada a sua natureza industrial e o reduzido número de

dispositivos que suporta, não se conhece nenhuma utilização na automatização de habitações.

Page 27: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

13

Tabela 2 - Principais características de diferentes tecnologias com aplicabilidade domótica

Número máximo

de dispositivos

Duração típica

de uma trama

(ms)

Ritmo de

Transmissão Custo

KNX 65536 20 a 40

Par entrançado:

9.6 kbps;

Linha eléctrica:

1.2 kbps;

Rádio

frequência: 16

kbps

Elevado

LonWorks 248 4

Par entrançado:

78 kbps;

Linha eléctrica:

5.4 kbps a 60 Hz

e 3.6 kbps a 50

Hz

Elevado

X10 256 940 50 bps Baixo/médio

CAN 2048 0.118 a 1 Mbps

e 12.3 a 9.6 kbps

1 Mbps até 40 m

40 kbps até 1000

m Médio

PROFIBUS 127

0.163 a 12 Mbps

e 203 a 9.6 kbps

(tramas até 244

bytes)

12 Mbps até 100

m

9.6 kbps até 1200

m

Elevado

2.2 Sistemas Operativos e ambientes de desenvolvimento

Um sistema operativo é uma plataforma de software que gere as diferentes aplicações e

implementa a interface entre estas e todos os componentes de hardware. Dado que a cada

momento várias tarefas e/ou periféricos necessitam dos recursos do sistema a fim de os seus

pedidos serem processados, cabe ao sistema escalonar, atribuir, intercomunicar e gerir as

tarefas, a memória, o processador e os restantes recursos. A gestão do sistema de ficheiros e

das interfaces de comunicação, a abstracção do hardware para que o programador não tenha

de conhecer todos os seus detalhes no momento de desenvolvimento das aplicações e o

fornecimento de uma interface de aplicação (API) aos programadores, são outras das funções

genéricas do sistema operativo [7].

Page 28: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

14

Figura 8 - Funções de um Sistema Operativo

No caso dos sistemas embebidos, os sistemas operativos de tempo real são bastante

utilizados pois existem grandes restrições de latência ao nível das tarefas que vão ser

executadas. Se o sistema tiver tarefas concorrentes ou seja, que disputam a ocupação dos

recursos do sistema, é necessário que exista um escalonamento das tarefas de modo a que

estas possam ser executadas no tempo necessário e que a utilização dos recursos disponíveis

seja o mais eficiente possível. O escalonamento pode ser realizado de um modo preemptivo ou

não preemptivo [7]:

• Preemptivo – o escalonador, através de um algoritmo, determina qual o processo a ter

acesso aos recursos do sistema e é executado durante um intervalo máximo de tempo

estabelecido. Findo este tempo, se o processo ainda não tiver terminado a sua

execução, é suspenso e o escalonador atribui o acesso aos recursos a outro processo

(se existir). Dado que este método requer marcação de tempos e uma rotina associada

à interrupção do clock do processador para que no fim do tempo estabelecido o

escalonador volte a ser executado e haja salvaguarda do contexto, nem sempre é

trivial, ou mesmo possível, implementar este método principalmente em processadores

de baixos recursos. Nessa situação, o modo não preemptivo é a alternativa.

• Não preemptivo – é determinado o processo ao qual vão ser entregues os recursos do

sistema e este é executado até bloquear (seja por aguardar uma acção de I/O ou

esperar por outro processo) ou libertar voluntariamente o CPU. Ao recorrer a este

modo, o programador tem de ter noção do tempo de execução das diversas tarefas de

modo a que estas sejam executadas através de uma ordem e intervalo de ocupação

dos recursos correctos. Uma grande desvantagem deste modo é que se houver

alguma anomalia e um processo bloquear, este vai causa o bloqueio integral do

processador já que o escalonamento é realizado ao nível do processo e não do

sistema operativo.

Como um sistema embebido de pequena dimensão à partida não necessita de todas as

funcionalidades de um sistema operativo típico, o custo do dispositivo é inferior visto utilizar

Page 29: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

15

menos recursos. É importante recorrer a uma solução feita à medida para que todas as

necessidades sejam correspondidas.

Relativamente aos sistemas embebidos, têm surgido recentemente microkernels como opção

viável. A ideia surgiu na década de 70 e baseia-se em colocar todos os serviços do sistema

operativo fora do kernel (código que corre em modo privilegiado do processador) correndo em

modo de utilizador. Esta medida tem como objectivo aumentar a fiabilidade e robustez que são

premissas dos sistemas embebidos [8].

De entre os diversos sistemas operativos (de utilização livre) existentes para sistemas

embebidos, destacam-se os seguintes:

• TinyOS – este sistema operativo foi desenvolvido para aplicações em redes de

sensores sem fios e é vocacionado para microprocessadores de baixos recursos. O

TinyOS utiliza um escalonador First In First Out (FIFO) não preemptivo de dois níveis

(alta prioridade para eventos e baixa prioridade para tarefas) embora exista a

possibilidade de aplicações criadas pelos utilizadores, substituírem o escalonador de

tarefas de modo a experimentarem novos métodos de escalonamento. A linguagem de

programação utilizada para este sistema é nesC e é baseada em C. Para além da

comunicação sem fios, este sistema operativo suporta também uma aplicação de nome

TinyDB que fornece uma plataforma para comunicação com a rede de sensores tendo

a enorme vantagem de o programador não necessitar de escrever o código referente

[13].

• eCOS – desenvolvido tendo em vista sistemas com necessidades de execução em

tempo real e reduzida memória RAM, este sistema é implementado em C/C++ e possui

dois modos de escalonamento preemptivo. Tem igualmente uma camada de

abstracção de hardware, modos de gestão de memória, pilha protocolar TCP/IP e

suporte para controladores PCMCIA, PCI e USB: Este sistema operativo permite ao

utilizador escolher as funcionalidades que realmente necessita reduzindo assim o

código a executar e fazendo com que o sistema tenha uma aplicabilidade muito

próxima da pretendida. O eCOS pode ser utilizado numa grande variedade de

plataformas de 16, 32 e 64 bits [14].

• Contiki – igualmente vocacionado para redes de sensores sem fios e

microprocessadores de capacidade de memória reduzida, o Contiki é altamente

portável, tem suporte multitarefa e escalonamento preemptivo. Suporta o protocolo

TCP/IP, um sistema gráfico para monitorização (com suporte internet) e necessita

apenas de 2 kbytes de memória de dados e 40 kbytes de memória de programa numa

utilização típica. Os programas são escritos em linguagem C [15].

Page 30: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

16

• FreeRTOS – este sistema operativo foi desenvolvido de modo a ser simples e ocupar

pouca memória. Tem suporte para 27 arquitecturas de processadores e inclui um modo

de escalonamento preemptivo e a possibilidade de criar processos e semáforos para

melhorar a comunicação entre tarefas. A linguagem de programação deste sistema

operativo é C e são necessários pelo menos 4 kbytes de memória de programa para

permitir o seu funcionamento [16]. Uma explicação da quantiade de memória

necessária para utilizar o FreeRTOS pode ser encontrada em [17].

Considerando a capacidade de memória referente ao microcontrolador utilizado neste trabalho,

AT90S8515 [18], nenhum dos sistemas operativos referidos se mostra adequado.

2.3 Microcontroladores

Microcontroladores são microprocessadores orientados para o controlo (operações com bits,

interacção entre sensores e actuadores, comunicação entre dispositivos e utilizadores) e estão

presentes na grande maioria dos equipamentos electrónicos utilizados diariamente

(principalmente em sistemas embebidos). Um microcontrolador é um computador e como tal

tem um processador (normalmente até 32 bits), memória de programa (Flash) e de dados

(RAM) e dispositivos de entrada e saída de informação sendo por isso autónomo. Ao contrário

dos computadores de utilização doméstica e/ou de trabalho que estão preparados para

executar uma grande variedade de aplicações, os microcontroladores têm uma utilização muito

específica e incluem algumas ou a totalidade das seguintes características:

• Inclusão de diversos periféricos: temporizadores, conversores analógicos/digitais,

watchdog, geradores de relógio e dispositivos de comunicação série;

• Inclusão de memória de dados e de programa no mesmo circuito integrado;

• Possibilidade de o programador ter acesso directo aos pinos do circuito;

• Existência de instruções especializadas para operações comuns em sistemas

embebidos tais como manipulação de bits. Isto permite melhorar o desempenho do

sistema.

O facto de os periféricos e a memória estarem localizados no mesmo circuito integrado, permite

reduzir o número de componentes diminuindo a área, o consumo e o preço da implementação.

O acesso aos pinos do microcontrolador permite aos programas monitorizarem de uma forma

mais simples e directa os diversos sensores, controlar os actuadores e transferir dados entre

outros dispositivos.

Um microcontrolador deve ser escolhido de acordo com a funcionalidade pretendida e devem

ser tidos em conta aspectos como o custo, consumo de energia e software necessário ao

desenvolvimento das aplicações. No caso específico da domótica, e dado o elevado número de

dispositivos que vão necessitar de microcontroladores, o custo deve ser reduzido. A qualidade

do ambiente de desenvolvimento e as ferramentas disponíveis são também deveras

Page 31: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

17

importantes para permitir a actualização e expansão do sistema e como tal, o seu custo de

aquisição deve também ser tido em conta.

Para aplicação em sistemas embebidos, podem ser consideradas várias arquitecturas

baseadas em Reduced Instruction Set Computing (RISC) ou seja, as instruções demoram

aproximadamente o mesmo tempo a serem executadas pois são executadas directamente pelo

hardware de modo a melhorar o desempenho. As arquitecturas Advanced RISC Machine

(ARM), Microprocessor without Interlocked Pipeline Stages (MIPS) e Atmel AVR são as mais

utilizadas sendo que algumas famílias destes processadores recorrem a uma arquitectura de

Harvard separando a memória do programa e de dados. Isto permite programar o

microcontrolador apenas uma vez na memória não volátil (Flash) ficando este com o código

armazenado durante o seu tempo de vida útil.

Para aplicações domóticas, largamente baseadas em sensores e actuadores, a velocidade não

é à partida o requisito mais importante. Deste modo, qualquer um dos microcontroladores de 8

ou 16 bits das arquitecturas acima citadas tem um desempenho adequado à aplicação. No

caso de um controlador global ou de um supervisor que controla vários nós de um sistema

domótico, e já que são necessários mais recursos, pode-se optar por um microcontrolador com

mais meios ou então por um PC.

Optou-se, no presente trabalho, por dar continuidade ao hardware já existente e utilizado

noutros projectos e como tal, o código foi desenvolvido para o microcontrolador AT90S8515 de

8 bits da Atmel. Este fabricante disponibiliza, de forma gratuita, ferramentas de

desenvolvimento de elevada qualidade (compilador GNU para C/C++, GDB para depuração de

erros e o ambiente AVRSTUDIO que permite simular o microcontrolador). A Atmel tem uma

elevada aceitação porque para além da qualidade dos recursos disponibilizados que permitem

a utilização de programação em linguagem C, tem uma grande variedade de hardware e é

possível encontrar os seus microcontroladores em diversas placas de demonstração de baixo

custo que incluem tudo o que é necessário para começar a executar o protótipo visto que estas

para além do microcontrolador já incluem as memórias, acesso aos portos do microcontrolador,

botões, controladores para comunicação com um PC e, em alguns casos, sensores de diversos

tipos e LEDs.

Apresentam-se em seguida alguns microcontroladores de 8 bits da família AVR (Atmel) assim

como placas de desenvolvimento onde é possível encontrá-los:

• AT90USB1287 – este microcontrolador possui 128 KB de memória Flash, um

conversor analógico/digital de 10 bit e interface JTAG e USB. A placa de demonstração

AT90USBKey inclui este microcontrolador e possui também um joystick, botões, LEDs

e um sensor de temperatura. Dado o baixo custo face aos recursos disponibilizados e a

Page 32: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

18

versatilidade do equipamento, esta placa é largamente utilizada no desenvolvimento de

protótipos.

Figura 9 - Placa AT90USBkey

• ATCAN128 – com este microcontrolador, a implementação de uma rede CAN é

facilitada já que possui o controlador. A placa ATAVRAUTO100 inclui este

microcontrolador com 128 kBytes de memória Flash e tem particular interesse para ser

utilizado numa aplicação automóvel.

Figura 10 - Placa ATAVRAUTO100

• ATmega169PV – possui 16 Bytes de memória Flash, um conversor analógico/digital de

10 bits e 8 canais e está disponível na placa AVR Butterfly. Esta contém um ecrã LCD

e permite expandir a memória Flash para 512 kBytes. Tem também um joystick e

sensores de luz, temperatura e tensão e uma interface série RS-232 sendo por isso

bastante versátil.

Figura 11 - Placa AVR Butterfly

• ATmega3290P – este microcontrolador tem 32 kBytes de memória Flash e um

conversor analógico/digital de 10 bits. Possui também interface JTAG. Pode ser

encontrado em conjunto com o microcontrolador ATmega1284P na placa AVRRAVEN.

O primeiro controla os sensores e permite a interface com o utilizador. O segundo é o

responsável pela comunicação sem fios, possuindo a placa um transceiver ZigBee.

Page 33: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

19

Figura 12 - Placa AVRRAVEN

• ATmega328 – este microcontrolador possui 14 pinos de entrada/saída e tem um

funcionamento a 16 MHz e 32 kB de memória. As placas Arduino Uno bastante

conhecidas pela sua versatilidade e baixo custo, utilizam este microcontrolador.

Figura 13 - Placa Arduino Uno

2.4 Sistema DomoBus

O DomoBus é um projecto académico, no qual se baseia este trabalho, e pretende ser uma

solução domótica de muito baixo custo mas com capacidade de expansão e possibilidade de

integração com outros sistemas [19]. Ao ser utilizado um microcontrolador de baixo custo, é

possível implementar sistemas em rede com um elevado número de dispositivos – super-

automatização – abrindo caminho para o adequado suporte à criação de ambientes

inteligentes.

Nesta solução domótica os dispositivos são entidades abstractas descritas através de um

conjunto de propriedades (do tipo byte, word ou array), sendo o valor destas lido ou alterado

através de operações normalizadas GET, SET, NOTIFY e FORWARD – Tabela 3 – e cujas

mensagens são geradas a partir de eventos. Esta abordagem permite uma utilização bastante

eficiente da memória visto que ao contrário de outros sistemas que possuem filas para dar

suporte às várias mensagens a tratar, é utilizada a EEPROM do microcontrolador para

armazenar o esqueleto das mensagens que, em caso de necessidade, serão posteriormente

geradas de novo. É igualmente possível definir as características de um sistema DomoBus

através de um ficheiro em XML [23] e cuja especificação está dividida em duas partes: uma

define os tipos abstractos e as suas propriedades e outra define o sistema em concreto

explicitando a estrutura física da habitação, serviços existentes e dispositivos reais instalados.

Page 34: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

20

Tabela 3 - Lista de operações para tratamento das propriedades

Operação Função

GET Ler o valor de uma propriedade

SET Alterar o valor de uma propriedade

NOTIFY Notificar a alteração do valor de uma

propriedade (as notificações são enviadas

normalmente para uma aplicação de

supervisão)

FORWARD Reencaminhar mensagens para outros

dispositivos

O sistema DomoBus está dividido em dois níveis: de controlo e de supervisão. No primeiro

caso, os Módulos de Controlo interagem com o meio através dos sensores e actuadores que a

ele se ligam. O nível de supervisão possibilita a gestão e supervisão do sistema através dos

Módulos de Supervisão e podem ter a seu cargo diversos Módulos de Controlo, recebendo e

processando informações provenientes destes. As aplicações DomoBus trocam mensagens

entre si – de uma forma local ou remota – a um débito de 19200 bps, com suporte de

retransmissões e mecanismos para controlar tráfego, o que acrescenta fiabilidade e robustez a

esta solução domótica de baixo custo. O presente trabalho centrou-se no sistema DomoBus e

como tal, este será detalhado no próximo capítulo.

Page 35: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

21

3 Sistema DomoBus

3.1 Componentes do sistema

O sistema domótico DomoBus é constituído por Módulos de Controlo (CM), Módulos de

Supervisão (SM) e de interligação: bridge (B) ou gateway (A). Estes componentes permitem

formar uma arquitectura flexível e de fácil expansão e podem ser visualizados na Figura 14 que

representa a arquitectura do sistema DomoBus.

SM SM

A

CM

Interacção com o meio físico (sensores e actuadores)

BB

CMCMCMCMCM

Ethernet

DomoBus DomoBus

DomoBus

RS-232

Utilizador

Interação

Remota

...

Figura 14 - Componentes e arquitectura do sistema DomoBus

A possibilidade de ligação a um PC permite o comando, supervisão e interacção com outras

tecnologias incluindo Internet.

Os Módulos de Controlo, programados em linguagem C, são aqueles que efectivamente

interagem com o meio físico em que se encontram e são responsáveis pela leitura de sensores

e pelo comando de actuadores. Para efeitos de comunicação utilizam um transceiver EIA-485 e

podem comunicar directamente com outros módulos ligados ao mesmo barramento ou, por

intermédio dos bridges, com o resto do sistema. Cada módulo pode ter diferentes aplicações

(até um máximo de oito) e como tal, realizar funções distintas. Esta característica distingue o

DomoBus de outras tecnologias nomeadamente o X10, KNX e LonWorks, já que nestas um

Módulo de Controlo está tipicamente associado a apenas um dispositivo, e permite reduzir o

custo de um sistema domótico Estes módulos devem ser o mais autónomos possível para

tornar o sistema mais robusto e diminuir o tráfego na rede. Pode-se dar o exemplo de um

módulo de controlo de iluminação: este deve estar também associado aos interruptores pois

em caso de avaria do sistema, os módulos de controlo continuam a executar as suas funções.

Page 36: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

22

Os módulos de supervisão têm a seu cargo a gestão e supervisão do sistema. Ao receberem

dados dos módulos de controlo, processam-nos de acordo com o comportamento esperado e

devolvem o comando apropriado. Num sistema de pequenas dimensões pode utilizar-se

apenas um módulo enquanto em sistemas mais complexos pode-se dotar cada segmento com

um Módulo de Supervisão tal como ilustrado na Figura 14. Deste modo, os eventos gerados

por um módulo de controlo ligado a um determinado segmento da rede podem ser recebidos e

processados directamente pelo módulo de supervisão associado permitindo uma supervisão

distribuída e aumentando a fiabilidade da rede.

Um Módulo de Supervisão pode também contactar qualquer Módulo de Controlo e de

supervisão presente no sistema e é possível que estes recorram a uma rede diferente com

maior largura de banda (por exemplo Ethernet) e com suporte de outras tecnologias e serviços

para permitir a interoperabilidade com outras soluções. Em termos de interface com o

utilizador, esta é sem dúvida beneficiada com a existência de um PC pois este tem a

capacidade de mostrar uma interface gráfica para monitorização e programação mas, como as

acções de supervisão e gestão de controlo estão presentes nos Módulos de Supervisão, este

pode ser eliminado sem prejuízo da fiabilidade do sistema [19].

Os módulos de interligação têm uma função extremamente importante no sistema: os módulos

bridge interligam os diferentes segmentos e têm de ter capacidade de reconhecer e

encaminhar as mensagens. O módulo gateway permite que todos os módulos possam

comunicar com este dispositivo e enviar e receber mensagens via PC.

3.2 Rede do sistema DomoBus e acesso ao meio

Existe uma interligação entre todos os dispositivos do sistema DomoBus através dos

barramentos. Entre estes, a ligação é assegurada por intermédio dos módulos bridge e de

supervisão.

O barramento ao qual estão ligados os módulos de controlo recorre no nível físico à norma

EIA-485 em modo half-duplex e no caso dos módulos de supervisão, estes estão ligados por

Ethernet já que é necessária uma taxa de transferência mais elevada e também porque permite

a introdução de outras funcionalidades para o sistema para além do controlo e automação. A

estrutura da rede permite independência, robustez e expansão do sistema.

Para se aceder ao meio, e já que este é partilhado com outros dispositivos, recorre-se ao

método CSMA/CD. Assim, o meio de comunicação é permanentemente observado para

detectar o período de silêncio exigido para o início da transmissão. Este período, tal como é

visível na Figura 15, é constituído por uma parcela fixa e outra aleatória.

Page 37: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

23

Figura 15 - Intervalos de tempo para acesso ao meio

A primeira está associada aos atrasos da linha de transmissão que dependem da distância e

da velocidade de propagação no meio físico e o segundo evita colisões geradas por

comunicações simultâneas (isto ocorre porque o meio é partilhado por vários dispositivos).

Quando ocorre uma colisão, detectada quando o bit enviado não é igual ao recebido, os

dispositivos envolvidos param a transmissão e aguardar novamente pelo período de silêncio.

Tal como é visível na Figura 16, as tramas DomoBus são constituídas por 5 Bytes (40 bits) de

cabeçalho, 0 a 121 Bytes de dados e um Byte de CRC para verificação da integridade da

mesma.

Figura 16 – Formato da trama DomoBus

Os Bytes que constituem o cabeçalho da trama DomoBus são os seguintes:

1º Byte: o primeiro bit indica o tipo da trama e os restantes 7 bits indicam a sua dimensão;

2º Byte: os quatro primeiros bits indicam o segmento de destino e os restantes o segmento de

origem da trama;

3º Byte: cinco bits indicam o nó a que se destina a trama e os restantes três bits indicam a

aplicação a que se destina;

4º Byte: os cinco primeiros bits indicam o nó de origem da trama e os restantes bits a aplicação

que os originou;

5º Byte: o primeiro bit não é utilizado, os três bits seguintes são utilizados para controlo da

trama e os restantes quatro bits referem o código da operação a ser realizada. As opções de

controlo da trama, são as seguintes:

bit p refere a prioridade da trama (0 – baixa, 1 – alta);

bit r indica se a trama é uma retransmissão (0 – não, 1 – sim);

bit a indica se a trama é uma resposta (0 – não, 1 – sim).

Page 38: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

24

A indicação de que se está a usar uma trama DomoBus é dada pelo bit mais significativo do

primeiro Byte e o seu valor deverá ser 0. É possível que outras tecnologias utilizem este meio

de comunicação usando para isso este bit com o valor 1. Os restantes bits do primeiro Byte

indicam a dimensão total da trama que pode ter até 127 Bytes (5 Bytes de cabeçalho, 121

Bytes de dados e um Byte de CRC).

A partir do formato da trama verifica-se que é possível identificar até 16 segmentos, 32 nós e 8

aplicações referentes a cada um dos nós. No último bit do cabeçalho estão disponíveis quatro

bits para identificar a operação pretendida estando já definidas as seguintes:

• GET (“0000”): permite saber o valor de uma propriedade de um dispositivo;

• SET (“0001”): altera o valor de uma propriedade de um dispositivo;

• NOTIFY (“0010”): reporta, perante situações específicas e normalmente para um

dispositivo de supervisão, a alteração do valor de uma propriedade de um dispositivo e

que possa ter implicações noutros nós;

• FORWARD (“0011”): reencaminha mensagens para outros nós, normalmente Módulos

de Supervisão.

O campo de dados tem um formato definido de quatro Bytes (código de controlo, dispositivo,

propriedade e valor) e no total pode ter 121 até Bytes. O Byte CRC permite verificar a

existência de erros na transmissão da trama.

Este modo de endereçamento permite identificar todos os componentes do sistema. Os nós

estão contidos nos segmentos e executam aplicações que interagem com diferentes

dispositivos e cada um destes tem propriedades próprias.

3.3 Hardware dos módulos

A função dos módulos de controlo e de supervisão é distinta e como tal, o seu hardware

também. Tal como foi descrito anteriormente, os Módulos de Controlo estão vocacionados para

interagir com o meio físico e devem portanto ser capazes de ler sensores e de comandar

actuadores. Os Módulos de Supervisão devem gerir o sistema recebendo e processando dados

provenientes dos Módulos de Controlo.

3.3.1 Módulos de Controlo

Estes módulos, Figura 1, utilizam o microcontrolador da ATMEL AT90S8515 (8 bits e

funcionamento a 8 MHz) com memória Flash, para armazenar programas, de 8 KBytes, 512

Bytes de memória de dados SRAM e 512 Bytes na EEPROM. Tem também outras

características que o tornam apto a funcionar num ambiente domótico tais como: dois

temporizadores (8 bits e 16 bits), comparador analógico, quatro portos I/O de 8 bits, uma UART

Page 39: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

25

e interface SPI para comunicação com o exterior. Apesar de simples e de muito baixos

recursos nomeadamente em termos de capacidade de memória, este microcontrolador torna

perfeitamente possível a leitura de sensores e a geração de sinais e sendo de muito baixo

custo, permite a utilização de diversos sensores e actuadores numa habitação repartidos por

vários módulos de controlo.

O microcontrolador encontra-se embutido num circuito integrado contendo também um

transceiver EIA-485 ligado à UART do AT90S8515, interface de comunicação com a rede

DomoBus, um circuito para watchdog que permite fazer a inicialização (mediante um botão de

pressão) e também acesso aos pinos do microcontrolador e alimentação do circuito.

Figura 17 - Módulo de Controlo

3.3.2 Módulos de Supervisão

No sistema DomoBus o conjunto de sensores e de actuadores é ligado exclusivamente aos

Módulos de Controlo levando a que estes possam potencialmente existir em número muito

elevado. Os Módulos de Supervisão, por seu turno, existem em quantidade muito menor já que

estes podem ser responsáveis pela supervisão de muitos Módulos de Controlo. Assume-se que

uma habitação comum, com um bom nível de automatização, pode ser gerida eficientemente

por apenas um ou dois Módulos de Supervisão. Assim, o factor custo não é preponderante

visto que é mais relevante dotar estes dispositivos de elevadas capacidades de processamento

e comunicação, seja por TCP/IP, USB ou Ethernet 10/100, recaindo normalmente a escolha

para placas que suportem Linux embebido.

A placa de desenvolvimento CS-EP930X, Figura 18, é um exemplo de um dispositivo utilizado

e as suas características mais relevantes para a função de supervisão podem ser consultadas

na Tabela 4.

Page 40: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

26

Figura 18 - Placa de desenvolvimento CS-EP930X utilizada como Módulo de Supervisão

Tabela 4 - Características da placa de desenvolvimento CS-EP930x relevantes para a função de supervisão

CPU MCU: EP9302 ARM920T com funcionamento

a 200MHz

Memória SDRAM externa – 32 MB

Flash externa – 16 MB

Suporta cartões de memória SD/MMC

Comunicações Ethernet 10/100

Duas portas USB

Dois conectores RS232

Infravermelhos

Sistema Operativo Linux 2.4, Linux 2.6 e NetBus

(disponibilizados em conjunto com a placa)

3.4 Software dos Módulos de Controlo

Quando este trabalho foi iniciado, o sistema DomoBus contava já com algumas versões

funcionais e encontravam-se também implementadas várias aplicações que continham pelo

menos duas máquinas de estados (uma para receber, enviar e tratar as mensagens

transmitidas entre os diferentes dispositivos e outra para implementar a funcionalidade

pretendida para a aplicação). Esta situação levava a que ao implementar as diversas

aplicações se repetisse imenso código pois apesar de terem algumas funcionalidades

específicas, existia uma grande duplicação de código associado ao tratamento das

mensagens. Num microprocessador de baixos recursos como aquele que foi utilizado,

AT90S8515, este tipo de situação dá azo a um desperdício significativo de memória que pode

comprometer ou invalidar a implementação das funcionalidades pretendidas.

Page 41: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

27

O módulo software de comunicações existente, apesar de ter implementado um método para

reduzir colisões entre nós, usa uma política simples e estática que deixa de ser eficaz quando

se aumenta o número de nós e para situações com tráfego significativo.

Existe portanto bastante espaço para melhoramento do software dos Módulos de Controlo,

sendo esse um dos objectivos deste trabalho. No próximo capítulo apresentar-se-ão as

propostas desenvolvidas para aperfeiçoar a comunicação e o suporte ao desenvolvimento de

aplicações domóticas robustas.

Page 42: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 43: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

29

4 Arquitectura de software dos Módulos de Controlo

4.1 Núcleo de tempo real

Devido aos parcos recursos do microcontrolador nomeadamente em termos de memória e

capacidades de processamento, optou-se por não se utilizar nenhum dos sistemas operativos

de tempo real analisados pois, no geral, implicavam um gasto demasiado elevado de recursos

do processador e limitavam a portabilidade do código pois esta apenas seria fácil para onde o

sistema operativo já estivesse disponível. Caso contrário, existiria uma complexidade bastante

elevada para portar esse sistema operativo para outro processador/placa de desenvolvimento.

Com vista a identificar a solução mais adequada foram considerados os seguintes aspectos

[20]:

• Utilização de um escalonamento cooperativo (as tarefas libertam o processador por sua

iniciativa dando oportunidade a que outras possam correr). Esta abordagem permite

simplificar os aspectos relacionados com sincronização e acesso a recursos comuns.

Como contrapartida, as aplicações necessitam de ser estruturadas em máquinas de

estados e, em certos casos, acções muito longas podem necessitar de ser divididas em

duas ou mais partes para garantir uma utilização equitativa do processador por todas

as tarefas. Não obstante a restrição indicada, esta abordagem permite uma

implementação simples das tarefas e oferece uma solução muito eficiente. Salienta-se

que a utilização de um escalonamento preemptivo introduz um nível de complexidade

demasiado elevado para os sistemas de baixo recursos com que se está a lidar, pelo

que esse aspecto não foi contemplado;

• Inexistência de prioridades considerando todas as tarefas com igual importância;

• Utilização de interrupções apenas quando indispensáveis, sendo usadas tipicamente

para tratar ocorrências associadas ao hardware e situações com requisitos estritos de

tempo;

Considerando todos os aspectos anteriores, decidiu-se utilizar tarefas executadas de uma

forma cíclica e recorrendo a uma política Round-Robin – cada tarefa recebe uma fatia de

tempo de utilização do CPU e findo este tempo, o processo é enviado para o fim da fila de

execução. Assim, é importante assegurar, no momento de transição de cada tarefa, a

salvaguarda de contexto para que quando a tarefa for retomada esta continue do ponto em que

se encontrava no momento em que a tarefa a executar foi comutada.

Tal como referido anteriormente, a marcação de tempos foi um dos aspectos considerados no

momento de optar por esta abordagem, pois é muito importante calcular o tempo esperado de

execução de cada tarefa para melhor distribuir os recursos de processamento do sistema. Ao

somar os tempos máximos de todas as tarefas, é possível fazer uma estimativa da frequência

com que estas vão ser executadas e determinar o correcto ritmo de polling das entradas do

Page 44: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

30

sistema. É também possível optar por associar as entradas do sistema à geração de

interrupções do processador. Contudo, o seu tratamento interfere na normal execução das

tarefas e na contabilização da frequência de execução destas e como tal, convém usar este

recurso apenas quando indispensável e colocar o mínimo código possível nas rotinas de

tratamento das interrupções.

4.2 Comunicação

Os módulos de controlo que compõem o sistema DomoBus, necessitam de comunicar com as

diversas aplicações sejam locais (presentes no próprio módulo) ou remotas (presentes noutros

módulos). A tarefa “NET” implementa o rede de comunicação DomoBus através de uma

máquina de estados (tem a função da camada lógica e de rede). A um nível superior, a troca

de informação entre aplicações é assegurada através da utilização de um buffer, mailbox, que

é utilizado tanto para a recepção como para a transmissão de tramas DomoBus.

O facto de se utilizar apenas uma mailbox por aplicação, devido a restrições da memória

disponível, tem como consequência que a comunicação tenha de ser feita em modo half-duplex

já que não se pode enviar e receber uma mensagem em simultâneo. As tramas DomoBus são

constituídas por sequências de caracteres que são enviadas através usando uma comunicação

série assíncrona com 8 bits de dados, enviados com ao ritmo de 19200 bps. É normalmente

utilizada a UART interna do microcontrolador (apesar de existir a possibilidade de se usar uma

UART externa) e recorre-se a um transceiver EIA-485 para gerar e receber os sinais enviados

pelo meio físico (camada física do protocolo). A activação da Interrupção 0 (INT0) do

microcontrolador denuncia o início de uma comunicação pois o bit que indica o início de um

novo carácter (start bit) possui o valor 0. Após o conjunto dos 8 bits de informação é enviado

um bit a 1 (stop bit) que sinaliza o fim do carácter. Por cada conjunto de 8 bits de dados úteis

são portanto enviados 10 bits.

Figura 19 - Comunicação Série Assíncrona

A tarefa “NET” está permanentemente a observar o meio de comunicação para detectar o inicio

de uma nova mensagem. Se não houver nada para receber verifica se as aplicações existentes

no nó possuem mensagens para enviar. Durante todo o processo de comunicação, é

necessário recorrer a temporizadores que vão sincronizar as acções de recepção/envio de

Page 45: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

31

tramas e, em caso de erros, é retomado o estado inicial da tarefa “NET” ficando a aguardar o

início de uma nova mensagem.

Durante a recepção de uma mensagem, começam por ser analisados os três primeiros bytes

que indicam a dimensão da mensagem e o endereço destino (Figura 16). Com base nessa

informação verifica-se se a mensagem se destina ao nó e se a aplicação destino tem a mailbox

livre e possui dimensão suficiente para guardar a mensagem. Em caso afirmativo, a recepção

prossegue sendo a informação recebida escrita directamente na mailbox da aplicação. Se a

mailbox estiver ocupada, é enviado um byte de jamming para a rede para gerar uma colisão e

interromper o envio desnecessário do resto da mensagem o que vai permitir melhorar o débito

do canal de comunicação. Caso a recepção completa da mensagem se venha a verificar, e se

esta não tiver erros (verificados pelo cálculo do CRC), é enviado um Byte a confirmar o

sucesso de recepção (ACK). No caso de existirem erros, envia-se um Byte com o significado

de insucesso (NACK).

Aquando do envio de uma mensagem, o módulo “NET” escuta o meio de comunicação para

verificar a ocorrência de colisões, o que implica a necessidade de reenviar a mensagem. Caso

todos os Bytes tenham sido enviados com sucesso, o módulo “net” evolui para um estado em

que espera pela confirmação de recepção da mensagem. Se esta confirmação for recebida

(ACK), retoma-se ao estado inicial da máquina de estados. Caso contrário (recepção de um

NACK), tenta-se um reenvio da mensagem (com número de tentativas limitado).

O ritmo de polling dos registos para verificação de mensagens novas para serem recebidas

tem de ser o correcto tendo em conta a frequência de relógio do microcontrolador (8 MHz) e o

ritmo utilizado para a comunicação série (19200 bps). Tal como descrito anteriormente, a UART

transmite 10 bits por cada byte de dados e assim a taxa de transferência situa-se nos 1920

byte/s o que significa que é necessário fazer polling aos registos 1920 vezes por segundo

(aproximadamente a cada 520 µs). Dada a frequência do microcontrolador e a dimensão das

aplicações, o valor é adequado já que é possível executar 4166 instruções entre cada polling

dos registos.

O incremento do número de mensagens enviadas e recebidas pode provocar o

congestionamento da rede devido ao aumento do tráfego a um nível superior à capacidade do

canal, tendo como consequência a ocorrência de atrasos no envio das mensagens. Dado que

se pretende que um sistema domótico seja fiável e com um tempo de actuação reduzido, esta

é uma situação que deve ser evitada ou minimizada a todo o custo. A Internet, por exemplo,

tem implementado um mecanismo que força os sistemas a baixar a taxa a que enviam pacotes

de dados para a rede nos períodos críticos em termos de congestionamento. Os nós que

enviam as mensagens apercebem-se da situação crítica da rede ao deixarem de receber as

respostas de baixo nível, ACK, que servem de confirmação daquilo que foi enviado para os nós

Page 46: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

32

de destino pelo que reduzem a taxa de transmissão. Por outro lado, numa situação de melhoria

das condições da rede (quando são recebidas respostas de baixo nível de pacotes anteriores),

torna-se possível aumentar a taxa de envio de pacotes permitindo que esta se aproxime dos

valores máximos aceitáveis. Este mecanismo é conhecido como algoritmo AIMD (Additive-

Increase, Multiplicative-Decrease) [21].

Débito

Figura 20 - Controlo de congestionamento através do algoritmo AIMD

No caso do sistema DomoBus, o acesso ao meio é assegurado através do protocolo CSMA/CD

que, tal como referido anteriormente, antes de iniciar o envio de informação escuta o meio de

transmissão de modo a detectar o silêncio necessário para o início do envio das mensagens e

que é composto por uma parcela fixa (relacionada com as características do meio de

transmissão) e por uma parcela aleatória - para evitar que dispositivos diferentes enviem

informação ao mesmo tempo e provoquem uma colisão. A componente fixa do tempo de

silêncio depende da prioridade da trama (se esta for prioritária tem um tempo de espera

inferior) e a componente aleatória é ajustada ao longo do tempo, variando em função do

número de colisões detectadas.

As mensagens presentes na rede são contabilizadas durante um período de tempo e finda a

amostragem, tem-se uma percepção do estado da rede comparando o número de mensagens

com valores pré-estabelecidos para situações de tráfego reduzido, médio e elevado. No caso

de o número de mensagens ultrapassar os valores estabelecidos para as situações de tráfego

médio ou elevado, força-se um certo tempo de espera antes do envio da trama o que visa

evitar o congestionamento da rede.

4.3 Suporte das aplicações DomoBus

Com a implementação actual do DomoBus resultante da contribuição deste trabalho, as

aplicações passam a conter apenas código que diz unicamente respeito à sua funcionalidade e

ao tratamento de mensagens não normalizadas. O tratamento de mensagens normalizadas

(mensagens que manipulam as propriedades dos dispositivos) é feito recorrendo a uma tarefa

comum a todas as aplicações (MSG) e que por sua vez acede a funções de uma biblioteca que

Page 47: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

33

disponibiliza as estruturas que permitem gerir as propriedades (PROP). Estes módulos em

conjunto com o módulo de comunicações abordado na secção anterior suportam as aplicações

DomoBus, Figura 21.

Figura 21 - Integração das aplicações com os diferentes módulos

Tipicamente uma aplicação DomoBus, e em termos genéricos a maioria dos sistemas

domóticos, tem como finalidade operações relacionadas com a leitura de sensores e com o

comando de actuadores (pode, por exemplo, pensar-se num conjunto de aplicações que

mediante a leitura de um sensor que mede a intensidade luminosa ou a temperatura, ordene o

fecho ou abertura de uma janela). Um Módulo de Controlo pode executar até 8 aplicações e

possibilita a ligação de até 32 dispositivos. Uma aplicação deve conter propriedades (do tipo

byte, word ou array de 8 bits) consonantes com a especificidade, a área de actuação e a

característica dos dispositivos para que se alcance o melhor desempenho e fiabilidade

possível. Pensando na situação anterior, em que existiria um sensor de luminosidade e por

exemplo um relé para abrir ou fechar a janela, seria necessário criar uma aplicação para fazer

a leitura do sensor de luminosidade, outra para ler o valor de temperatura e ainda uma

aplicação para actuar os relés para a posição desejada. Uma aplicação DomoBus típica trata

logo vários sensores e actuadores do mesmo tipo e no exemplo anterior, as propriedades

necessárias para as três aplicações seriam, respectivamente, as seguintes:

• Aplicação 1: Propriedade que indica o valor medido pelo sensor de luminosidade;

• Aplicação 2: Propriedade que indica o valor medido pelo sensor de temperatura;

• Aplicação 3: Propriedade cujo valor indica a posição do relé para a actuação desejada

(subir/descer estore ou repouso).

A abordagem mais óbvia seria a de criar apenas uma aplicação para a concretização deste

objectivo mas, por outro lado, ao serem criadas aplicações distintas o sistema torna-se mais

modular. Com efeito, deste modo é possível que uma aplicação leia logo um conjunto de

Page 48: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

34

sensores e que outra controle um grupo de relés. No exemplo anterior, a aplicação para fazer a

leitura do valor de temperatura poderia também ser utilizada, por exemplo, por outra aplicação

para activar um alarme no caso de se atingir um determinado valor de temperatura. De outro

modo, a alternativa seria criar uma aplicação que lesse e controlasse os diversos sensores e

actuadores mediante as necessidades do momento, o que acrescentaria dificuldade ao

desenvolvimento e à gestão. As aplicações desenvolvidas seriam executadas pelos Módulos

de Controlo e caberia ao Módulo de Supervisão a ordenar a actuação dos componentes

actuadores mediante os valores lidos pelos sensores.

Foi desenvolvido um mecanismo para as aplicações gerarem e enviarem mensagens, através

de eventos associados a uma propriedade em particular. Ao activar um evento, torna-se

possível construir automaticamente a mensagem, permitindo por conseguinte o envio de

comandos de leitura ou escrita de valores nas propriedades (a cada propriedade está

associado apenas um evento e uma mensagem). Tendo em consideração alguns dos

objectivos do sistema DomoBus (flexibilidade, fiabilidade e escalabilidade), ao ser activado um

evento é necessário associar-lhe um valor que para além de sinalizar se o mesmo já foi

confirmado, indica também se a mensagem a ser gerada deve ser imediata e o número de

retransmissões (rápidas ou lentas) que esta deverá ter. As retransmissões lentas permitem que

as tentativas de envio da mensagem não afectem a rede visto que são bastante espaçadas no

tempo. É também possível a opção Repeat Forever, para que a mensagem seja enviada até

ser recebida a respectiva resposta. Estão disponíveis operações que são discriminadas nas

mensagens enviadas entre aplicações: GET, SET e NOTIFY. Regressando ao exemplo

anterior, seria adequado existir uma notificação, gerada sempre que houvesse uma alteração

do valor de temperatura ou no caso de o sensor ler um valor considerado elevado, de modo a

poderem ser tomadas as acções necessárias. A estrutura das mensagens normalizadas, pode

ser observada na Figura 22. Estas contêm um número de sequência para permitir o

emparelhamento unívoco das respostas às mensagens e indicam também o dispositivo, a

propriedade e o valor.

Figura 22 – Estrutura de uma mensagem DomoBus normalizada

Estando já introduzidas as noções de propriedade e evento e as três operações

disponibilizadas, descrevem-se em seguida de uma forma mais extensa e profunda as

restantes tarefas que suportam as aplicações DomoBus (a tarefa “NET” já foi descrita

anteriormente, na secção 4.2).

Page 49: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

35

4.3.1 Módulo de Gestão das Propriedades

As propriedades são entidades intrínsecas ao nó a que dizem respeito já que são altamente

dependentes dos dispositivos e da funcionalidade pretendida. Para que as aplicações possam

ir de encontro com as funcionalidades pretendidas e para que seja possível de uma forma

flexível lidar com diferentes níveis de precisão, optou-se por dotar este sistema de três tipos

(dimensões) possíveis para o valor das propriedades (byte, word e array de valores de 8 bits).

A definição das estruturas de dados necessárias assim como as funções de leitura e escrita

dos valores das propriedades podem ser encontradas em PROP sendo este considerado uma

biblioteca de funções e estruturas, com o objectivo de uniformizar o acesso e manipulação das

propriedades. O módulo PROP será usado tanto pelas aplicações como pelo módulo de

geração de mensagens de modo a ser possível aceder ao valor das diversas propriedades.

O módulo PROP contém igualmente estruturas de dados que permitem contabilizar o número

de eventos activos por aplicação (aqueles que estão sinalizados para o envio de mensagem ou

que ainda não esgotaram o número de tentativas de reenvio) e guardar um valor associado a

cada um dos eventos que para além de conter o código de sequência utilizado para o

emparelhamento das respostas às mensagens que lhes deram origem, indica se o valor da

propriedade é valido ou não.

Em suma, PROP tem como objectivo guardar as estruturas de dados que dão suporte às

propriedades e aos eventos e também conter funções que os permitem manipular (ler e

escrever valores de propriedades, activar e desactivar eventos e assinalar que um determinado

valor de uma propriedade é válido ou inválido).

4.3.2 Módulo de Tratamento das Mensagens

As funções que possibilitam o envio e recepção de mensagens normalizadas e as estruturas de

dados que lhes dão suporte, encontram-se implementadas no módulo MSG. Esta

implementação é bastante vantajosa pois permite isolar das aplicações os procedimentos de

envio e recepção de mensagens. Isto abre caminho a que estas tenham apenas operações

relativas à funcionalidade pretendida na sua unidade funcional. Assim, estas tornam-se

bastante mais simples do ponto de vista de implementação e compreensão e permitem

também poupar memória ao sistema, cujos recursos são bastante limitados (o hardware dos

módulos de controlo encontra-se descrito em 3.3.1).

Em termos genéricos, as aplicações activam os eventos e isso despoleta o envio de

mensagens através do módulo MSG. Este módulo é portanto responsável pelo preenchimento

das mailboxes das aplicações e estas são posteriormente transmitidas pela rede através de

chamadas a funções presentes na tarefa NET. Este método permite poupar drasticamente a

memória do sistema visto que não são criadas filas de mensagens mas antes eventos cujo

Page 50: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

36

valor vai posteriormente permitir a construção das mensagens. Desta maneira, ao invés de se

utilizarem buffers para armazenar cada uma das mensagens com dimensão de cerca de 10

bytes (cabeçalho e campo de dados), apenas existe um evento cujo valor ocupa apenas um

byte e descreve se a mensagem deve ser enviada e também o número de retransmissões que

lhe estão associadas. Em conjunto com esta abordagem, foi implementada uma estrutura

associada aos eventos contendo temporizadores que indicam o instante em que a

retransmissão da mensagem deve ocorrer.

Descreve-se em seguida, de uma forma sucinta, o comportamento do módulo MSG e das

aplicações face às três operações normalizadas presentes neste sistema:

• GET (Código de operação 0): a operação permite obter o valor de uma propriedade

(torna-se portanto necessário conhecer de antemão o tipo - byte, word ou array - pois

existem três tipos diferentes) e fazer a leitura do seu valor. Quando um nó envia este

comando (por intermédio do módulo MSG), recebe como resposta o valor da

propriedade. Como este só interessa e diz respeito à aplicação que despoletou o envio

do GET, o resultado é-lhe passado de modo a ser convenientemente tratado. No caso

de o nó estar a receber um comando GET, MSG obtém ele próprio (através da leitura

das estruturas de dados correspondentes) o valor da propriedade e responde enviando

o resultado, sem que seja necessária a intervenção da aplicação;

• SET (Código de operação 1): com a operação SET é possível alterar o valor de uma

propriedade e portanto. Ao enviar este comando através de MSG, um nó recebe uma

resposta que confirma que a operação foi efectuada (isto anula o evento evitando que

sejam efectuadas retransmissões). No caso da recepção, MSG activa a propriedade

correspondente, escreve o valor e envia a resposta (de confirmação da operação);

• NOTIFY (Código de operação 2): uma aplicação pode enviar um comando NOTIFY

que tipicamente notifica sempre que ocorrer uma alteração de valores das

propriedades. Numa situação de envio do comando e ao chegar a resposta de

confirmação, MSG anula o evento que motivou a operação. No caso de recepção do

comando, e como MSG não sabe tratar, envia a mensagem para a aplicação pois só a

ela faz sentido.

A existência de confirmações por parte das aplicações é fundamental pois só assim é possível

garantir que a mensagem foi entregue visto que a tarefa “NET” efectua retransmissões mas

desiste quando o número de tentativas se esgota. Se MSG receber mensagens

desconhecidas, fora deste conjunto de operações normalizadas, passa-as para as aplicações

de modo a serem adequadamente processadas.

Page 51: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

37

4.3.3 Módulo de acesso à EEPROM

Neste módulo encontram-se todas as funções necessárias para ler e escrever dados na

EEPROM do microcontrolador. Esta é uma memória adicional e persistente e pode ser alterada

em qualquer momento, tendo-se optado por recorrer à EEPROM para guardar o esqueleto das

mensagens, de modo a poupar memória. De modo a melhorar a eficiência das operações de

leitura e escrita, a tarefa foi implementada através de uma máquina de estados, pois a

operação de escrita na EEPROM é demorada e não pode ser uma acção bloqueante porque

afectaria o restante funcionamento do sistema.

O esqueleto das mensagens normalizadas está escrito na EEPROM interna do

microcontrolador e contém o destino destas e a operação a realizar sendo apenas preciso, nos

casos adequados, preencher o valor da propriedade que se pretende enviar de modo a gerar a

mensagem completa. O acesso a esta memória é concretizado somando o respectivo número

do evento ao endereço de base da EEPROM.

4.4 Aplicações DomoBus implementadas

As aplicações para o sistema DomoBus que se seguem são apenas dois exemplos que

demonstram a implementação da leitura de entradas e os respectivos comandos de actuação.

Estas encontravam-se já implementadas seguindo a anterior filosofia (a máquina de estados

relativa ao tratamento de mensagens e respectivo envio e recepção coexistia com a máquina

de estados específica da aplicação), o que introduzia enorme complexidade visto que

necessitava de tratar de vários procedimentos desde a composição de mensagens até ao seu

envio, validação das respostas e eventuais retransmissões. Foram portanto novamente

desenvolvidas segundo a nova metodologia e neste momento possuem apenas a máquina de

estados intrínseca ao seu funcionamento, tendo ficado muito mais simples.

4.4.1 Aplicação de gestão do nó

Esta aplicação (designada de SYS) deverá estar presente em todos os nós já que é

responsável por várias funções de gestão tais como controlar os LED do sistema, activar o

watchdog, monitorizar erros ocorridos nas outras aplicações, receber mensagens de broadcast

e obter um endereço para o nó no caso de ainda não lhe ter sido atribuído um.

4.4.2 Aplicação Relay – Actuações ligar/desligar

Com esta aplicação, o sistema consegue comandar um conjunto de relés e assim ligar ou

desligar equipamentos ligados ao sistema. Após a recepção da mensagem contendo o

comando, faz-se a respectiva actuação e gera-se uma mensagem NOTIFY de modo a fazer a

notificação da alteração.

Page 52: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

38

Figura 23 - Aplicação Relay

4.4.3 Aplicação Switch – Leitura de interruptores

O objectivo desta aplicação é ler um conjunto de interruptores e botões de pressão para poder

desencadear, por exemplo, actuações sobre lâmpadas. Por razões relacionadas com a rapidez

de execução, em cada ciclo apenas é tratado um interruptor. Os botões de pressão encontram-

se normalmente inactivos, alterando o seu estando quando o utilizador os pressiona e os

interruptores possuem dois estados que, gerando a mensagem respectiva, afectam

directamente o estado da lâmpada, Figura 24. No caso de o utilizador carregar de uma forma

breve nos botões de pressão, o estado da lâmpada (ligada/desligada) deverá ser comutado e

na eventualidade de o botão ser pressionado longamente, a intensidade da lâmpada deverá

variar.

Para implementar esta aplicação, quando os botões de pressão são activados é feita uma

contagem do tempo e se esta for inferior a uma constante denominada por tempo de toggle, é

gerada uma mensagem para alterar o estado da lâmpada. Se, por outro lado, o tempo de

toggle for ultrapassado, a intensidade da lâmpada é regulada e é feita uma leitura periódica

para gerar a mensagem que indica o novo valor da lâmpada sem se deixar de pressionar o

botão, Figura 24.

Figura 24 - Aplicação Switch

A estrutura de uma aplicação típica DomoBus será detalhada no capítulo seguinte.

Page 53: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

39

5 Detalhes de Implementação

5.1 Comunicação

O protocolo de comunicação (camada de ligação de dados e acesso ao meio) foi implementado

através de uma máquina de estados que contempla o acesso ao meio físico, o processo de

envio e de recepção, o envio de retransmissões (nível 2) para tornar a rede mais fiável e

robusta. Para optimizar a utilização de largura de banda e permitir débitos maiores,

implementou-se um mecanismo que mediante a percepção do nível de utilização da rede e do

número de colisões, vai gerindo o tempo aleatório de acesso ao meio de transmissão e o fluxo

de dados enviado para evitar congestionamentos.

O estado inicial – IDLE – verifica a existência de actividade no meio físico, que denuncia a

existência do start bit de um novo carácter. Em caso afirmativo evolui-se para o estado

RECEIVE_FIRST_BYTE onde o primeiro byte é recebido e guardado. Este estado, após a

recepção do primeiro byte da trama, lê-o de modo a detectar a existência de framming error –

erro relacionado com o encapsulamento do bit - que obrigaria a máquina a retomar ao estado

IDLE. Sendo o byte recebido válido, guarda-se o primeiro byte preparando a recepção dos

seguintes através do estado RECEIVING. Existe também um tempo considerado máximo para

a espera do byte e que quando ultrapassado, faz a máquina retomar ao estado IDLE.

RECEIVING é o estado que vai recebendo os bytes que constituem a trama. Caso seja

detectado um erro de recepção (framming error), retorna-se ao estado IDLE. Não havendo

problemas com a integridade do byte recebido, este é processado assumindo que os bytes são

recebidos por uma determinada ordem. É analisado o endereço de destino da trama e esta é

ignorada se não for coincidente com o endereço do nó que está a receber. Após este passo, é

fundamental saber que aplicação vai efectuar a recepção, se a mailbox desta tem espaço para

guardar a trama e se está livre. No caso de ser necessário evitar o envio do resto da trama pois

o espaço disponível da mailbox da aplicação não é suficiente ou está ocupada, é feito jamming

para provocar colisão e segue-se para o estado WAIT_TX_COMPLETE. Para minimizar o

número de mensagens abortadas pela eventualidade de a mailbox estar ocupada, é feita uma

distinção entre mensagens de resposta e mensagens de iniciativa própria. Estas podem ser

geradas novamente mais tarde (recorrendo ao mecanismo de eventos implementado) e

portanto, podem ser ignoradas. Quando se está a efectuar a recepção da trama, a mailbox da

aplicação correspondente altera o seu estado para ocupada e no final, após a leitura do CRC,

passa-se para o estado SEND_ACK para enviar a confirmação da correcta recepção ou para

SEND_NACK para indicar a existência de um erro.

Page 54: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

40

SEND_ACK e SEND_NACK são estados que têm como objectivo o envio de um byte de

indicação de correcta ou incorrecta recepção da trama e a evolução para o estado onde vai ser

feita a desactivação do transceiver, WAIT_TX_COMPLETE.

Se no estado IDLE não for detectado o carácter inicial, verifica-se a existência de mensagens

para serem enviadas. Na eventualidade de existirem, procura-se, de forma circular, a aplicação

que vai enviar a mensagem e é seguida uma política em que se dá maior prioridade a

respostas, depois a mensagens prioritárias e por fim, a mensagens de prioridade normal. De

acordo com o mecanismos de controlo de congestionamento implementado e dependendo do

tráfego existente, as mensagens podem estar sujeitas a um tempo de espera para não

sobrecarregarem a rede. Antes de iniciar a transmissão da mensagem é feita uma nova

verificação ao meio físico e se esteve estiver activo, avança-se para o estado

RECEIVE_FIRST_BYTE. Se, pelo contrário, for detectado silêncio no meio de comunicação,

verifica-se o destino da mensagem e inicia-se o envio da mesma. No caso de a mensagem ser

local ao nó, é feita uma cópia para a mailbox libertando-a de seguida mas se esta tiver como

destino outro nó, escreve-se o primeiro byte da trama (indicação da dimensão) e o cabeçalho

pois vai ser usado para confirmar aquilo que se enviou. Depois destes passos, avança-se para

o estado SENDING onde se faz o envio da trama – com excepção do primeiro byte que é

enviado logo no estado IDLE.

O estado SENDING, de modo a detectar colisões, tem implementado um sistema de eco ou

seja, tudo aquilo que envia é lido posteriormente. À semelhança de outros estados, aqui

também é feita uma verificação a existência de framming error que existindo, pode ser devido a

um jamming devido à mailbox do nó destino estar ocupada ou a uma colisão. Neste estado o

tratamento desta situação é diferente das demais pois aqui é aumentado o atraso de envio por

parte do nó para contribuir para reduzir a probabilidade de uma nova colisão e é feita a

passagem para o estado TEST_SEND_AGAIN onde é testado se a mensagem deve ser

retransmitida ou se foram esgotadas as tentativas de reenvio. Findo o envio de todos os bytes,

desactiva-se o transceiver e segue-se para o estado WAIT_ACK. No caso de ser enviada uma

mensagem de broadcast não se aguarda pelo ACK e a mailbox é imediatamente libertada.

No estado WAIT_ACK recebe-se o byte de resposta à mensagem enviada. Se este for de

confirmação do sucesso do envio, ACK; limpa-se a mailbox da aplicação e, já que esta

situação pode querer indicar uma melhoria na fluidez da rede, o tempo de espera de acesso ao

meio é reduzido retornando-se ao estado IDLE. Na eventualidade de ser receber um byte de

insucesso, NACK ou outra coisa que não ACK, não faz sentido aumentar o tempo de acesso

ao meio pois à partida essa ocorrência deve-se a um erro do CRC causado por ruído no meio

de comunicação e não um problema de contenção de acesso ao meio. A Figura 25 contém um

esquema (muito simplificado devido à sua complexidade) da máquina de estados

implementada.

Page 55: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

41

IDLE

SENDINGRECEIVE_FIRST_BY

TE

recepção envio

RECEIVING

WAIT_TX_COMPLETE

mailbox ocupada

SEND_NACKSEND_ACK

CRC incorrecto

CRCcorrecto

TEST_SEND_AGAIN WAIT_ACK

colisão envio terminado

Figura 25 - Esquema simplificado da máquina de estados da NET

Pela descrição da máquina de estados é possível identificar a existência do mecanismo que

permite gerir o tráfego da rede aumentando a fiabilidade, a robustez e a eficiência mas em

seguida faz-se uma descrição mais pormenorizada da implementação do mesmo.

A solução desenvolvida tem uma percepção do estado da rede para poder intervir

convenientemente. Utiliza-se um temporizador que durante a marcação do tempo contabiliza o

número de mensagens presentes na rede. Assim, quando se inicia a recepção ou o envio de

uma trama, este contador é incrementado. Atingido o tempo estabelecido, compara-se a

contagem do contador com os três níveis estabelecidos que ditam o estado da rede (tráfego

reduzido, tráfego normal e tráfego elevado) e actua-se em concordância atribuindo um tempo

menor ou maior para a pausa que antecede o acesso ao meio de transmissão. Após esta

intervenção, o contador de mensagens retoma o valor 0 e é iniciado um novo período de

amostragem.

Para possibilitar que as aplicações enviem mensagens de forma equitativa, a pesquisa é feita

de forma circular ao invés de começar sempre a partir da aplicação 0. Existem três níveis de

prioridade das mensagens que permite estabelecer o tempo que estas têm de aguardar antes

de a sua transmissão ser iniciada. As mensagens de prioridade muito alta (super-prioritárias)

Page 56: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

42

aguardam um tempo de guarda, estabelecido de acordo com as características do meio,

adicionado a uma componente fixa de tempo relacionada com a prioridade. No caso das

mensagens de prioridade alta e normal, para além o tempo de guarda e da componente fixa

estabelecida de acordo com a prioridade, aguardam também um valor aleatório. No primeiro

caso, a gama de valores aleatórios para o tempo é mínima enquanto no segundo caso esta

depende do nível de tráfego da rede e vai aumentando ou diminuindo de acordo com as

colisões (indicador do estado da rede). Este ajuste é feito no estado SENDING ao ser

detectado um framming error, eventualmente relacionado com uma colisão ou jamming e no

estado WAIT_ACK ao ser transmitida uma mensagem com sucesso que pode indicar uma

melhoria na rede. A maioria das mensagens enviadas vai ter prioridade normal mas como

todas as mensagens devem ser respondidas, as mensagens de resposta devem ter prioridade

face às demais mensagens e como tal, utilizam-se mensagens super-prioritárias como

resposta. Esta abordagem contribui para aumentar o débito da comunicação e reduzir o

número de colisões.

5.2 Suporte das aplicações DomoBus

As aplicações activam os eventos durante o funcionamento do sistema e é através destes que

o envio de mensagens é despoletado. Para poupar memória, a EEPROM do microcontrolador

contém o esqueleto das mensagens e no momento do envio, este é copiado para a mailbox

para ser devidamente preenchido e ficar pronto para ser enviado. O módulo MSG é o

responsável pelo tratamento das mensagens normalizadas devendo as aplicações tratar as

mensagens que forem específicas. Para que todos estes módulos funcionem correctamente e

devido à especificidade de cada nó, é fundamental que seja configurado o ficheiro que contém

as definições globais do nó.

5.2.1 Módulo PROP

Esta biblioteca contém as estruturas de dados e as funções necessárias para a manipulação

de eventos e de propriedades. Como existem três tipos de propriedades relacionados com a

dimensão do valor que lhes é referente (byte, word e array), algumas funções, apesar de

análogas, foram triplicadas para o correcto mapeamento de todas as propriedades. A uma

propriedade está associado um só evento e uma só mensagem, existindo uma estrutura de

dados global aos três tipos de propriedades e que guarda o valor de todos os eventos. Este

array está ordenado por tipo de propriedade (P), aplicação (A), número de propriedade (P) e

dispositivo (D), Figura 26.

Page 57: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

43

Figura 26 – Exemplo de array de eventos e respectiva ordenação por tipo (Byte (B), Word (W) ou Array (A)), aplicação

(A), número de propriedade (P) e dispositivo (D)

É absolutamente necessário moldar o sistema de acordo com os recursos disponíveis, as

especificidades do nó e o funcionamento pretendido. Recorre-se, para isso, ao ficheiro que

contém as definições globais a serem aplicadas ao nó. É aqui que são indicadas e distribuídas

(de acordo com as regras de configuração) as propriedades referentes aos diversos

dispositivos, sendo fundamental distingui-las consoante a sua dimensão.

Os eventos são activados pelas aplicações e é importante fazer uma contabilização do número

de eventos activos assim como a sua distribuição por aplicação. No primeiro caso, existe um

contador global mas para distribuir a contagem de eventos por aplicação, utilizou-se um vector

cuja dimensão corresponde ao número de aplicações. Optou-se também por implementar uma

estrutura de dados, Figura 27, que indica se um determinado valor de uma propriedade é valido

ou não assim como um número de sequência utilizado para emparelhar as mensagens que

permite saber se a resposta/confirmação recebida pertence efectivamente à mensagem

enviada. Esta abordagem de colocar simultaneamente no byte de controlo o número de

sequência e a validade do valor deve-se a um esforço para poupar memória.

Figura 27 - Byte de controlo que permite indicar a validade do valor de uma propriedade e o número de sequência para

emparelhar mensagens

Sempre que for necessário aceder a uma propriedade é fundamental saber o correcto índice

que a mesma ocupa na estrutura de dados global e portanto desenvolveu-se uma função para

cada tipo de propriedade, que ao receber o número do dispositivo e da propriedade, devolve o

índice. Ao ser devolvida esta informação, é possível fazer a leitura ou atribuição de valores a

propriedades mas no entanto, antes de escrever um novo valor é necessário saber se o valor

lido é válido ou não. Para lidar com essa situação, existem funções para testar o byte de

controlo representado na Figura 27 e indicar a validade do valor da propriedade. Se o valor for

inválido, deve ser ignorado.

No momento em que a activação dos eventos é originada pelas aplicações - chamando a

função correspondente da biblioteca PROP - é atribuído um valor ao evento, Figura 28. Este

Page 58: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

44

valor permite indicar se o evento foi confirmado (já foi recebida a sua mensagem de resposta),

se deve ser enviada uma mensagem e o número de retransmissões (rápidas ou lentas) que

devem ser enviadas. É também possível indicar o envio de uma mensagem até ser recebida a

mensagem de resposta (Repeat Forever) atribuindo o valor 1 todos os bits referentes a Slow

Repeat.

Figura 28 - Byte que indica o valor atribuído aos eventos

No módulo PROP existe também uma função que permite desactivar um evento activo

afectando as variáveis que contabilizam o número de eventos activos (global e por aplicação).

Foi também implementada uma função que recebe como parâmetro um número de sequência,

testa os eventos e devolve o índice respectivo em caso de sucesso.

A Tabela 5 lista as funções de manipulação de eventos e propriedades citadas anteriormente:

Tabela 5 - Funções de manipulação de eventos e propriedades do módulo PROP

Função Descrição

PROP_set_byte_index(device, property)

PROP_set_word_index(device, property)

PROP_set_array_index(device, property)

Através da indicação do dispositivo e da propriedade,

devolve o índice para aceder correctamente ao array de

propriedades e eventos.

PROP_get_byte()

PROP_get_word()

PROP_get_array()

Devolve o valor da propriedade definida pela função

PROP_set_”tipo”_index()

PROP_set_byte(value)

PROP_set_word(value)

PROP_set_array(value)

Atribui o valor às propriedades definidas pela função

PROP_set_”tipo”_index()

PROP_set_event(event_value) Função chamada pelas aplicações e que activa o evento

cujo índice foi determinado através de

PROP_set_”tipo”_index()

PROP_clr_event(event_index) Elimina o evento passado como parâmetro

PROP_set_value_invalid() Assinala que o valor da propriedade definida através de

PROP_set_”tipo”_index() é inválido e deve ser ignorado

PROP_set_value_valid() Assinala que o valor da propriedade definida através de

PROP_set_”tipo”_index() é válido

PROP_value_is_invalid() Retorna um valor que indica se a propriedade defnida

através de PROP_set_”tipo”_index() contém um valor

válido ou não

PROP_search_seq_code(seq_code) Pesquisa o array que contém o número de sequência

dos eventos e devolve o índice respectivo

PROP_save_and_set_event_byte()

PROP_save_and_set_event_word()

PROP_save_and_set_event_array()

Função chamada pelas aplicações quando for lido um

novo valor de uma propriedade que deve ser guardado e

activado

Page 59: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

45

5.2.2 Módulo MSG

O módulo MSG implementa as funcionalidades associadas ao envio e recepção de

mensagens. As respostas de confirmações a comandos de NOTIFY e SET são

automaticamente processadas e o valor das propriedades é afectado. Este módulo gera

também automaticamente confirmações/respostas para as mensagens com operações GET e

SET. As aplicações activam eventos que por sua vez vão despoletar o envio de mensagens

cujo procedimento é feito por este módulo (acesso e preenchimento da mailbox, envio e

eventuais retransmissões). Este módulo foi implementado através de uma máquina de estados.

O estado IDLE verifica a existência de mensagens recebidas por tratar. No caso de existirem,

percorre as aplicações de modo a encontrar uma com mensagens e evolui para o estado de

recepção RX_1 onde, testando o valor do bit correspondente ao campo de resposta de

mensagem, identifica o seu tipo – resposta/confirmação ou um comando. Se a mensagem for

uma resposta a um comando SET ou NOTIFY, o evento é anulado caso contrário, a mensagem

é enviada para a aplicação que a deve tratar ou apagar da mailbox regressando a máquina de

estados ao estado IDLE. Se a mensagem não for uma resposta mas sim um comando GET ou

SET, esta será processada e será gerada uma resposta com a devolução do valor da

propriedade ou fazendo a alteração do mesmo, respectivamente. No caso de a mensagem

recebida ser um comando NOTIFY ou uma outra mensagem não normalizada, é deixada na

mailbox e enviada para a aplicação que a deverá tratar convenientemente. Após a recepção, é

retomado o estado IDLE. O envio de uma mensagem de resposta é assegurado pelo estado

REPLY.

Na eventualidade de não existir nenhuma mensagem recebida a aguardar tratamento, é

chamada uma função para verificar se um evento está activo mas não marcado para envio ou

seja, existe a indicação para ser retransmitido e ainda não foi esgotado o contador de

retransmissões. Em caso afirmativo, analisa o temporizador do evento para saber se já foi

atingido, activando nesse caso a flag correspondente para desencadear o envio da mensagem

correspondente, decrementando o número de retransmissões (rápidas ou lentas) e definindo

um novo valor para o temporizador no caso de os contadores ainda não terem esgotado as

retransmissões possíveis. De seguida retorna ao estado IDLE para verificar se existem

aplicações com eventos activos e se a mailbox destas está livre. No caso de ter encontrado

aplicações com eventos activos, avança para o estado TX_1 para enviar a mensagem

correspondente.

O estado TX_1 começa por reverificar se a mailbox da aplicação ainda se encontra livre e

identifica o evento a tratar, começando por aqueles que são relativos a propriedades do tipo

byte. No caso de não encontrar, pesquisa por eventos do tipo word e array. A pesquisa é feita

através de uma função que recebe dois parâmetros: um número de evento para iniciar e outro

para terminar a pesquisa. A função devolve o número do evento quando o tiver encontrado. A

Page 60: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

46

mailbox é então reservada e é dada a indicação, através das flags correspondentes, que não

contém uma mensagem de resposta mas sim de comando. Se o número de tentativas de

reenvio de uma mensagem tiver sido esgotado, este estado actualiza o número de eventos

activos (contador geral e por aplicação) passando de seguida para o estado TX_2.

Ao chegar ao estado TX_2 já foi escolhida uma aplicação, seleccionado um evento e reservada

a respectiva mailbox. Aqui é chamada a função para compor a mensagem acedendo a

EEPROM, Figura 29, e adicionando o índice do evento ao endereço de base daquela memória.

O esqueleto da mensagem presente na EEPROM é acedido e copiada para a mailbox para

preencher os campos em falta, avançando-se em seguida para o estado TX_3 onde se vai

chamar uma função do módulo NET para enviar a mensagem.

Figura 29 - Procedimento para obter da EEPROM o esqueleto da mensagem pretendida

A Figura 30 contém um esquema simplificado da máquina de estados implementada para o

módulo MSG.

Page 61: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

47

IDLE

RX_1 TX_1

recepção envio

mensagem não

normalizada

(envia para a

aplicação)

RX_1

é necessário

responder

TX_2

TX_3

Escolhida aplicação e

evento para enviar

A mensagem já foi

composta

Figura 30 - Representação simplificada da máquina de estados do módulo MSG

A tabela seguinte contém a lista de funções que constituem o módulo MSG.

Tabela 6 - Funções implementadas no módulo MSG

Função Descrição

MSG_compose_msg() Lê o esqueleto da mensagem da EEPROM e faz a

composição da mesma para envio

MSG_process_event_timeouts() Verifica se um evento está activo mas não marcado para

envio e controla as retransmissões

MSG_tx_abort(app_index, app_mask) Sinaliza que o envio da mensagem da aplicação

app_index foi abortado e activa a flag correspondente

para que a mensagem seja novamente gerada

MSG_find_event(start_event, limit) Procura um evento marcado para envio. Inicia a pesquisa

em start_event e termina em limit

MSG_init() Faz a inicialização da máquina de estados do módulo

MSG

MSG_task() Implementa a máquina de estados que trata da recepção

e envio de mensagens. Trata também das

retransmissões de mensagens que não foram

confirmadas.

Page 62: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

48

5.3 Arquitectura das aplicações DomoBus implementadas

Com a realização deste trabalho, as aplicações deixaram de fazer o envio, recepção e

tratamento de mensagens normalizadas – responsabilidade do módulo MSG – e passaram

apenas a conter uma máquina de estados que implementa a sua funcionalidade.

Após a leitura do sensor e obtenção de um novo valor, a aplicação tem de activar o evento

correspondente no caso de o valor lido ser válido. Este aspecto surgiu na actual

implementação pois anteriormente assumia-se sempre que os valores lidos eram válidos, o que

nem sempre correspondia à realidade. Adicionalmente, neste momento o sistema está

preparado para suportar propriedades do tipo byte, word e array e não apenas do tipo byte

como acontecia anteriormente. O pseudo-código seguinte permite descrever de uma forma

genérica uma aplicação DomoBus, ilustrando-se a leitura de um sensor.

Código 1 – Estrutura genérica de uma aplicação DomoBus (leitura de sensor)

if(PROP_set_byte_index(device_index, PROP_NUM_0)) /* define índices*/

{

/* erro do dispositivo ou propriedade*/

}

ler sensor "device_index";

if( ...invalid...) /* valor inválido */

{

if(PROP_value_is_invalid() == 0) /* valor anterior era válido*/

{

PROP_value_is_invalid(); /* definer valor como inválido */

PROP_set_event(_REPEAT_3_TIMES); /* para enviar mensagem */

}

}

else /* valor lido é válido */

{

if(PROP_value_is_invalid()) /* valor anterior era invalid */

{

PROP_set_value_valid();

PROP_set_byte(value);

PROP_set_event(_REPEAT_3_TIMES); /* para enviar mensagem*/

}

else /* valor anterior era válido */

{

old_value = PROP_get_byte();

if(value != old_value)

{

PROP_set_byte(value);

PROP_set_event(_REPEAT_3_TIMES); /*para enviar msg*/

}

}

}

Page 63: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

49

Como se observa, a estrutura das aplicações ficou bastante simplificada e já contemplam a

possibilidade de ocorrer uma falha ou avaria num sensor e terem de lidar com valores

inválidos. Neste momento é também possível lidar de uma forma simplificada com uma gama

variada de sensores e actuadores pois já são suportados todos os tipos de propriedades

possíveis do DomoBus e não apenas valores do tipo byte.

Page 64: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 65: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

51

6 Avaliação e testes

6.1 Impacto da adição de um campo novo nas tramas

Com a realização deste trabalho alterou-se o formato do campo de dados das tramas

DomoBus passando este a indicar para além do dispositivo, da propriedade e do valor, um

número de sequência do evento. Os motivos que levaram a esta implementação estão

relacionados com o correcto emparelhamento da resposta com a mensagem e a presente

secção pretende analisar o impacto que a abordagem teve no tempo de transmissão da trama

e no respectivo débito da comunicação.

Podendo as propriedades ser de três diferentes tipos relacionados com a dimensão do valor

que lhes diz respeito, a dimensão do campo de dados da trama é variável. Para efeitos de

testes contemplaram-se os três tipos de propriedades (byte, word e array).

Na presente abordagem o campo de dados da trama ocupa 40 bits1 no caso de ser referente

ao valor de uma propriedade do tipo byte (inclui número de sequência, dispositivo, propriedade

e valor). Se a propriedade for do tipo word, serão ocupados 50 bits e 80 bits para uma

propriedade do tipo array de quatro elementos (notar que um valor do tipo array ocupa N+1

bytes, sendo N o número de bytes que contém, e utiliza um byte extra para indicar o número de

elementos do array). As tabelas seguintes contêm os resultados obtidos para a simulação e

considerando dois tempos de acesso ao meio aleatórios (1.5 e 7.5 unidades de tempo de 200

µs) referentes a dois níveis de tráfego diferentes – reduzido e elevado.

Tabela 7 - Tempo de trama e débito para tráfego reduzido e para os vários tipos de propriedade

Tempo de acesso aleatório médio: 1.5 * 200 µs = 0.3 ms

Byte Word Array (4 elementos)

Tempo de trama

sem número de sequência (ms)

8.2

8.8

10.3

Débito (msg/s) 121.5 114,3 97.0

Tempo de trama

com número de sequência (ms)

8.8

9.3

10.8

Débito (msg/s) 114.3 107.9 92.3

Variação percentual do débito -6.0 % -5.6 % -4.8 %

1 Recorda-se que cada byte útil corresponde ao envio de 10 bits na linha de comunicação.

Page 66: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

52

Figura 31 - Comparação do débito de tramas com e sem número de sequência no campo de dados (tráfego reduzido)

Tabela 8 - Tempo de trama e débito para tráfego elevado e para os vários tipos de propriedade

Tempo de acesso aleatório médio: 7.5 * 200 µs = 1,5 ms

Byte Word Array (4 elementos)

Tempo de trama

sem número de sequência (ms)

9.4

10.0

11.5

Débito (msg/s) 106.1 100.5 86.0

Tempo de trama com número de sequência

(ms)

10.0

10.5

12.0

Débito (msg/s) 100.5 95.5 83.1

Variação percentual do débito

-5.2 % -5.0 % -4.3 %

Page 67: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

53

Figura 32 - Comparação do débito de tramas com e sem número de sequência no campo de dados (tráfego elevado)

É possível verificar que ao acrescentar o número de sequência no campo de dados da trama

DomoBus o débito tem uma redução entre 4.3% e 6.0%. Esta abordagem abre no entanto

caminho a novas funcionalidades: o byte de número de sequência pode ser eventualmente

utilizado numa implementação futura para semente de cifra um algoritmo de encriptação de

dados. A robustez da comunicação entre as aplicações sai também beneficiada porque a

unicidade do número de sequência, elimina as situações em que havia a possibilidade de com

uma falha na transmissão, se confundirem as respostas às mensagens e se apagarem eventos

com uma mensagem antiga.

6.2 Utilização de respostas só com o número de sequência

As tramas DomoBus possuem um bit que indica se a mesma é uma mensagem de resposta.

No caso das mensagens referentes a uma operação SET ou NOTIFY, a resposta enviada é

exactamente igual à mensagem que lhe deu origem, com excepção do bit de resposta que

deverá estar activo. Se a mensagem enviada for relativa a um comando GET, a mensagem de

resposta terá obviamente de conter o valor da propriedade a que diz respeito, para além do bit

de resposta activo.

A simulação realizada na presente secção pretende verificar o impacto resultante da introdução

de tramas contendo apenas o número de sequência, surgindo como resposta a tramas com os

quatro campos e comparar com aquelas que contêm apenas o dispositivo, a propriedade e o

valor. Fez-se a simulação para os cenários de tráfego reduzido e elevado.

Page 68: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

54

Tabela 9 - Tempo de trama e débito para tráfego reduzido para as condições descritas na secção 6.2 (tráfego reduzido)

Tempo de acesso aleatório médio: 1.5 * 200 µs = 0.3 ms

Byte Word Array (4 elementos)

Tempo de trama e resposta

sem número de sequência (ms)

16.5

17.5

20.6

Débito (msg/s) 60.8 57.1 48.5

Tempo de trama e resposta apenas

com número de sequência (ms)

15.9

16.5

18.0

Débito (msg/s) 62.7 60.8 55.5

Variação percentual do débito

+3.3 % +6.3 % +14.5 %

Figura 33 - Comparação do débito utilizando mensagens nas condições descritas na secção 6.2 (tráfego reduzido)

Page 69: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

55

Tabela 10 - Tempo de trama e débito para tráfego elevado para as condições descritas na secção 6.2 (tráfego elevado)

Tempo de acesso aleatório médio: 7.5 * 200 µs = 0.3 ms

Byte Word Array (4 elementos)

Tempo de trama e resposta

sem número de sequência (ms)

18.9

19.9

23.0

Débito (msg/s) 53.0 50.3 43.4

Tempo de trama e resposta apenas

com número de sequência (ms)

18.3

18.9

20.4

Débito (msg/s) 54.5 53.0 49.0

Variação percentual do débito

+2.8 % +5.5 % +12.8 %

Figura 34 - Comparação do débito utilizando mensagens nas condições descritas na secção 6.2 (tráfego elevado)

Verifica-se que o débito da comunicação sai beneficiado com a introdução de respostas com

apenas o número de sequência em comparação com respostas com a indicação dos campos

de dispositivo, propriedade e valor com um aumento do débito superior a 14.5%.

Page 70: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

56

6.3 Impacto da utilização de respostas super-prioritárias

O sistema DomoBus prevê a existência tramas de três prioridades diferentes – normais,

prioritárias e super-prioritárias – que diferem no tempo de acesso ao meio físico (fixo e

aleatório). Com o presente trabalho, decidiu-se optar pela utilização de tramas super-

prioritárias como resposta a tramas de prioridade normal.

De modo a determinar o impacto desta abordagem, simulou-se o envio de uma trama de

prioridade normal sem envio do número de sequência (apenas os campos dispositivo,

propriedade e valor) e resposta normal com os mesmos campos enviados. Fez-se a

comparação com o envio de uma mensagem de prioridade normal com os campos de número

de sequência, dispositivo, propriedade e valor e com resposta super-prioritária com apenas o

número de sequência. À semelhança das simulações das secções anteriores, os testes foram

efectuados para as situações de tráfego reduzido e elevado. Os resultados são visíveis nas

tabelas e gráficos seguintes.

Tabela 11 – Comparação do tempo de trama e débito para a situação descrita na secção 6.3 (tráfego reduzido)

Tempo de acesso aleatório médio: 1.5 * 200 µs = 0.3 ms

Byte Word Array (4 elementos)

Tempo de trama e resposta

sem número de sequência (ms)

16.5

17.5

20.6

Débito (msg/s) 60.8 57.1 48.5

Tempo de trama e resposta super-

prioritária apenas

com número de sequência (ms)

14.9

15.5

17.0

Débito (msg/s) 66.9 64.7 58.8

Variação percentual do débito

+10.2 % +13.2 % +21.2 %

Page 71: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

57

Figura 35 - Comparação do débito para a situação descrita na secção 6.3 (tráfego reduzido)

Tabela 12 - Tempo Comparação do tempo de trama e débito para a situação descrita na secção 6.3 (tráfego elevado)

Tempo de acesso aleatório médio: 1.5 * 200 µs = 0.3 ms

Byte Word Array (4 elementos)

Tempo de trama e resposta

sem número de sequência (ms)

18.9

19.9

23.0

Débito (msg/s) 53.0 50.3 43.4

Tempo de trama e resposta super-

prioritária apenas

com número de sequência (ms)

17.3

17.9

19.4

Débito (msg/s) 57.7 56.0 51.5

Variação percentual do débito

+8.8 % +11.4 % +18.6 %

Page 72: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

58

Figura 36 - Comparação do débito para a situação descrita na secção 6.3 (tráfego elevado)

A introdução de respostas super-prioritárias acrescenta melhorias muito significativas em

termos de débito, que pode atingir aumentos de débito superiores a 20%. Esta abordagem

associada a respostas com o envio de apenas o número de sequência, permite melhorar ainda

mais o débito de comunicação.

6.4 Melhorias introduzidas com o ajuste do tempo de acesso ao meio

Durante o tempo de funcionamento do sistema é expectável que o tráfego no meio de

comunicação seja variável. Com o aumento do número de nós a transmitirem dados, o número

médio de colisões aumenta também e torna-se necessário tomar medidas para melhorar a

eficiência da comunicação e optimizar a utilização da largura de banda disponível. Por outro

lado, é igualmente necessário reajustar o tempo de acesso ao meio quando houver uma

melhoria das condições de transmissão.

Um nó quando pretende iniciar uma transmissão tem de aguardar um tempo fixo para aceder

ao meio e um tempo aleatório para evitar que colida com outro nó que também esteja a tentar

transmitir. Na presente implementação, o tempo de acesso aleatório correspondente a um

intervalo de 3, 7 ou 15 unidades de 200 µs consoante o nível de tráfego - reduzido, médio e

elevado, respectivamente. Este tempo é aumentado quando é detectada uma colisão no

processo de envio e é reduzido quando é notada uma melhoria na fluidez da rede – recebido

um ACK a uma mensagem enviada.

Page 73: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

59

Apesar de não ser possível medir com rigor a melhoria que esta implementação introduziu

apenas com simulações, em termos teóricos o número de colisões vai diminuir e a utilização da

largura de banda disponível vai ser optimizada porque vai existir uma gama ajustável de

intervalos de tempo em que a comunicação pode ser efectuada.

6.5 Análise dos resultados

A opção pela introdução do número de sequência nas mensagens foi feita com o objectivo de

dar suporte a uma comunicação mais fiável e permitir eliminar mensagens duplicadas ou

confundir respostas atrasadas com a que se espera. Considere-se o seguinte exemplo: um

evento gerou a mensagem M1 e enviou-a, a resposta R1 foi gerada mas não foi possível enviá-

la. Se um novo evento gerar uma mensagem nova - M2 - e esta for enviada, na eventualidade

de se receber a resposta R1 pode-se erradamente considerar que está a confirmar a

mensagem M2. A introdução do número de sequência nas mensagens pretende mitigar esta

situação devido à unicidade do valor em relação aos eventos activos. A utilização do número

de sequência pode também abrir caminho à sua utilização como semente de cifra de um

algoritmo de encriptação.

Como desvantagem, a utilização do número de sequência diminui o débito da rede entre 4.3%

e 6.0% mas considerando que todas as mensagens têm de ser respondidas, a introdução de

mensagens de resposta que enviam apenas o número de sequência no campo de dados da

trama, traz melhorias no débito entre 2.8% e 14.5% (par mensagem e resposta).

Adicionalmente, a utilização de respostas super-prioritárias permite melhorar ainda mais o

débito da comunicação (melhoria entre 8.8% e 21.2%).

Page 74: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 75: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

61

7 Conclusões

Com a presente dissertação analisou-se em detalhe o sistema DomoBus que pretende ser um

sistema fiável, robusto e de baixo custo para Domótica. O contributo deste trabalho centrou-se

no software para os Módulos de Controlo, os quais são constituídos por sistemas embebidos

que utilizam o microcontrolador AT90S8515 que possui diminutos recursos, particularmente em

termos de memória, mas tem um custo muito baixo. Os Módulos de Controlo são responsáveis

pela ligação aos sensores e actuadores permitindo monitorizar e actuar sobre o meio

envolvente.

Nesta tese foi seguido o modelo DomoBus que descreve os diferentes dispositivos domóticos

através de um conjunto de propriedades que podem ser lidas ou modificadas usando um

conjunto normalizado de mensagens. Foi desenvolvida uma nova arquitectura de software para

os Módulos de Controlo que permitiu simplificar o desenvolvimento de aplicações domóticas e

ao mesmo tempo oferecer características multi-tarefa e suporte fiável para as comunicações. A

nova abordagem revelou-se mais robusta e compacta em termos de código face à versão

anterior pois centralizou todo o tratamento de mensagens, o que antes tinha de ser realizado

aplicação a aplicação. Em particular, aspectos como o envio de respostas e o tratamento de

certas mensagens passaram a ser feitas de forma automática pelo módulo MSG, sem a

necessidade de intervenção das aplicações, o que simplifica bastante o seu desenvolvimento.

Este aspecto permite também poupar bastante memória, que é um recurso muito escasso nos

microcontroladores usados.

O módulo MSG trata ainda dos aspectos ligados à construção das mensagens a partir do

índice de um dado evento e tendo como base esqueletos das mensagens presentes em

EEPROM. É também o módulo MSG que trata das retransmissões de mensagens caso não

sejam recebidas as respectivas respostas. Para tal recorre-se ao mecanismo de eventos

descrito e à capacidade de facilmente voltar a gerar as mensagens, evitando a abordagem

típica de guardar em memória as mensagens enviadas e cuja resposta está pendente, o que

era incomportável por falta de memória.

A implementação realizada permite lidar com valores inválidos resultantes de erro na leitura ou

da avaria dos sensores, o que não se verificava anteriormente. Adicionalmente estão já

contemplados todos os tipos de valores de propriedades suportados pelo DomoBus – Byte,

Word e Array – sendo o seu tratamento feito de forma transparente recorrendo ao módulo

PROP.

Foi também implementado um novo módulo de comunicações que permitiu aumentar a

fiabilidade da comunicação introduzindo retransmissões, minimizando as colisões e

controlando o fluxo de modo a optimizar a utilização da largura de banda disponível. É agora

Page 76: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

62

possível ter uma percepção do estado da rede tomando as medidas necessárias para manter

uma transmissão robusta. Os objectivos propostos foram atingidos e foram introduzidos

mecanismos para melhorar as respostas às tramas (envio do número de sequência para além

do dispositivo, da propriedade e do valor, possibilidade de resposta usando apenas o número

de sequência e introdução de respostas super-prioritárias). Foi também acrescentado um

método ajustável para controlar o tempo de acesso ao meio e assim evitar colisões e ainda um

mecanismo para controlar o débito do canal de modo a evitar congestionamento. As melhorias

introduzidas foram simuladas recorrendo a fórmulas de cálculo, gráficos e tabelas e a um

simulador pois é muito difícil quantificá-las na prática. Foi possível verificar que o envio do

número de sequência nas tramas faz baixar o débito da comunicação mas em contrapartida

permite um emparelhamento mais fiável das respostas às mensagens na eventualidade da

ocorrência de uma falha no envio. Adicionalmente, a introdução de respostas contendo apenas

o número de sequência do evento e super-prioritárias, traz benefícios e aí o débito é

claramente beneficiando quando se efectua a comparação com a implementação anterior em

que as respostas tinham uma prioridade normal e os dados eram integralmente enviados. Os

mecanismos de acesso ao meio e de controlo de débito da comunicação acrescentaram

igualmente melhorias pois permitiram reduzir os problemas associados ao aumento do número

de colisões – associado ao incremento do número de nós a transmitir – e ainda reduzir o

congestionamento verificado em situações de tráfego superior à capacidade do canal.

Por último destaca-se a generalidade e portabilidade da solução desenvolvida que permite

oferecer mecanismos multi-tarefa com características de tempo-real e comunicação fiável

usando uma quantidade mínima de memória de dados (512 bytes) e reduzida memória de

código (8 Kbytes). O software desenvolvido necessita apenas de recursos hardware básicos do

microcontrolador, nomeadamente um temporizador e uma UART para a comunicação,

podendo pois ser adaptado à generalidade dos microcontroladores disponíveis, incluindo os de

menor custo.

7.1 Trabalho futuro

Após a realização deste trabalho continua a existir espaço para introduzir melhorias na solução

domótica DomoBus. Refere-se em particular melhoramentos ao nível da segurança com a

introdução de encriptação do campo de dados das tramas. Salienta-se que o facto de ter sido

introduzido o campo ‘S’ (número de sequência) nas tramas abre a possibilidade de no futuro

este campo poder vir a ser usado como semente de um algoritmo de cifra que se aplicaria aos

campos seguintes. Deste modo poder-se-ia ter a garantia de que elementos externos ao

sistema não teriam acesso ao estado dos dispositivos nem teriam a capacidade de alterar esse

mesmo estado.

A modificação do formato das tramas dificultou a realização de testes que permitiriam

quantificar na prática as melhorias introduzidas com o trabalho desenvolvido, pois isso impediu

Page 77: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

63

que pudesse ser usado um gateway já existente para ligação dos módulos a um PC. Sem essa

infra-estrutura para, de um modo fácil, enviar mensagens para os módulos e monitorizar as

mensagens geradas por estes, não foi possível efectuar uma quantificação de aspectos como o

número de colisões, o número de retransmissões, o número de mensagens confirmadas, o

débito efectivo atingido no meio de comunicação e o impacto dos novos mecanismos

desenvolvidos. Em particular não foi possível, por exemplo, identificar o impacto de ajustes de

alguns dos parâmetros como o grau de aumento do valor aleatório aquando da ocorrência de

uma colisão, ou em que medida o sistema é rápido a adaptar-se a variações significativas de

tráfego. A adaptação necessária do software do gateway e do respectivo software no PC

relevou-se bastante complexa e morosa, o que implicaria o prolongamento significativo do

presente trabalho, situação se mostrou incompatível com compromissos entretanto já

assumidos. Adicionalmente, existia ainda a restrição de o número de módulos de controlo

disponíveis ser bastante reduzido, não sendo viável a realização de novos módulos num prazo

de tempo curto, sem os quais não seria possível o teste efectivo dos mecanismos de controlo

de congestionamento. Futuramente será pois desejável a realização de testes exaustivos do

sistema que permitam avaliar o desempenho dos mecanismos implementados e possibilitem o

seu ajuste, o que deverá envolver, idealmente, um número bastante elevado de módulos de

controlo. Desse modo seriam obtidos resultados mais rigorosos e fiáveis face às simulações

realizadas.

Page 78: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica
Page 79: Desenvolvimento de um Protótipo de um Sistema Domótico · 2.1.1 Estrutura genérica de um protocolo de comunicação ... 2.1.2 Protocolos de comunicação vocacionados para domótica

65

8 Referências

[1] António Manuel L. Quadros Flores, “A criação de valor no binómio: “casa inteligente” / consumidor”, 9th SPANISH PORTUGUESE CONGRESS ON ELECTRICAL ENGINEERING, Julho 2005.

[2] Renato Nunes, “Análise Comparativa de Tecnologias para Domótica”, JEACI 2002- III Jornadas de Engenharia de Automação, Controlo e Instrumentação, EST Setúbal, Maio 2002.

[3] Danny Briere, Pat Hurley, Smart Homes for Dummies 3rd

Edition, Wiley Publishing, 2007

[4] José Alves Marques, Paulo Guedes, Tecnologia de Sistemas Distribuídos, FCA, 1998.

[5] EIB (1999) System Specifications - Release 3.0.

[6] H. Merz, T. Hansemann, C. Hübner, Building Automation, Springer, 2009.

[7] Andrew S. Tanenbaum, Modern Operating Systems, Prentice Hall, 1996.

[8] Gernot Heiser, "Microkernels rule!", http://www.embedded.com/ . Acedido em Julho de 2010.

[9] Echelon, “Introduction to the LonWorks® Platform - Revision 2”, 2009.

[10] UPnP, “Understanding Universal Plug and Play”, 2000.

[11] Microchip “Controller Area Network (CAN) Basics”, 1999.

[12] PROFIBUS, http://www.profibus.com/. Acedido em Setembro de 2010.

[13] Philip Levis “TinyOS Programming”, 2006.

[14] eCos, “eCos User Guide”, eCosCentric Ltd ,2003.

[15] Contiki, “The Contiki Operating System”, 2010.

[16] RTOS, “Real-Time Operating Systems - RTOS”, 2006.

[17] FreeRTOS, http://www.freertos.org/FAQMem.html/. Acedido em Julho de 2010.

[18] ATMEL, “AT90S8515 Datasheet”, 1998

[19] Renato Nunes, “DomoBus - A New Approach to Home Automation”, in: 8CLEEE - 8th International Congress on Electrical Engineering, Portugal, pp.2.19-2.24, Julho 2003.

[20] Renato Nunes “Implementing Tiny Embedded Systems With Networking Capabilities”, IADIS International Conference on Applied Computing 2005, Algarve, Portugal, Fevereiro 2005.

[21] James F. Kurose, Keith W. Ross Computer Networking – A Top-Down Approach Featuring the Internet (Third Edition), Pearson Education, 2005.

[22] Dogan Ibrahim, Advanced PIC Microcontroller Projects in C, Newnes, 2008.

[23] Renato Nunes, “Especificação XML de um Sistema DomoBus”, Instituto Superior Técnico, Dezembro de 2006.

[24] Renato Nunes, "Análise Comparativa de Quatro Tecnologias Domóticas", Instituto Superior Técnico, 2010.