• Nenhum resultado encontrado

Controlando um Auto Modelo com um Programa Escrito em Java e o Hardware Arduino

N/A
N/A
Protected

Academic year: 2021

Share "Controlando um Auto Modelo com um Programa Escrito em Java e o Hardware Arduino"

Copied!
7
0
0

Texto

(1)

Controlando um Auto Modelo com um Programa Escrito em

Java e o Hardware Arduino

Elaine A. R. Pires1, Elisângela A. R.2, Ivan Luiz P. Pires3 1Instituto Federal de Mato Grosso – Campus Juína (IFMT) Caixa Postal 255  – 78.320­000 – Juína – MT – Brasil 2Universidade Tecnológica Federal do Paraná – Campus Curitiba (UTFPR) 3Departamento de Computação Universidade Estadual de Mato Grosso (UNEMAT) – Colíder, MT – Brasil [email protected][email protected], [email protected] Abstract. The Java programming language has been growing as a high­level language with great support of new functionalities through a wide variety of available libraries. Furthermore, the communication between Java program and   hardware   device,   like   a   Arduino,   is   possible   through   a   serial communication.   Thus,   this   article   presents   a   Java   and   Arduino communication approach, for auto model control.

Resumo.  A   linguagem   de   programação   Java   vem   crescendo   como   uma linguagem   de   alto   nível   e   com   grande   suporte   de   novas   funcionalidades através de uma vasta variedade de bibliotecas disponíveis. Além disso,   é possível comunicar de forma serial um programa Java com dispositivos de hardware, como a plataforma de hardware livre Arduino. Assim, este artigo apresenta   uma   abordagem   de   comunicação   entre   um   software   e   um dispositivo de hardware para controlar um auto modelo.

1. Justificativa

Com o crescimento da linguagem de programação Java como uma linguagem de alto nível e com grande suporte de novas funcionalidades, foram desenvolvidas uma vasta variedade   de   bibliotecas,   sendo   desenvolvida   sob   uma   Máquina   Virtual   a   qual possibilita   a   portabilidade   entre   diferentes   sistemas   operacionais.   Uma   das   grandes características desta linguagem é sua interação com a comunicação serial, possibilitando o controle de dispositivos de hardware com microcontroladores, como a plataforma de hardware livre Arduino. O controle de dispositivos físicos através de software abre uma gama de possibilidades através da interação do mundo real com uso de sensores e atuadores, para diversas áreas de aplicação, sejam elas educacionais, comerciais e para fins de pesquisa. Este artigo apresenta um protótipo para a comunicação de um software com um dispositivo de hardware para controle de um auto modelo, mediado pela plataforma de

(2)

hardware  livre   Arduino.   Este  software  é   desenvolvido   em   Java,   o   que   o   torna

multiplataforma, e comunica com um software embarcado no hardware Arduino através da porta serial, e este hardware comunica com um controle de rádio frequência do auto modelo   através   de   portas   lógicas,   controlando­o.   Esta   pesquisa,   embora   apresente resultados, é um passo preliminar na criação de uma base para aplicações que controlem dispositivos de forma automática e em um próximo passo, autônoma. 2. Fundamentação Teórica Os microcomputadores vem equipados com um recurso de comunicação que permite a troca de dados entre dois sistemas, este tipo de comunicação pode ser tanto via serial quanto paralela: na serial, os dados são enviados via sequencial e; na paralela, os dados são enviados de forma paralela. Para fazer um sistema comunicar­se com outro sistema, é   necessário   conhecer   circuitos,   padrões   de   comunicação   e   uma   linguagem   de programação (RABELLO, 2009).

A linguagem de programação Java é uma linguagem de alto nível, que vem se destacando no cenário de programação orientada a objeto, que pode ser caracterizada pela simplicidade, arquitetura neutra, orientada a objeto, portável, distribuída, de alta performance,  multithreaded,   robusta,   dinâmica   e   segura   (ORACLE,   2016).   Esta linguagem  é desenvolvida  sobre a Máquina Virtual  Java (LINDHOLM e YELLIN, 1999), e disponível para diferentes sistemas operacionais, sendo que a mesma classe é capaz   de   ser   executada   tanto   para   Windows   (MICROSOFT,   2016),   Solaris   (SUN, 2016), Linux (LINUX, 2016) ou Mac OS (APPLE, 2016). Uma forte característica da linguagem Java é o uso de bibliotecas para diferentes aplicações, como a API RXTX (RXTX,   2016)   e   suas   classes  CommPortIdentifier,   SerialPort,   SerialPortEvent,

SerialPortEventListener usadas nesta pesquisa, as quais possibilitam a comunicação de

um programa escrito em Java com a porta Serial do hardware hospedeiro. 

A comunicação serial é um processo de transferência de dados de um bit por vez, podendo incluir os dispositivos de rede, teclados, mouses, modems e terminais. Quando é feita uma comunicação serial, cada byte (caractere) de dados que é enviado ou recebido é feito a um bit por vez. Cada  bit  pode ser representado pelo estado lógico ligado (1) ou desligado (0). A velocidade de envio dos dados por uma porta serial é expressa em bits por segundo, representado por  bps, na nomenclatura inglesa, ou em

baudot  rate  (“Taxa de  Baud”), que representa o número de bits (zeros ou uns) que

podem   ser   enviados   ou   recebidos   em   um   segundo   (COMER,   2001).     Com   a comunicação   serial,   um  software  pode   interagir   com   dispositivos   eletrônicos   para interpretar os envios de bits de mensagem e executar determinadas funções e comunicar com   programas   embarcados   nestes   dispositivos,   tais   como   placas   compostas   por microcontroladores ou hardwares que são disponibilizados com toda a estrutura física para estas aplicações, como o caso da plataforma de hardware livre Arduino, utilizado nesta pesquisa.

O Arduino (ARDUINO, 2016)  é uma plataforma de prototipagem eletrônica

open­source  que se baseia em  hardware  e  software  fáceis de usar, sendo destinado a

qualquer pessoa interessada em criar objetos ou ambientes interativos. O Arduino pode sentir o estado do ambiente que o cerca por meio de sensores que receptam os sinais e pode interagir com os seus arredores, controlando luzes, motores e outros atuadores, conectados através de suas portas digitais e analógicas. O microcontrolador na placa é

(3)

programado com a linguagem de programação C (SCHILDT, 1997), com bibliotecas próprias e no ambiente de desenvolvimento Arduino. Os projetos desenvolvidos com o Arduino podem ser autônomos ou podem comunicar­se com um computador para a realização da tarefa, com uso de software específico. Existem várias placas que podem se comunicar com o Arduino, estas podem ser adquiridas já montadas ou construídas manualmente. A figura 1 apresenta o Arduino Duemilanove. 3. Metodologia

Inicialmente   realizou­se   uma   pesquisa   bibliográfica   como   aporte   teórico   sobre   a linguagem   de   programação   Java,   bem   como   a   busca   por   bibliotecas   e  APIs  que possibilitem a comunicação de um programa Java com a porta serial para leitura e escrita.   Além   disso,   foram   levantadas   as   informações   sobre   o   Arduino,   desde   a identificação   dos   componentes   e   seus   estudos   até   as   suas   funções   e   aplicações   de exemplos.

Após foi realizado um estudo sobre a arquitetura do auto modelo, no intuito de compreender   o   funcionamento   de   seus   componentes   eletrônicos.   O   auto   modelo utilizado é um simples brinquedo de controle remoto sem recursos de hardwares para programação. Em seguida, foi construído o dispositivo eletrônico usado como interface entre o auto modelo e o programa Java, além de testes para  comunicar o controle de rádio frequência do auto modelo com o Arduino.  Para estes testes foram realizados pesquisas até concluir a necessidade do uso de transistores para chavear a alimentação do controle remoto do auto modelo e o Arduino, uma vez que trabalham respectivamente em 9 e 5 volts.

Por   fim,   foi   desenvolvido   um  software  em   Java   para   comunicar   com   o Arduino. Esta comunicação foi possível com o uso da API RXTX, uma biblioteca com vários métodos implementados para enviar e receber bytes pela porta USB, entre outras funcionalidades.

4. Desenvolvimento do Protótipo

Como passo preliminar, foi desenvolvido um protótipo composto por um auto modelo

Figura 1. Arduino Duemilanove (Fonte: (Arduino, 2016))

(4)

controlado por rádio frequência (RF), um software embarcado no microcontrolador do Arduino e um  software  Java para interação do Humano­Hardware.  A figura 2 ilustra esta arquitetura. O primeiro passo foi desmontar o controle do auto modelo para identificar em sua placa os componentes eletrônicos usados para a rádio frequência, e o envio das informações para avanço, retrocesso, virar à direita e à esquerda. Após a identificação, foi realizada a solda dos fios para conexão ao Arduino, organizados da seguinte forma: o fio 1 corresponde a ré, o fio 2 corresponde ao avanço do auto modelo, o fio 3 vira a roda para a direita, o fio 4 gira a roda para esquerda e o fio 5 é o condutor elétrico neutro responsável pelo aterramento (fio terra). A figura 3 ilustra os fios identificados. Após, os 5 fios foram soldados em uma placa padrão para melhor organização e   o   uso   de   quatro   transistores   para   regulagem   e   chaveamento   entre   a   voltagem adequada, a fase e o neutro. A figura 4 ilustra os fios soldados na placa padrão e os transistores, no qual o número 1 indica o fio terra conectado ao controle de RF do auto modelo, os números 2 indicam contatos do aterramento para cada transistor, os números 3 indicam  os fios responsáveis  por enviar comando  para o auto modelo,  sendo da esquerda para a direita respectivamente: avançar, retroceder, virar as rodas dianteira para a direita, virar as rodas dianteiras para a esquerda, e os fios 4 conectam os fios 3 de comandos às portas do Arduino, após passagem pelo transistor.

Como fonte de alimentação, utilizou­se uma bateria de 9 volts, para alimentar o

Figura 2. Arquitetura do protótipo desenvolvido.

(5)

controle de rádio frequência, e esta foi conectada ao Arduino possibilitando o envio correto dos comandos para o controle de rádio frequência. Em função do uso desta fonte de alimentação, houve a necessidade do uso destes transistores, pois o controle de Rádio Frequência do auto modelo se alimenta de 9 volts e o Arduino de 5 volts, assim o transistor foi utilizado como chaveador.  No Arduino os fios recebidos da placa padrão foram conectados da seguinte forma: o comando avançar foi conectado na porta 8, retroceder na porta 5, virar as rodas dianteiras para a direita na porta 2 e virar as rodas dianteiras para a esquerda na porta 11.   Após   foi   desenvolvido   um   pequeno   programa   escrito   em   C   e   embarcado   no microcontrolador do Arduino.  

Neste   programa   foi   indicado   a   taxa   de  Baud  9600   bits   por   segundo   para comunicação serial do Arduino com o programa Java desenvolvido, as portas utilizadas como saída para controle do auto modelo, além da leitura de entrada serial.  Ao receber os caracteres pela porta serial, o programa executa as seguintes funções: caractere 1 para o auto modelo avançar, 0 para parar de avançar; 3 para retroceder, 2 para parar de retroceder; 5 para virar à direita, 4 para parar de virar à direita; 7 para virar à esquerda, e 6 para parar de virar à esquerda. O Arduino Duemilanove usado possui 32 KB de memória flash para armazenar o código, 1 KB de SRAM e 512 Bytes de EEPROM (que pode ser lido e escrito com a biblioteca EEPROM). Cada um dos 14 pinos digitais no Duemilanove pode ser usado como uma entrada ou saída, operando em 5 volts, utilizando as funções  pinMode  ,

digitalWrite  e  digitalRead  presentes na biblioteca própria do Arduino   (ARDUINO,

2016). 

Para o desenvolvimento do programa embarcado foram utilizadas as funções

pinMode, digitalWrite e digitalRead. A função pinMode foi utilizada para indicar o uso

de cada porta como entrada ou saída, a função digitalWrite foi utilizada para o envio de

bits  para as portas especificadas e a função  digitalRead  foi utilizada para receber os

dados enviados pelo  software Java enviado pela porta serial.

O software para interação com o usuário, desenvolvido em Java, utiliza a API

RXTX para comunicação na porta serial, pois, de acordo com SCHILDT (1997), como o

Java   utiliza   uma   máquina   virtual   e   não   comunica   diretamente   com   o   Sistema Operacional (SO), a comunicação com o hardware torna­se um pouco mais complexa, dependendo do uso de API´s. A API RXTX é baseada na API Javacomm distribuída pela própria SUN e possibilita a comunicação da porta paralela e USB de forma simplificada (RXTX, 2010), sendo para o desenvolvimento do Software de interação com o usuário,

(6)

nesta   pesquisa,   foi   necessário   importar   somente   as   bibliotecas

gnu.io.CommPortIdentifier,   import   gnu.io.SerialPort,   import   gnu.io.SerialPortEvent, import   gnu.io.SerialPortEventListener  e   utilizar   seus   métodos   e   o   evento SerialPortEventListener.

O  software  de interação com o usuário escrito em Java utiliza apenas duas classes: Principal e Arduino. Na classe Principal está a construção de uma interface gráfica   construída   com   a   biblioteca  javax.swing  e   suas   classes   e   a   biblioteca

java.awt.event utilizando as classes KeyEvent e KeyListener para a leitura das teclas do computador através de eventos específicos.  A classe Arduino configura os parâmetros necessários para a comunicação da porta serial, utilizando os métodos da  API RXTX possibilitando tanto o envio quanto o recebimento de Bytes pela porta USB. Além disso, esta classe possui os métodos para o comando do auto modelo que são executados quando as teclas do computador são pressionadas e o método enviar para transmissão do comando ao Arduino.   As teclas são utilizadas  com eventos para acionamento  dos métodos para controle do auto modelo. Utiliza­se a tecla “seta pra cima” pressionada para invocar o método ligarFrente e ao não pressionar mais esta tecla é invocado o método   desligarFrente   comandando   o   avanço   do   auto   modelo,   e   desta   forma   são utilizadas também as teclas “seta esquerda”, “seta direita” e “seta para baixo”. A figura 5 apresenta o diagrama de classe deste software contendo as classes, eventos e pacotes utilizados.

5. Conclusão e Trabalhos Futuros

Esta   pesquisa   apresentou   o     controle   de   um   dispositivo   físico   por   um  software, utilizando a linguagem Java e o  hardware  Arduino. O uso da linguagem Java com a biblioteca  RXTX  possibilitou   o desenvolvimento   do  software  de  forma  simples  e  a plataforma Arduino simplificou a interação com o dispositivo eletrônico. 

A principal contribuição deste trabalho é apresentar uma forma de controlar um dispositivo físico por um software. Além disso, esta pesquisa pode servir de base para

(7)

novas abordagens de integração de software com hardware. 

Como trabalhos futuros estão a: extensão para controles de novos hardwares e

software  de controle  pode ser substituída por  um agente de  software  ou um sistema

multiagentes.  Com   estas   características   pode­se   automatizar   questões  complexas   no cenário de TI em diferentes aplicações (Bergenti et al, 2004).

Referências

Apple. (2016) “Mac OS X website”, http://www.apple.com/br/macosx/, Junho.

Arduino.   (2016)   “Arduino   Website:   playground”,

http://www.arduino.cc/playground/Portugues/HomePage, Junho.

Bergenti,   F.;   Gleizes,   M.   e   Zambonelli,   F.   (2004)   “Methodologies   and   Software Engineering   For   Agent   Systems   –   The   Agent­Oriented   Software   Engineering Handbook”, Kluwer Academic Publishers, p. 505. Comer, D. (2001) “Redes de Computadores e Internet”, Bookman, 2ª edição traduzida, Porto Alegre – RS, p. 48­52. Lindholm, T. e Yellin, F. (1999) “The JavaTM Virtual Machine Specification”, Prentice Hall, 2ª edição, Palo Alto, Califórnia, p. 496. Linux. (2016) “Linux Online Website”, http://www.linux.org/info/index.html, Junho.

Microsoft.   (2016)   “Windows   Website”,

http://www.microsoft.com/windows/default.aspx, Junho.

Oracle   Corporation.   (2016)   “The   Java   Tutorials   Website”, http://java.sun.com/docs/books/tutorial/index.html, Junho. Rabello, L. M. (2009) “Comunicado Técnico: Programa em Linguagem JAVA para Comunicação Serial”, Embrapa Publicações, São Paulo ­ SP, p. 7. Rxtx. (2016) “RXTX Original Website”, http://www.rxtx.org, Junho. Schildt, H. (1997) “C Completo e Total”, Markron Books, 3ª edição, p. 827. Sun. (2016) “Solaris Website”, http://br.sun.com/practice/software/solaris/, Junho.

Referências

Documentos relacionados