• Nenhum resultado encontrado

SOFTWARES PARA CONTROLE DE ROBÔ CÂMERA

N/A
N/A
Protected

Academic year: 2021

Share "SOFTWARES PARA CONTROLE DE ROBÔ CÂMERA"

Copied!
5
0
0

Texto

(1)

SOFTWARES PARA CONTROLE DE ROBÔ CÂMERA

Phelipe Wesley de Oliveira

Carlos André Dias Bezerra

LABORATÓRIO DE PROTÓTIPOS EDUCACIONAIS E DE MECATRÔNICA – DEMP – CT - UFC phelipewesleydeoliveira@gmail.com

cadbufc@gmail.com

Resumo Este trabalho apresenta a programação de um

microcontrolador usado para controlar servomotores através da comunicação serial RS232, bem como a programação de um software em linguagem Java utilizado como interface que recebe a imagem de um robô câmera permitindo fotografar, salvar as imagens e controlar o deslocamento do robô.

Palavras Chaves: Robótica, Java, Servomotor, PIC.

Abstract: This paper presents programming a microcontroller

to control servomotors using RS232 serial communications to receive the commands and programming software in Java that receives the image of a camera robot can shoot and save the images and controls the displacement of the robot.

Keywords: Robotics, Java, Servomotor, PIC

1-INTRODUÇÂO

A utilização de robôs vem crescendo cada vez mais, seja para aumentar a produtividade ou para explorar locais perigosos para o ser humano. Para o controle desses robôs geralmente é utilizado um sistema computadorizado embarcado que é o responsável pelo processamento dos dados usados pelo robô, porém às vezes é necessário ou desejado um controle externo e um dispositivo de comunicação. Dentre os diversos tipos de robôs destacam-se os robôs de segurança e os de inspeção, que são capazes de navegar em ambientes diversos capturando imagens e enviando-as para uma unidade externa para análise e reconhecimento. O uso de microcontroladores e programação vêm sendo cada vez mais presente na robótica, seja para ser o cérebro do robô ou para permitir a interação com outros sistemas. Os microcontroladores da família PIC, fabricados pela Microchip Technology Incorporated, possuem grande quantidade de recursos, boa capacidade de processamento e preço razoável.

Neste trabalho será apresentada a metodologia para o desenvolvimento de um sistema de controle do deslocamento de um robô câmera acionado por dois servomotores, capaz de

fotografar e salvar imagens em uma unidade externa. O sistema de controle de deslocamento é composto pelo robô câmera, uma placa de controle para acionamentos dos servomotores utilizando um microcontrolador PIC e um software de controle. A linguagem escolhida para fazer a interface de controle foi Java que apresenta como características ser uma linguagem orientada a objetos e compilação de código fonte para uma máquina virtual, o que permite que o programa funcione em muitas plataformas diferentes. Neste projeto o PIC foi programado em C e usado para gerar a variação da largura dos pulsos PWM (Pulse Width Modulation), necessário para o controle dos servomotores e para permitir a comunicação com o programa de computador. Essas características e o fato de possuir muitas API, que facilitam o trabalho do programador, foram os motivos desta escolha. A figura 1 apresenta o robô que é controlado por esse sistema.

Figura 1: robô câmera

2-PLACA DE CONTROLE

A placa de controle controla os servomotores responsáveis pelo deslocamento do robô, no caso, dois servomotores Futaba S3003, sendo necessário o uso de um circuito do tipo PWM. O circuito de modulação por largura de pulso gera uma onda com frequência constante e com a largura do pulso variável. Alterando a largura do pulso altera-se o sentido de rotação dos

(2)

servomotores. A figura 2 mostra a variação de uma onda quadrada de um circuito PWM.

Figura 2: Variação de uma onda quadrada.

Para gerar esses pulsos foi criado um circuito eletrônico que possui como componentes básicos:

-um cristal de 20 Mhz para gerar a onda de referência para o controle de tempo;

-dois capacitores de 22 pF para filtragem;

-um botão para reiniciar o programa do caso seja necessário -um resistor de 2k2;

-um microcontrolador PIC 16F628a.

Um microcontrolador é um sistema computacional no qual estão incluídos internamente uma CPU, memória RAM, FLASH e EEPROM, pinos de I/O além de outros periféricos como osciladores, temporizadores, canais de comunicação, conversores A/D, entre outros, em um mesmo encapsulamento. No microcontrolador PIC escolhido têm-se os pinos especiais que podem ser usados para gerar os pulsos, porém estes são limitados em quantidade. Caso seja de interesse controlar muitos servomotores pode-se optar por gerar o PWM através de software. O programa foi feito de forma a gerar pulsos com a largura variando de acordo com o comando recebido pela porta serial, esses comandos são compostos de dois campos: letra identificando o servomotor (A, B, C etc) e um número de dois algarismos indicando o deslocamento desejado (02, 05, 15, 32 etc). Por exemplo: A05, B22 ou A27. Na figura 3 tem-se o protótipo da placa montado em uma matriz de contatos.

Figura 3 protótipo da placa de controle

Cada servomotor é conectado à placa controladora através de três fios: dois para alimentação (VCC e TERRA) e um para o controle, este é o que fornece a frequência para o controle do servomotor. Apesar da placa já ser o suficiente para o controle do robô, ela não pode ser usada em notebooks, já que estes não possuem porta serial nem paralela. Então foi desenvolvida outra placa com comunicação USB para assim permitir que o

robô possa ser controlado até mesmo por notebooks. Porém mudando a comunicação, o programa da interface de controle teria que ser mudado. Para evitar isso, utilizou um microcontrolador PIC da família 18, pois este possui pinos para comunicação USB, e foi utilizado o protocolo Communications Devices Class (CDC) na programação deste. O protocolo CDC é uma das formas mais simples de fazer a comunicação USB com microcontroladores PIC, ele emula uma porta COM RS-232 virtual através do canal USB 2.0 full speed. Dessa forma ainda foi possível controlar a placa utilizando a interface que foi criada para se comunicar pela porta serial. A figura 4 ilustra o funcionamento do protocolo CDC.

3- A INTERFACE DE CONTROLE EM JAVA

O projeto da interface de controle envolveu duas fases, a primeira consistiu na captura da imagem da câmera e a segunda na transmissão de dados pela porta serial. Antes de iniciar a apresentação do programa em si, primeiro serão mostrados os principais componentes usados na interface:

Botão de ação: componente para a interação com o usuário.

Slider de controle: controle deslizante que permite configurar o

valor que será enviado para a placa de controle.

Combobox: componente para escolha entre uma de suas

opções.

Campo de texto: componente para mostrar ou receber

informações.

Na construção do programa foram usadas API. Uma API é uma coleção de componentes de softwares que já vêm prontos e o programa só precisa usá-los. No Java a API é uma coleção muito grande de classes com as mais variadas utilidades. O uso

(3)

de API economiza o tempo do programador, já que ele não terá que criar tudo do zero.

Para a primeira fase do projeto foi utilizada a API JMF (Java Media Framework), ela é totalmente desenvolvida em Java e permite a manipulação de áudio, vídeo e outras mídias. Ao ser iniciado, o programa pede para o usuário escolher a câmera usada. Na figura 5 tem-se a tela para escolha.

Figura 5: tela de escolha.

Feito isso aparecerá a interface para o usuário, feita com os recursos da JMF, que possui o botão “iniciar” para iniciar a captura de imagens através da câmera. Essa imagem será enviada para o computador e no monitor aparecerá a imagem em um componente quadrado (Figura 8). Há também o botão “capturar” para capturar o frame em andamento e salvá-lo como uma imagem. O formato desta imagem é escolhido através de um combobox, o nome que o arquivo assumirá e o local onde será salvo é visualizado em campos de texto. O usuário poderá escolher o local onde deseja salvar a imagem capturada, bastando clicar no botão “...” que ativará uma tela de escolha, nesta poderá escolher o destino da imagem. A figura 6 mostra a tela de escolha.

Figura 6: tela de escolha do local

Na segunda parte do programa foi utilizada a API RXTX que é baseada na API Javacomm da própria Sun. A RXTX apresenta a vantagem de ser portável para muitas outras plataformas e usada para a comunicação tanto serial quanto paralela. O programa também possui uma área destinada para configuração da comunicação, nela escolhe-se a porta serial bem como outros atributos necessários através de comboboxs. Feita a configuração do programa, o mesmo estará apto a enviar os comandos, quando se deslocam os componentes Sliders. A tela do programa possui dois destes componentes Sliders, cada um

controla um servomotor diferente. Para evitar que o usuário tenha de ficar usando muito o mouse, foram criados também atalhos, representados por uma tecla do teclado, conforme relação abaixo:

Tecla I: inicia a captura de imagem da câmera. Tecla F: fotografa frame em andamento.

Tecla C: conecta o programa com a porta selecionada. Tecla D: desconecta o programa da porta selecionada. Tecla das setas: controlam o deslocamento dos servomotores. Como houve o uso de muitas API o programa demora um pouco para carregar, cerca de trinta segundos variando de computador para computador, para evitar que o usuário pensasse que aconteceu algum erro foi criada uma tela de carregamento que pode ser vista na figura 7.

Figura 7: tela de carregamento

A tela do programa que serve para o controle pode ser vista na figura 8.

Figura 8: tela do programa em Java.

O programa em si foi todo feito baseado em classes, que são os constituintes dos programas em Java. Elas incluem os métodos responsáveis por realizar as tarefas e retornar informações. As classes são responsáveis pela criação da interface gráfica, já foi apresentada acima, e pelo uso dos recursos das API que foram utilizadas. No programa foi utilizada a arquitetura MVC. A arquitetura MVC é usada em programação orientada a objetos e separa o programa em três camadas: modelo, vista e controlador. O modelo contém a lógica da programação em si, a vista é a parte do programa que faz a interface gráfica para o usuário e o controlador é o responsável de comunicar o modelo com a vista, unindo assim a lógica com a interface do usuário. Essa técnica de programação facilita a manutenção do programa e caso seja de interesse fazer modificações na interface gráfica não será necessário escrever novamente todo o código do programa, já que a camada da lógica não é a mesma camada da interface.

(4)

Neste trabalho, o modelo controla as classes responsáveis pela comunicação serial e também é responsável pelas funções de acionamento da câmera. Ao ser iniciado, o modelo procura as portas seriais que existem no computador, as transmite para o controlador e este as repassa para a vista, que as mostra para o usuário através de um combobox. Tendo recebido os dados, a vista é ativada e fica esperando o acionamento de eventos pelo usuário ou informações enviadas pelo modelo. A parti daí fica no controle do usuário com qual porta ele quer se comunicar, quando irá ativar a câmera e quanto deslocará os servomotores. As classes usadas e seus respectivos métodos podem ser visto na figura 9, ao final do trabalho.

4- CONCLUSÃO

O controle de robôs envolve cada vez mais programação e interfaces gráfica agradáveis e confiáveis. Neste trabalho foi mostrado a utilização bem sucedida das linguagens C e Java na programação para controlar um robô do tipo câmera, uma no sistema embarcado e a outra na interface homem máquina, no computador. Foi mostrado também que mesmo sendo uma linguagem interpretada o Java pode ser usado para criar interfaces gráficas para uso em robótica. O programa usado no microcontrolador da placa controladora foi desenvolvido para controlar os atuadores (dois servomotores) através da variação da largura da onda quadrada (PWM), usando poucos comandos de fácil entendimento para iniciantes em robótica. Esta interface também pode ser usada para controlar e monitorar outras câmeras com dois atuadores. Como melhorias é possível fazer com que o robô possa ser controlado via internet, fazendo com que se possa receber as imagens em qualquer lugar.

REFERÊNCIA BIBLIOGRÁFICA

DEITEL, H. M.; DEITEL, P. J. Java : como programar, Editora Deitel, 6a. edição, 2005.

Sandro jucá, Apostila de microcontroladores Pic e periféricos. George Leite Junior, Framework Java para manipulação de

mídias parte 1, 2005.

George Leite Junior, Framework Java para manipulação de mídias parte 2, 2005.

Fábio Pereira, Microcontroladores PIC Programacao em C, Editora Érica Ltda, 2a. edição, 2003.

Alcione, P.O.; Vinícius, V.M.; Java na Prática, 2002.

Microchip Technology Incorporated, Data Sheet PIC16F627A/628A/648A, 2004.

Microchip Technology Incorporated, Data Sheet PIC18F2455/2550/4455/4550, 2004.

(5)

Referências

Documentos relacionados

As ferramentas para retirada do lacre tipo "porca louca" e instalação dos tipos "abraçadeira" e "metálico com fecho plástico" devem ser fornecidas em

À Divisão de Higiene Pública Veterinária cabe: Promover e assegurar as acções de higiene pública veterinária, tendo em vista a genuinidade e salubridade dos produtos de

Art. 5º Este Decreto entra em vigor na data de sua publicação. Em seguida, remetam-se os autos à Secretaria de Estado do Desenvolvimento Econômico e Turismo – SEDETUR para

Portanto, é complicado o controle da morfologia dos filmes utilizando esta técnica, considerando que para a obtenção de eletrólitos de SOFCs, estes devem ter características

Até aqui você trabalhou num programa que objetivou a obtenção do Macho. Será praticamente um clone do Macho Inicial que graças a homozigose será de " linhagem pura " para

As pontas de contato retas e retificadas em paralelo ajustam o micrômetro mais rápida e precisamente do que as pontas de contato esféricas encontradas em micrômetros disponíveis

I. Implantação e manutenção de Cursos de Licenciaturas específicas para formação de professores indígenas em nível superior. Iniciativas institucionais que visem a implantação

Objetivo: Garantir estimativas mais realistas e precisas para o projeto, ao considerar nesta estimativa o esforço necessário (em horas ou percentual do projeto) para