3 Projeto de Bancada
4.3 Proposta e solução em Software
O software é um elemento essencial no projeto pois ele é que fará a interação homem máquina. Essa interação deve ser de fácil e simples utilização, além de leve processamento para ser capaz de funcionar tanto em computadores de gerações mais antigas quanto computadores de última geração.
4.3. Proposta e solução em Software 65
4.3.1
Firmware
O firmware é um tipo de software de baixo nível que faz o controle do Hardware específico. Diferentemente da aplicação, o usuário não tem contato direto com o firmware. Todo o controle, processamento e aquisição de dados da bancada passa pelo firmware antes de ser levado a aplicação e apresentada ao usuário ou vice-versa, como mostra a figura 35 .
Figura 35 – Diagrama do Software da bancada. (Produção do próprio autor, 2018)
O firmware do projeto foi realizado na IDE Arduino por ser de fácil utilização e própria para o microcontrolador Arduino que é utilizado no Hardware do Projeto. O firmware é constituído de dois blocos maiores, um para recebimento de dados da bancada e outro para envio de dados para bancada. Os dois blocos funcionam de forma paralela, um de cada vez, como numa comunicação Half-Duplex.
Figura 36 – Diagrama do Firmware da bancada. (Produção do próprio autor, 2018)
O bloco de recebimento de dados tem a função de fazer leitura de sinal das portas analógicas e, de acordo com as configurações selecionadas na aplicação, monta o Stream de dados para enviar a aplicação. O bloco de envio de dados para a bancada tem a função de receber, via serial, informações da aplicação como amplificador utilizado, quantidade de termopares, ganho do amplificador INA125 e com estes dados configurar as respectivas portas do arduino.
O fluxograma completo do firmware representa em passos todo o processo de aqui- sição e processamento dos dados. O firmware foi projetado em .ino, devido ao microcon- trolador ser arduino. Devido a alta complexidade, o fluxograma completo do firmware foi realizado em duas partes, nas figuras 37e 38.
66 Capítulo 4. Desenvolvimento
Figura 37 – Fuxograma completo do Firmware da bancada, parte A. (Produção do próprio autor, 2018)
4.3. Proposta e solução em Software 67
Figura 38 – Fuxograma completo do Firmware da bancada, parte B. (Produção do próprio autor, 2018)
68 Capítulo 4. Desenvolvimento
O firmware do projeto inicia as variáveis com os respectivos valores padrão. Após isso, analisa se tem algum comando vindo pela interface serial, o qual é mandado pela Aplicação. Caso tenha algum dado, é feita a leitura da String que está aguardando na Serial. Com isso, esta String é enviada a uma função de comandos enviados pela aplicação. Na função de comandos, o firmware tem a relação de todos os casos possíveis e como tratar o sistema para cada caso. Por exemplo, se a string enviada pela aplicação for ’A’, o firmware irá acionar todos os relés dos resistores de aquecimento, em caso da string for ’8’ o firmware muda para nível lógico baixo a seletora do multiplexador das saídas dos amplificadores, assim por diante.
Paralela a função de comandos, o firmware recebe os dados vindo dos amplificado- res e dos LM35, totalizando 6 sinais (4 do multiplexador e 2 LM35). Após isso, cada sinal é tratado com uma média de 100 amostras, afim de diminuir variações, porém descartando amostras cujo valor seja 0, diminuindo a queda da média.
O resultado desta filtragem é utilizado para calcular a temperatura de cada sinal, porém para isso, o firmware checa por qual amplificador está recebendo o sinal, pois cada um tem uma forma diferente de cálculo. AD595 leva em consideração o fator de conversão e offset utilizado, enquanto INA125 utiliza o ganho selecionado do amplificador, offset e valor de temperatura adquirido pelo LM35.
Temperaturas calculadas o firmware monta o Stream de dados. Foi desenvolvido um protocolo de comunicação entre a aplicação e o microcontrolador para envio deste Stream de dados. Isto garante que as mensagens enviadas pela aplicação sejam compreendidas pelo microcontrolador e vice-versa
4.3.2
Aplicação
A aplicação será desenvolvida em JAVA por se tratar de uma linguagem que não necessita de uma habilidade complexa em programação e tem capacidade de desenvolver um programa que realize todos os requisitos do projeto. A IDE de programação será o programa NetBeans IDE 8.2. A escolha desta IDE é a facilidade de se criar programas com interface gráfica.
4.3.2.1 Arquitetura de Software
Após a escolha da plataforma de desenvolvimento e a linguagem de programação, determinou-se qual padrão de projeto será utilizado. O padrão de projeto determina como será a construção da aplicação e facilita, ao desenvolvedor, a realizar o projeto de forma sistemática. Para o desenvolvimento da aplicação da bancada utilizou-se o padrão MVC (Model-View-Controller).
4.3. Proposta e solução em Software 69
O padrão MVC é um padrão cuja principal função é separar a interação do usuário com a troca e controle de informações da aplicação. As vantagens de se utilizar um padrão como o MVC são (MACORATTI, 2018):
1. Devido a um modelo ser generalizado, ou seja, ter capacidade de gerenciar vários visualizadores, facilita a manutenção, testes e atualizações.
2. Facilidade para incluir novos visualizadores e controles 3. Aplicação fica escalável
4. Facilidade de documentação
5. Reduz tempo de desenvolvimento do projeto
O padrão MVC utilizado na bancada foi projetado com a estrutura de acordo com a figura 39.
Figura 39 – Diagrama do Padrão MVC adotado na Aplicação. (Produção do próprio au- tor, 2018)
O bloco janela é a interface gráfica direta, ou seja, o elemento de interação direta com o usuário. Nele contém as telas, botões de ação, gráficos, imagens, entre outros. Importante apresentar que no bloco janela, não pode haver nenhum tipo de controle ou cálculo da aplicação.
A API (Application Programming Interface) utilizada para criar as telas foi a Swing. A função do Swing é facilitar a inclusão dos componentes que formam as telas. A
70 Capítulo 4. Desenvolvimento
figura40apresenta um diagrama simplificado de como é o funcionamento do bloco janela, a partir das telas que são apresentadas ao usuário.
Figura 40 – Diagrama do bloco Janela da Aplicação. (Produção do próprio autor, 2018)
O diagrama da figura 40 não representa a forma como uma tela abre outra tela, já que isso não é papel do bloco janela, mas sim a hierarquia de telas na aplicação.
O bloco modelo são os padrões adotados ao projeto. Este bloco tem a função de receber o que ocorre com na janela, fazer as mudanças de estado, gerenciar os dados transitados por ele, entre outros. No projeto, os modelos adotados foram separados por tarefas. Isso significa, por exemplo, que duas telas do bloco janela que requisitam uma tarefa similar, tem esta requisição passada para o mesmo modelo.
Os modelos utilizados no projeto são apresentados em forma de diagrama na figura 41.
Observa-se que a figura 41 não apresenta todas as tarefas que foram projetadas no bloco modelo. Porém, as outras tarefas-modelo são feitas de forma facilitada pela API Swing, como por exemplo preenchimento de jComboBox, jTextField, entre outros. Logo não foi necessário a programação destes modelos, apenas instanciá-los. Dois modelos importantes utilizados nesta aplicação foi a biblioteca jFreeChart e jFileChooser.
A jFreeChart é uma biblioteca de terceiros feita em JAVA que permite apresentar gráficos de qualidade de vários tipos, como gráficos pizza, de colunas, de linhas, barras, etc (jfree.org, 2018). A vantagem de se utilizar esta ferramente é o modelo já pronto, onde é possível que o desenvolvedor altere títulos, linhas, eixos, entre outras funções. Outra vantagem sobre a ferramenta é a possibilidade do usuário, em tempo de execução, alterar alguns parâmetros do gráfico e ter acesso a algumas propriedades. O usuário pode salvar como imagem o gráfico, alterar propriedades como eixos com escala automática, cor da linha, entre outros.
4.3. Proposta e solução em Software 71
Figura 41 – Diagrama do bloco Modelo da Aplicação. (Produção do próprio autor, 2018)
de arquivos. Esta biblioteca é padrão da API JAVA Swing, e permite que o usuário selecione o arquivo que deseja buscar ou o diretório que deseja para realizar alguma tarefa desenvolvida. Esta ferramenta evita que o desenvolvedor necessite carregar todas os arquivos que estão no computador para apresentar ao usuário.
O bloco controladora é responsável por toda a computação dos dados, sejam cálcu- los, armazenamento, controle do fluxo de dados. Este bloco trabalha de forma direta com a persistência pois ele quem irá receber os dados da persistência, tratá-los e apresentá-los aos modelos corretos.
Algumas das tarefas do bloco controladora são apresentados na listagem abaixo:
1. Receber o Vetor de Strings contendo os valores adquiridos na persistência
2. Separar os dados entre valores de temperatura, valores de ganho e seletora do mul- tiplexador
3. Converter os valores de tensão em temperatura de acordo com o que está definido no arquivo de configuração
4. Receber do bloco modelo um comando do usuário para a bancada
5. Converter o comando serial em dados para a bancada e enviá-lo para o bloco de persistência.
72 Capítulo 4. Desenvolvimento
Nota-se por meio da listagem que o bloco controladora realiza todo tipo de cálculo e tramissão de dados importante para o projeto, porém não realiza nenhum tipo de alteração gráfica na aplicação.
O bloco persistência tem a função de trabalhar diretamente com o Hardware do projeto. Este bloco estabelece o protocolo de comunicação entre o hardware e o com- putador. Tem funções de proteção contra conexões perdidas, perda de dados durante transmissão e filtragem de dados incoerente com o protocolo.
As funções do bloco persistência são apresentados na listagem abaixo:
1. Identificar portas COM (Portas de comunicação) conectadas ao computador e listá- las para a controladora
2. Estabelecar a conexão Serial com a porta COM selecionada pelo usuário no bloco janela.
3. Determinar parâmetros de conexão com a COM, como taxa de transmissão, quan- tidade de bits de dados e de final de frame.
4. Estabelecer listener para ficar como ouvinte da porta serial conectada, afim de perceber quando houver dados a serem recebidos serialmente.
5. Ler o Stream de dados que estão sendo transmitidos pela bancada via serial e enviar este Stream para o bloco controladora.
6. Receber do bloco controladora a Stream de dados que o usuário configurou no bloco janela e enviá-la a bancada via serial, de acordo com a porta COM conectada. 7. Finalizar a conexão serial com a porta COM conectada.
Uma biblioteca importante para a consolidação do bloco de persistência é a RTX- serial. A API RXTXserial é uma biblioteca de terceiros a qual permite que a Aplicação faça comunicação com dispositivos Serial (jlog.org, 2018). Logo, é com esta API que a aplicação faz a conexão com o microcontrolador e permite passar os dados da bancada didática para o computador que esteja executando a aplicação.
Unindo todos os elementos da arquitetura de software MVC, foi possível projetar as telas da aplicação com todas as funcionalidades já descritas, e assim, cumprir os requisitos propostos pelo projeto.
4.3.2.2 Telas
Quando o usuário abre o programa, utilizou-se um recurso chamado SplashScreen. Este recurso é como uma tela de inicialização de espera para o usuário saber que o programa está sendo iniciado. A figura 42mostra a SplashScreen do Software.
4.3. Proposta e solução em Software 73
Figura 42 – Tela de apresentação do programa. (Produção do próprio autor, 2018)
Após o carregamento do Software, uma tela básica (Figura43) é aberta onde tem as opções disponíveis como "Conexão", "Configuração", "Calibração"e "Ensaio".
Figura 43 – Tela inicial do programa. (Produção do próprio autor, 2018)
Para a construção do software foi utilizada a ferramenta jDesktopPane. Esta fer- ramenta é a tela inicial onde dentro desta pode-se abrir várias janelas independentes (Co- nhecidas como jInternalFrame). A vantagem de utilizar esta ferramenta é que o usuário pode movimentar, maximizar, minimizar os jInternalFrames dentro do DesktopPane. Para o programador a vantagem de utilizar esta ferramenta é a individualização dos códigos de cada jInternalFrame. Cada opção citada anteriormente abre um novo InternalFrame.
O botão "Conexão"abre um InternalFrame (Figura44) cujo o objetivo é realizar a conexão da bancada didática com o software.
A tela "Conexão"faz a comunicação com o arduino, porém não envia e nem recebe dados pela serial, apenas encontra o "caminho"através das portas COM, via USB. Nesta tela, o software é capaz de buscar todas as portas disponíveis para conexão, logo após esta busca, o usuário pode selecionar qual porta deseja conectar e faz a conexão. O software é capaz de identificar um erro no momento da busca de portas e apresenta ao usuário uma janela de erro, como mostra a figura 45.
74 Capítulo 4. Desenvolvimento
Figura 44 – Tela de Conexão do Software. (Produção do próprio autor, 2018)
Figura 45 – Mensagem de Erro em caso de não conexão. (Produção do próprio autor, 2018)
A tela "Configurações"tem o objetivo do usuário configurar o ensaio o qual ele deseja realizar. Dentro desta InternalFrame existem duas opções, ou o usuário utiliza uma configuração já feita anteriormente ou faz uma nova configuração, como mostra a figura46 .
Para uma configuração já realizada anteriormente, o usuário deve clicar sobre a imagem da "Pasta"localizada após o caminho do diretório e lá pode selecionar o arquivo de configuração que deseja utilizar. Se o usuário deseja criar uma nova configuração, deve selecionar qual amplificador deseja-se utilizar, o ganho do amplificador caso esteja utilizando amplificação com ganho variável, a taxa de transmissão de comunicação com a bancada didática, quantidade de amostras do ensaio, quantidade de termopares e qual a unidade de medida de temperatura.
Para realizar o ensaio, o usuário primeiro deve decidir qual Módulo Experimental deseja realizar o ensaio, onde as 2 opções estarão disponíveis ao usuário.
4.3. Proposta e solução em Software 75
Figura 46 – Tela de Configurações do Software. (Produção do próprio autor, 2018)
Figura 47 – Tela de Seleção de Ensaio. (Produção do próprio autor, 2018)
Em todos os Módulos Experimentais tem-se as mesmas abas de funcionamento, são elas "Sobre", "Montagem"e "Ensaio". Na aba "Sobre"a tela faz um pequeno explicativo de como funciona o ensaio, qual objetivo e a teoria acerca deste ensaio. A aba "Montagem"há um explicativo em passos de como montar a bancada para estar apta a realizar o respectivo ensaio. Esta aba contém os passos escritos e imagens em CAD para auxiliar o usuário. A figura 48 mostra um exemplo dos 2 ensaios abertos onde cada ensaio está em uma aba diferente para facilitar a visualização.
Para iniciar qualquer um dos ensaios, o usuário deve clicar no botão "Iniciar"que há na tela inicial do programa. Ao começar do ensaio, o gráfico da aba "Ensaio"irá atualizar em tempo real de acordo com o ocorrido no respectivo módulo experimental. No momento desejado, o usuário pode pausar o ensaio clicando no botão "Pausa"que está localizado na tela inicial do programa. O gráfico do ensaio pode ter algumas características alteradas, o usuário pode salvar como imagem o gráfico gerado em várias extensões, além de outros recursos bastando o usuário clicar com botão direito do mouse sobre o gráfico, como
76 Capítulo 4. Desenvolvimento
Figura 48 – Telas dos Módulos Experimentais. (Produção do próprio autor, 2018)
mostra a imagem49 .
Figura 49 – Exemplo de Tela de Propriedades do gráfico. (Produção do próprio autor, 2018)