Mudanças entre as edições de "Especificação do Projeto 2015 1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 1: Linha 1:
= Especificação do Projeto=
+
== Especificação do Projeto==
  
 
Recordando do modelo em cascata, avançamos para a etapa de PROJETO. Como vimos, cada processo transforma um produto para produzir um novo produto como saída. Em seguida, o novo produto torna-se a entrada do processo seguinte. A tabela abaixo lista os processos e produtos do modelo cascata, situando no destaque em amarelo, o ponto onde estamos <center>
 
Recordando do modelo em cascata, avançamos para a etapa de PROJETO. Como vimos, cada processo transforma um produto para produzir um novo produto como saída. Em seguida, o novo produto torna-se a entrada do processo seguinte. A tabela abaixo lista os processos e produtos do modelo cascata, situando no destaque em amarelo, o ponto onde estamos <center>
Linha 35: Linha 35:
  
 
[[Arquivo:WaterfallModel.png|center|modelo Waterfall (FONTE: http://courses.cs.vt.edu/csonline/SE/Lessons/Waterfall/waterfallmodel.html]]
 
[[Arquivo:WaterfallModel.png|center|modelo Waterfall (FONTE: http://courses.cs.vt.edu/csonline/SE/Lessons/Waterfall/waterfallmodel.html]]
 +
 +
 +
===Visão Geral do Sistema===
 +
 +
Como definimos na aula 10, a estrutura proposta para o sistema especificado é subdividido em três subsistemas:
 +
 +
• APP para controle do sistema de automação
 +
 +
• Servidor de Automação
 +
 +
• Controladores de Eletroeletrônicos
 +
 +
 +
===APP para controle do sistema de automação ===
 +
 +
O App permite a comunicação e o controle do sistema. Ele atua como interface Homem-Máquina, enviando mensagens ao Servidor de Automação. Essas mensagens são enviadas como Strings e contém  campos que definem parâmetros da mensagem. A comunicação entre o APP e o Servidor é feita usando tecnologia Bluetooth.
 +
 +
===Servidor de Automação===
 +
 +
O Servidor do sistema, pode comunicar-se nas duas redes (Bluetooth e ZigBee) e faz a ponte entre o APP e os dispositivos finais, recebendo e encaminhando as mensagens nas duas redes.
 +
 +
===Controladores de Eletroeletrônicos===
 +
 +
Os controladores de eletroeletrônicos tem a função de executar os comandos enviados pelo APP, tais como acender lâmpadas, fechar persianas, ligar aparelhos de ar-condicionado. Os Controladores recebem as mensagens pela rede sem fio e executam os comandos determinados pelo usuário, acionando os eletroeletrônicos. Esses Controladores também enviam mensagens de confirmação de recebimento de mensagem e status dos eletroeletrônicos para o Coordenador.
 +
 +
 +
==Servidor de Automação ==
 +
 +
Para desempenhar a função de Servidor da rede foi escolhido o microcontrolador Arduino.
 +
 +
A plataforma Arduino é uma ferramenta simples e fácil de usar mesmo para leigos em programacão e eletrônica. Essas características tornaram ela uma plataforma muito utilizada para o desenvolvimento de prototipos. Por se tratar de uma plataforma aberta de hardware e software, qualquer um pode montar protótipos com kits Arduino.
 +
 +
O kit Arduino é composto por um um microcontrolador que contém um código a ser executado, além de portas de entrada e saída digitais, portas para comunicação serial, portas de entrada analógicas e de saída PWM (Pulse-Width Modulation), onde é possível controlar o nível médio de tensão da saída e com isso controlar velocidade de motores, intensidade de iluminação entre outras aplicações.
 +
 +
Nessas portas de entrada e saída é possível conectar botões, sensores, LEDs ou quaisquer outros dispositivos elétricos, tornando inúmeras as possibilidades de uso para essa plataforma.
 +
 +
 +
<center>[[Arquivo:ArduinoUno.jpg|400px]]</center>
 +
 +
 +
Na topologia escolhida o Coordenador desempenha função fundamental na rede, ou seja, tem todo o controle da rede, assumindo um papel central e fazendo a comunicação direta com o APP e todos os dispositivos finais. Toda a informação transmitida tem que passar pelo Coordenador, por esse motivo seu código deve processar as mensagens das duas redes, Bluetooth e Zigbee.
 +
 +
 +
A expansão das funcionalidades da plataforma Arduino é possível através da conexão de diversos shields e módulos de comunicação encontrados no mercado.
 +
 +
Para a conexão com o dispositivo Andróid, por exemplo, pode ser usado o shield bluetooth HC-06. Similar ao módulo da figura abaixo.
 +
 +
 +
<center>[[Arquivo:HC06.png|300px]]</center>
 +
 +
 +
Para a comunicação entre o Servidor e os Controladores Finais foram escolhidos os módulos XBee.
 +
 +
XBee é a marca da Digi International para uma família de módulos de rádio comunicação. Esses rádios operam usando o protocolo ZigBee, utilizado para aplicações que exigem baixas taxas de transmissão de dados e baixo consumo de energia.
 +
 +
 +
<center>[[Arquivo:Xbee_Pro2_g.jpg|300px]]</center>
 +
 +
 +
O programa para o Servidor é dividido em subsistemas. Cada um desses subsistemas e suas funcionalidades são mostrados na figura abaixo.
 +
 +
<center>[[Arquivo:SubsitemaServidor.png|800px]]</center>
 +
 +
 +
 +
==Controladores de Eletroeletrônicos ==
 +
 +
O microcontrolador Arduino também foi escolhido para desempenhar a função de Controlador de Eletroeletrônicos e o módulo Xbee para a comunicação com o Servidor.
 +
 +
O programa do Controlador também é dividido em subsistemas como mostrado abaixo.
 +
 +
<center>[[Arquivo:SubsitemaControlador.png|800px]]</center>
 +
 +
 +
No início do programa dos Controladores são definidos os tipos de mensagem, e o endereço do módulo XBee do Servidor de Automação. Também é definida a comunicação com o módulo XBee a uma velocidade de 9600bps e as portas 2 a 13 como saída (output).
 +
 +
Em seguida é feito um looping verificando a chegada de mensagens nos pinos usados para a comunicação com o módulo XBee. Caso seja detectada a chegada de uma mensagem, os campos da mensagem são extraídos com o uso da biblioteca XBee.
 +
 +
Os valores dos pinos enviados do Aplicativo de Automação variam de 1 a 6, assim, uma função identifica o tipo de mensagem e define a porta correta que deve ser comutada ou lida conforme  o esquema da figura abaixo.
 +
 +
<center>[[Arquivo:PortasArduino.png|600px]]</center>
 +
 +
 +
Como exemplo, se o programa receber na variável ''APP_command'' o tipo de mensagem ''MSG_DIGITALWRITE'' com valor 10 e na variável ''pin_num'' o valor 1, o subsistema de Gerenciamento de comando App executa o comando solicitado no pino digital 2 (primeiro pino digital após pinos 0 e 1, RX e TX). Se o programa receber na variável ''APP_command'' o tipo de mensagem ''MSG_DIGITALWRITE'' com valor 10 e na variável ''pin_num'' o valor 2, o subsistema de Gerenciamento de comando App executa o comando solicitado no pino digital 4 (segundo pino digital após pinos 0 e 1, RX e TX).
 +
 +
De maneira semelhante, a função processa o valor correto dos pinos digitais PWM e dos pinos analógicos.
 +
 +
A figura abaixo relaciona possíveis eletroeletrônicos com as portas do Arduino e respectivos tipos de sinal usados para seu controle.
 +
 +
<center>[[Arquivo:SimbolosEletros.png|600px]]</center>
 +
 +
 +
Com o valor correto da porta definido pela função anterior, os comandos são executados conforme os parâmetros recebidos.
 +
 +
Se o controlador receber corretamente a mensagem do servidor e executar os comandos conforme solicitado, é montada e enviada em seguida uma mensagem de retorno para confirmar o recebimento da mensagem ou enviar valores de retorno.
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Define tipo de mensagem para que o microcontrolador  ligado ao dispositivo final execute um comando de acionamento ou desligamento de um dos seus pinos digitais. Após o envio desse tipo de mensagem é aguardado mensagem de confirmação do tipo 12.
 +
 +
Os pinos reservados para acionamento digital na placa Arduino, ou seja, com valores 0 ou 1 são os pinos:
 +
 +
D2, D4, D7, D8, D12, D13.
 +
 +
'''MSG_ANALOGWRITE 11 (1 Byte )
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Define tipo de mensagem para que o microcontrolador  ligado ao dispositivo final execute um acionamento de um  dos pinos digitais com PWM. Após o envio desse tipo de mensagem é aguardado mensagem de confirmação do tipo 12.
 +
 +
Os pinos reservados para acionamento  digital com PWM, ou seja, com valores que podem variar entre 0 e 255 são os pinos:
 +
 +
D3, D5, D6, D9, D10, D11.
 +
 +
'''MSG_DIGITALREAD 13 (1 Byte )'''
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Define mensagem de pedido de leitura de uma das portas digitais seguintes:
 +
 +
D2, D4, D7, D8, D12, D13.
 +
 +
Após o envio desse tipo de mensagem é aguardado mensagem de resposta do tipo 15, com o valor solicitado (0 ou 1) num de seus campos.
 +
 +
 +
'''RSP_LEITURA 15 (1 Byte )'''
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Tipo de mensagem de resposta que define o valor de leitura da porta digital PWM solicitada em mensagens do tipo 13 e 14.
 +
 +
'''MSG_STATUS 16 (1 Byte )'''
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Define mensagem de pedido de leitura de uma das portas analógicas do microcontrolador.
 +
As portas analógicas do microcontrolador que permitem essa leitura são as seguintes:
 +
 +
A0, A1, A2, A3, A4, A5.
 +
 +
 +
'''Porta'''
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Pode assumir valores de 1 a 6 e indicam a porta onde o eletroeletrônico está ligado no Controlador.
 +
 +
'''Valor'''
 +
 +
Valor com tamanho igual a 1 byte enviado como  decimal. Assume valores entre 0 e 255 e indicam o estado do eletroeletrônico ou o valor de ajuste.

Edição das 21h18min de 13 de maio de 2015

Especificação do Projeto

Recordando do modelo em cascata, avançamos para a etapa de PROJETO. Como vimos, cada processo transforma um produto para produzir um novo produto como saída. Em seguida, o novo produto torna-se a entrada do processo seguinte. A tabela abaixo lista os processos e produtos do modelo cascata, situando no destaque em amarelo, o ponto onde estamos

Entrada de Produto Processo Saída de Produto
Comunicação dos Requisitos Engenharia de Requisitos Documento de Especificação de Requisitos
Documento de Especificação de Requisitos Projeto Documento de Especificação do Projeto
Documento de Especificação do Projeto Implementação/Programação Módulos de software executáveis
Módulos de software executáveis Integração e Testes Módulos integrados no produto
Módulos integrados no produto Entrega Produto de software entregue
Produto de software entregue Manutenção Requisitos alterados

Reveja melhor estes processos e produtos, na animação do modelo Waterfall.

modelo Waterfall (FONTE: http://courses.cs.vt.edu/csonline/SE/Lessons/Waterfall/waterfallmodel.html


Visão Geral do Sistema

Como definimos na aula 10, a estrutura proposta para o sistema especificado é subdividido em três subsistemas:

• APP para controle do sistema de automação

• Servidor de Automação

• Controladores de Eletroeletrônicos


APP para controle do sistema de automação

O App permite a comunicação e o controle do sistema. Ele atua como interface Homem-Máquina, enviando mensagens ao Servidor de Automação. Essas mensagens são enviadas como Strings e contém campos que definem parâmetros da mensagem. A comunicação entre o APP e o Servidor é feita usando tecnologia Bluetooth.

Servidor de Automação

O Servidor do sistema, pode comunicar-se nas duas redes (Bluetooth e ZigBee) e faz a ponte entre o APP e os dispositivos finais, recebendo e encaminhando as mensagens nas duas redes.

Controladores de Eletroeletrônicos

Os controladores de eletroeletrônicos tem a função de executar os comandos enviados pelo APP, tais como acender lâmpadas, fechar persianas, ligar aparelhos de ar-condicionado. Os Controladores recebem as mensagens pela rede sem fio e executam os comandos determinados pelo usuário, acionando os eletroeletrônicos. Esses Controladores também enviam mensagens de confirmação de recebimento de mensagem e status dos eletroeletrônicos para o Coordenador.


Servidor de Automação

Para desempenhar a função de Servidor da rede foi escolhido o microcontrolador Arduino.

A plataforma Arduino é uma ferramenta simples e fácil de usar mesmo para leigos em programacão e eletrônica. Essas características tornaram ela uma plataforma muito utilizada para o desenvolvimento de prototipos. Por se tratar de uma plataforma aberta de hardware e software, qualquer um pode montar protótipos com kits Arduino.

O kit Arduino é composto por um um microcontrolador que contém um código a ser executado, além de portas de entrada e saída digitais, portas para comunicação serial, portas de entrada analógicas e de saída PWM (Pulse-Width Modulation), onde é possível controlar o nível médio de tensão da saída e com isso controlar velocidade de motores, intensidade de iluminação entre outras aplicações.

Nessas portas de entrada e saída é possível conectar botões, sensores, LEDs ou quaisquer outros dispositivos elétricos, tornando inúmeras as possibilidades de uso para essa plataforma.


ArduinoUno.jpg


Na topologia escolhida o Coordenador desempenha função fundamental na rede, ou seja, tem todo o controle da rede, assumindo um papel central e fazendo a comunicação direta com o APP e todos os dispositivos finais. Toda a informação transmitida tem que passar pelo Coordenador, por esse motivo seu código deve processar as mensagens das duas redes, Bluetooth e Zigbee.


A expansão das funcionalidades da plataforma Arduino é possível através da conexão de diversos shields e módulos de comunicação encontrados no mercado.

Para a conexão com o dispositivo Andróid, por exemplo, pode ser usado o shield bluetooth HC-06. Similar ao módulo da figura abaixo.


HC06.png


Para a comunicação entre o Servidor e os Controladores Finais foram escolhidos os módulos XBee.

XBee é a marca da Digi International para uma família de módulos de rádio comunicação. Esses rádios operam usando o protocolo ZigBee, utilizado para aplicações que exigem baixas taxas de transmissão de dados e baixo consumo de energia.


Xbee Pro2 g.jpg


O programa para o Servidor é dividido em subsistemas. Cada um desses subsistemas e suas funcionalidades são mostrados na figura abaixo.

SubsitemaServidor.png


Controladores de Eletroeletrônicos

O microcontrolador Arduino também foi escolhido para desempenhar a função de Controlador de Eletroeletrônicos e o módulo Xbee para a comunicação com o Servidor.

O programa do Controlador também é dividido em subsistemas como mostrado abaixo.

SubsitemaControlador.png


No início do programa dos Controladores são definidos os tipos de mensagem, e o endereço do módulo XBee do Servidor de Automação. Também é definida a comunicação com o módulo XBee a uma velocidade de 9600bps e as portas 2 a 13 como saída (output).

Em seguida é feito um looping verificando a chegada de mensagens nos pinos usados para a comunicação com o módulo XBee. Caso seja detectada a chegada de uma mensagem, os campos da mensagem são extraídos com o uso da biblioteca XBee.

Os valores dos pinos enviados do Aplicativo de Automação variam de 1 a 6, assim, uma função identifica o tipo de mensagem e define a porta correta que deve ser comutada ou lida conforme o esquema da figura abaixo.

PortasArduino.png


Como exemplo, se o programa receber na variável APP_command o tipo de mensagem MSG_DIGITALWRITE com valor 10 e na variável pin_num o valor 1, o subsistema de Gerenciamento de comando App executa o comando solicitado no pino digital 2 (primeiro pino digital após pinos 0 e 1, RX e TX). Se o programa receber na variável APP_command o tipo de mensagem MSG_DIGITALWRITE com valor 10 e na variável pin_num o valor 2, o subsistema de Gerenciamento de comando App executa o comando solicitado no pino digital 4 (segundo pino digital após pinos 0 e 1, RX e TX).

De maneira semelhante, a função processa o valor correto dos pinos digitais PWM e dos pinos analógicos.

A figura abaixo relaciona possíveis eletroeletrônicos com as portas do Arduino e respectivos tipos de sinal usados para seu controle.

SimbolosEletros.png


Com o valor correto da porta definido pela função anterior, os comandos são executados conforme os parâmetros recebidos.

Se o controlador receber corretamente a mensagem do servidor e executar os comandos conforme solicitado, é montada e enviada em seguida uma mensagem de retorno para confirmar o recebimento da mensagem ou enviar valores de retorno.

Valor com tamanho igual a 1 byte enviado como decimal. Define tipo de mensagem para que o microcontrolador ligado ao dispositivo final execute um comando de acionamento ou desligamento de um dos seus pinos digitais. Após o envio desse tipo de mensagem é aguardado mensagem de confirmação do tipo 12.

Os pinos reservados para acionamento digital na placa Arduino, ou seja, com valores 0 ou 1 são os pinos:

D2, D4, D7, D8, D12, D13.

MSG_ANALOGWRITE 11 (1 Byte )

Valor com tamanho igual a 1 byte enviado como decimal. Define tipo de mensagem para que o microcontrolador ligado ao dispositivo final execute um acionamento de um dos pinos digitais com PWM. Após o envio desse tipo de mensagem é aguardado mensagem de confirmação do tipo 12.

Os pinos reservados para acionamento digital com PWM, ou seja, com valores que podem variar entre 0 e 255 são os pinos:

D3, D5, D6, D9, D10, D11.

MSG_DIGITALREAD 13 (1 Byte )

Valor com tamanho igual a 1 byte enviado como decimal. Define mensagem de pedido de leitura de uma das portas digitais seguintes:

D2, D4, D7, D8, D12, D13.

Após o envio desse tipo de mensagem é aguardado mensagem de resposta do tipo 15, com o valor solicitado (0 ou 1) num de seus campos.


RSP_LEITURA 15 (1 Byte )

Valor com tamanho igual a 1 byte enviado como decimal. Tipo de mensagem de resposta que define o valor de leitura da porta digital PWM solicitada em mensagens do tipo 13 e 14.

MSG_STATUS 16 (1 Byte )

Valor com tamanho igual a 1 byte enviado como decimal. Define mensagem de pedido de leitura de uma das portas analógicas do microcontrolador. As portas analógicas do microcontrolador que permitem essa leitura são as seguintes:

A0, A1, A2, A3, A4, A5.


Porta

Valor com tamanho igual a 1 byte enviado como decimal. Pode assumir valores de 1 a 6 e indicam a porta onde o eletroeletrônico está ligado no Controlador.

Valor

Valor com tamanho igual a 1 byte enviado como decimal. Assume valores entre 0 e 255 e indicam o estado do eletroeletrônico ou o valor de ajuste.