Especificação do Projeto 2015 1: mudanças entre as edições
Sem resumo de edição |
|||
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
1 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.

1.1 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
1.2 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.
1.3 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.
1.4 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.
2 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.

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.

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.

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

3 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.

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.

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.

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.