Mudanças entre as edições de "Especificação do Projeto 2015 1"
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.
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.
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.
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.