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

Documentos relacionados
MINICURSO - PLATAFORMA ARDUINO Eixo de Informação e Comunicação Gil Eduardo de Andrade

Introdução à Plataforma ARDUINO

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

INFORMAÇÕES GERAIS DO TRABALHO

Arduino. Gilmar Aquino

Arduino - Primeiros Passos

Projeto 01. Adriano Joaquim de Oliveira Cruz Instituto de Matemática UFRJ 2015 Adriano Cruz. 30 de agosto de 2015

Por Sergio Genilson Pfleger PLATAFORMA ROBÓTICA GENÉRICA BASEADA EM ARDUINO.

AULA 6 - INTRODUÇÃO AO ARDUINO Revisão de Eletrônica Digital e introdução aos Sistemas Computacionais.

ANÁLISE DE DADOS DE LINHA DE PRODUÇÃO

ARDUINO. Profº. Engº. Robson Dias Ramalho

PROTÓTIPO DE SISTEMA DE CAPTURA DE DADOS MULTIPONTO WIRELESS PARA CONTROLE DE CONSUMO DE ÁGUA

Informática I. Aula 2. Ementa

ENTRADA E SAÍDA FELIPE G. TORRES

SOFTWARES PARA CONTROLE DE ROBÔ CÂMERA

// Arduino {? } Mais o que é?..

Projeto de Algoritmos

PSI2662 Projeto em Sistemas Eletrônicos Embarcados: Sensores e Atuadores. Apresentação do Kit Freescale Freedom FDRM-KL25Z e Portas de Entrada e Saída

(83)

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

Projeto Panzer. Fabio Henrique Mazarotto Margareth Suchÿ

Arduino Lab 02 Sensor de luminosidade e display de LCD 16 2

Estudo da placa de prototipagem Intel Galileo Gen2. Apostila de acompanhamento para o aluno.

Sistemas Digitais EDUARDO ELIAS ALVES PEREIRA

A placa descrita pode receber alimentação pela conexão USB ou por uma fonte de alimentação externa.

ARDUÍNO PROCEDIMENTOS BÁSICOS

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Depois de configurada nossa comunicação serial podemos enviar vários comandos para comunicação entre o computador e o Arduino:

Guia da Placa de desenvolvimento PD Mega16 N1

Montagem e Manutenção de Computadores

AUTOMAÇÃO DE PORTA COM FECHADURA ELÉTRICA UTILIZANDO CLP ARDUINO E TECNOLOGIA BLUETOOTH 1 INTRODUÇÃO

Hardware Livre Arduino. Givanaldo Rocha de Souza

Kit Teclado TS 4x4 v1..0 Manual do usuário

- Trabalho Prático de Algoritmos e Programação usando Robô Arduino -

Sistemas Embarcados:

PLATAFORMA PARA ESTUDO EM PROGRAMAÇÃO DE MICROCONTROLADORES FAMÍLIA 8051

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Introdução do Arduino para aquisição de dados e controle de instrumentos

FICHA DE COMPONENTE CURRICULAR

Tecnologias Digitais

ü Na década de 1920 os dispositivos mecânicos foram substituídos pelos relés; ü O uso da lógica de relés dificultava modificações do processo;

ROBOTOY: ferramenta para ensino de programação para crianças usando robôs Arduino. Aluna: Juliana Carolina Batista Orientadora: Joyce Martins

Lista de Exercícios sobre Conceitos de Informática. Exercício 1: Correspondência

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Organização de Computadores I

SISTEMA CNC APLICADO À CARACTERIZAÇÃO DE ACOPLAMENTO INDUTIVO

ARDUINO E RASPBERRY PI : UMA COMPARAÇÃO DE ESPECIFICAÇÕES E APLICAÇÕES DE MINICOMPUTADORES

- Tarefas Práticas de Programação usando Arduino - Imagem do Robô com Legendas

Flávia Rodrigues. Silves, 26 de Abril de 2010

Professor: M. Sc. Cristiano Mariotti

Manual do Usuário. VT ModBus Monitoração Remota de Retificador e Drenagem. Engenharia de Hardware. Engenharia de Produto D

Introdução. O que é o Arduino?

Organização e Arquitetura de Computadores I

Proposta de uma plataforma de monitoramento e acionamento remoto voltada para sistemas de hardware industriais utilizando LabVIEW

Arquitetura do Microcontrolador Atmega 328

Informática I. Aula 1. Objetivo da disciplina

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

Introdução à robótica

Robótica com Arduino Professor: Paulo Marcos Trentin

Introdução a Tecnologia da Informação

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO 9º PERÍODO. Profª Danielle Casillo

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Microcontroladores PROF. ME. HÉLIO ESPERIDIÃO

Minicurso de Arduino. Laboratório de Inovação em Sistemas em chip npiti - UFRN

Copyright 2014 VW Soluções

Família de Microcontroladores AVR

Capítulo 2 Livro do Mário Monteiro Componentes Representação das informações. Medidas de desempenho


Notas da Aula 14 - Fundamentos de Sistemas Operacionais

Lista de Exercícios sobre Conceitos de Informática. Exercício 1: Correspondência

Anatomia do Arduino Bootloader

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ CCET - Centro de Ciências Exatas e de Tecnologia Engenharia de Computação. Display POV

Plano de Aula. 1 o semestre. Aula número 012 Periféricos Comunicação Serial. Conhecer os princípios de comunicação serial

Plataforma Arduino, um universo de possibilidades

ERIK LEÃO JULIANA CECÍLIA GIPIELA CORRÊA DIAS LEONARDO COSTA EX - LADDER

O que você pode fazer com o Arduino

Programação do Arduino. Parte 1. IDE Wiring

DESENVOLVIMENTO DE PLATAFORMA DE INSTRUMENTAÇÃO UTILIZANDO ARDUÍNO

CENTRO UNIVERSITÁRIO DE BRASÍLIA

Extensão do Simulador SimuS com uso do Protocolo Firmata

AULA 1 INTRODUÇÃO AO JAVA

PROVA 03/07 Segunda-feira (semana que vem)

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Montagem do Robô. Especificações. domingo, 28 de agosto de 11

Arduino Básico: As versatilidades desta plataforma na prática

Revisão: Projeto e síntese de Circuitos Digitais em FPGA

Introdução ao Arduino

Controle a Distância de um Barco com Arduino+Bluetooth

NOÇÕES DE INFORMÁTICA

Comparação entre Arduino, FPGA, ASIC e SoC

Introdução aos computadores, à Internet e à World Wide Web. Prof. Marcelo Roberto Zorzan

Arquitetura e Organização de Computadores. Conjunto de Instruções da Arquitetura CompSim

Lista de Exercícios 1

Transcrição:

Controlando um Auto Modelo com um Programa Escrito em Java e o Hardware Arduino Elaine A. R. Pires 1, Elisângela A. R. 2, Ivan Luiz P. Pires 3 1 Instituto Federal de Mato Grosso Campus Juína (IFMT) Caixa Postal 255 78.320 000 Juína MT Brasil 2 Universidade Tecnológica Federal do Paraná Campus Curitiba (UTFPR) 3 Departamento de Computação Universidade Estadual de Mato Grosso (UNEMAT) Colíder, MT Brasil elaine.rocha@jna.ifmt.edu.br, eli_a_rocha@hotmail.com, ivanpires@unemat.br 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 1

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 é 2

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. Figura 1. Arduino Duemilanove (Fonte: (Arduino, 2016)) 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 3

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. Figura 2. Arquitetura do protótipo desenvolvido. 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. Figura 3. Frente e verso da placa de controle de rádio frequência 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 4

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. Figura 4. Placa Padrão 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, 5

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. Figura 5. Diagrama de Classe do Protótipo Desenvolvido. 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 6

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