Anda di halaman 1dari 59

CENTRO UNIVERSITRIO ADVENTISTA DE SO PAULO

ENGENHEIRO COELHO

WAGNER ROCHA BARROS

SISTEMA DE AUTOMAO VEICULAR COM ARDUINO E ANDROID

ENGENHEIRO COELHO
2012

WAGNER ROCHA BARROS

SISTEMA DE AUTOMAO VEICULAR COM ARDUINO E ANDROID

Trabalho de Concluso de Curso do Centro


Universitrio Adventista de So Paulo do curso
de Tecnlogo em Sistemas para Internet, sob
orientao do Prof. Me.Thales de Trsis Cezare.

ENGENHEIRO COELHO
2012

Trabalho de Concluso de Curso do Centro Universitrio Adventista de So Paulo, do curso


de Tecnlogo em Sistemas para Internet apresentado e aprovado em 18 de Junho de 2012.

_________________________________________________
Prof. Me.Thales de Trsis Cezare

_________________________________________________
Prof. Me. Peterson Peixoto dos Santos

_________________________________________________
Prof. Me. Mateus dos Santos

Dedico esse trabalho primeiramente a Deus que


me deu a capacitao e a fora necessria,
agradeo tambm aos meus pais pelo incentivo
e amor. Dedico tambm aos meus professores
em especial ao professor Thales pelo apoio e
dedicao. Dedico ainda aos meus amigos por
me animarem e encorajarem na concluso
desse trabalho

AGRADECIMENTOS

A Deus em primeiro lugar pelo dom da vida e por me conduzir sempre em caminhos
de paz mesmo nos momentos mais difceis, nunca me abandonou cuidando dos
menores detalhes da minha existncia .
Aos meus pais Francisco e Maria pela educao, cuidado e dedicao de me ensinar o
caminho da verdade. O enorme sacrifcio pra poder me acompanha nesse momento
to importante.
Ao Unasp Campus Engenheiro Coelho pela privilegio de aqui estudar, sou
extremamente agradecido pelo apoio e base para construo de um sonho.
A todo corpo docente pelo conhecimento passado nesses trs anos de convivncia
que vo marcar minha vida pra sempre. Em especial quero agradecer pelo carinho,
empenho e dedicao do meu orientador o professor Thales de Trsis Cezare.
Aos meus amigos que sempre me encorajaram durante a jornada de projeto e
excluso desse trabalho.

Nossa tecnologia passou a frente de nosso


entendimento,

nossa

inteligncia

desenvolveu-se mais do que a nossa sabedoria.


Roger Revelle

RESUMO

Este trabalho descreve o projeto e implementao de uma plataforma de controle


construda em mdulos, possibilitando ao usurio escolher quais funes do veiculo se
deseja automatizar utilizando assim hardwares Open Source onde os conceitos de
automao sero aplicados. O projeto prope o controle de um veculo de passeio utilizando
um celular SmartPhone com sistema operacional Android, efetuando os controles
relacionados a partida do motor, abertura de portas e cap. A novidade dessa abordagem
o uso de um servidor socket desenvolvido em linguagem de programao Java e o hardware
de controle dos atuadores Open Source. O sistema de gerenciamento dos atuadores foi
desenvolvido utilizando o microcontrolador Atmel 2560 e a linguagem de programao C
para a programao dos cdigos possibilitando assim a automao das aes desejadas no
automvel. A aplicao cliente utilizada no celular foi desenvolvida no ambiente de
programao Eclipse com framework Android. Utilizando a linguagem de programao Java
para codificao das classes. A comunicao entre o sistema de gerenciamento dos
atuadores do veculo, intermediado pelo servidor socket, e o sistema de controle do celular
SmartPhone a aplicao cliente foi utilizado a rede de acesso a internet de alta velocidade
3G e o protocolo TCP para troca de mensagens entre a aplicao cliente e o sistemas de
gerenciamento dos atuadores. Esta abordagem abre uma grande variedade e possibilidades
de utilizao deste projeto para outras reas da automao.
Este projeto torna possvel o controle das principais funes de um veculo automotor de
passeio, possibilitando assim uma maior segurana e conforto ao usurio permitindo-o
desligar o veculo remotamente em caso de emergncia.

Palavras Chave: Automao veicular; Android; Arduino.

ABSTRACT

This paper describes the design and implementation of a control platform built in modules,
enabling the user to choose which functions of the vehicle so if you want to automate using Open
Source hardware where automation concepts will be applied. The project proposes the control of a
passenger vehicle using a mobile Smartphone with Android operating system, making the controls
related to starting the engine, opening doors and hood. The novelty of this approach is the use of a
socket server developed in Java programming language and hardware control actuators Open
Source. The management system of the actuator was developed using the Atmel 2560
microcontroller and C programming language for programming codes thus enabling the automation
of desired actions in the car. The client application used in the cell was developed in the
programming environment Eclipse with Android framework. Using the Java programming language
for encoding classes. Communication between the management system of the vehicle actuators,
brokered by the socket server, and control system SmartPhone mobile client application was used to
access network high-speed 3G Internet and the TCP for exchanging messages between the client
application management systems and actuators. This approach opens a wide variety and possibilities
to use this project to other areas of automation.
This design makes it possible to control the main functions of a motor vehicle drive, allowing for
greater security and comfort to the user allowing you to remotely turn off the vehicle in an
emergency.

Keywords: Automation vehicle; Android; Arduino.

LISTA DE ILUSTRAES
Figura 1 - Partes tcnicas do microcontrolador Arduino Mega 2560. .................................................21
Figura 2 - Ambiente de desenvolvimento Arduino 0022. ...................................................................24
Figura 3 - Arquitetura Android. .........................................................................................................27
Figura 4 - Plataforma de desenvolvimento Eclipse com plug-in Android. ...........................................28
Figura 5 - Arquitetura simplificada da plataforma eclipse. .................................................................29
Figura 6 - Emulador Andoid. ..............................................................................................................30
Figura 7 - Arduino Atmega 2560. .......................................................................................................32
Figura 8 - Diagrama de bloco do sistema proposto. ...........................................................................38
Figura 9 - Arquitetura conceitual do mdulo de controle e automao. ............................................39
Figura 10 - Diagrama de classe Mdulo Cliente. ................................................................................41
Figura 11 - Telas Emulador e Conexo com Servidor. .........................................................................42
Figura 12 - Layout mdulo cliente. ....................................................................................................42
Figura 13 - Diagrama de classe modulo servidor. ...............................................................................43

LISTA DE ABREVIATURAS E SIGLAS

SiAV Sistema de Automao Veicular


SWT Standard Widget Toolkit
IDE Ambiente Integrado de Desenvolvimento
PHP Personal Home Page linguagem interpretada livre
ABS Anti Block System Sistema anti bloqueio
ESP Eletronic Stability Program Programa eletrnico de estabilidade
INRIA Intitut National de Recherche en Informatique et en Automatique Instituto de
pesquisas em informtica e automao
DARPA Defense Advanced Research Projects Agency Agncia da defesa em projetos de
pesquisa avanada.
MCU Movimento Circular Uniforme
ICSP In Circuit Serial Programming
VIN Vehicle Identification Number
FTDI Future Technology Devices International
GND Graduated Neutral Density Filter Filtro Graduado de Densidade Neutra
RAM Random Access Memory Memria de acesso
EPROM - Erasable Programmable Only Memory Memria programvel apagvel.

SUMRIO

1 INTRODUO ................................................................................................................................12
1.1 Fundamentos Tecnolgicos ....................................................................................................13
1.2 Tecnologia Aplicada a Automao Veicular ............................................................................15
1.2.1 Aspectos Gerais das Tecnologias Aplicadas a Sistemas de Automao Veicular ..............15
1.2.2 Sistemas Inteligentes Veiculares ......................................................................................16
1.3 Sistema de Automao Veicular .............................................................................................18
1.3.1 Sistema de Apoio ao Motorista ........................................................................................19
1.3.2 Sistemas Veiculares Robticos .........................................................................................19
1.4 Hardware Arduino e Seus Conceitos .......................................................................................20
1.4.1 Aspectos do Arduino ........................................................................................................20
1.4.2 Funcionamento do Arduino .............................................................................................21
1.4.3 Especificaes tcnicas do Arduino ..................................................................................22
1.5 Ambiente de Desenvolvimento e seus Conceitos ...................................................................23
1.5.1 Plataforma de desenvolvimento Arduino ........................................................................24
1.5.2 Plataforma de desenvolvimento Android ........................................................................26
1.5.2.1 Estrutura geral da plataforma ....................................................................................26
1.5.2.2 Arquitetura ................................................................................................................27
1.5.2.3 Bibliotecas .................................................................................................................27
1.5.3 Plataforma de desenvolvimento Eclipse ..........................................................................28
1.5.3.1 Arquitetura Eclipse ....................................................................................................29
1.5.3.2 Emulador Android ......................................................................................................30
1.6 Caracterizao do Problema ...................................................................................................31
1.7 Projeto SiAV............................................................................................................................31
1.8 Motivao deste Trabalho ......................................................................................................32
1.9 Justificativa .............................................................................................................................33
2 OBJETIVOS .....................................................................................................................................35
2.1 Objetivos Gerais .....................................................................................................................35
2.2 Objetivos especficos ..............................................................................................................35
3 METODOLOGIA ..............................................................................................................................36
4 SISTEMA DE AUTOMAO VEICULAR COM ARDUINO E ANDROID - Desenvolvimento .................37
4.1 Arquitetura do Sistema...........................................................................................................37

4.1.1 Arquitetura na primeira fase do projeto SiAV ..................................................................37


4.1.2 Arquitetura na segunda fase do projeto SiAV ..................................................................38
4.2 Aspectos Gerais Desenvolvimento do Software de Controle ..................................................40
4.2.1 Mdulo controlador cliente .............................................................................................40
4.2.1.1 Diagrama de classe do Mdulo Cliente.......................................................................40
4.2.1.2 Layout do mdulo cliente...........................................................................................41
4.2.2 Modulo controlador servidor ...........................................................................................42
4.2.2.1 Diagrama de classe do Modulo Servidor.....................................................................43
5 CONCLUSO ..................................................................................................................................44
5.1 Trabalhos futuros ...................................................................................................................44
6 REFERNCIAS .................................................................................................................................45
APNDICES .......................................................................................................................................49

12

1 INTRODUO

Atualmente, os sistemas autnomos so utilizados em diferentes reas da tecnologia


e varias aplicaes utilizam microcontrolador que cada vez mais so exigidos a atender as
crescentes evolues e necessidades de desempenho, baixo custo, tempo de ciclo e
dispositivos cada vez menores. Um sistema autnomo pode ser caracterizado por sua
capacidade de execuo das tarefas para as quais foi projetado, sem a interferncia de
qualquer controle externo (Baltes J. e Lin Y. Lin, 1999).
O sistema embarcado vem ganhando espao com o aumento da tecnologia e vrias
aplicaes vm sendo desenvolvidas ao redor do mundo, os dispositivos mveis vem
ganhando destaque pela integrao com os sistemas embarcados, essa nova integrao traz
grandes avanos no desenvolvimento possibilitando assim a criao de sistemas integrados
cada vez mais inteligentes e possibilitando ao usurio interagir com ele.
Junto evoluo dos microcontrolador veio a miniaturizao dos dispositivos mveis
que faz parte da quinta gerao dos computadores, os chamados computadores invisveis,
como exemplo, os Smartphones que so mquinas completas de propsito geral e que j
contam com sistemas operacionais baseados em softwares livres.
O advento dos sistemas operacionais de cdigo livre trouxe grande flexibilidade no
desenvolvimento de sistemas, possibilitando a criao de software de qualidade atendendo
uma vertente importante no desenvolvimento de baixo custo, como exemplo: Linux e
Android. Simultaneamente surgiu tambm a ideia de criao de hardwares Open Source para
uma maior interao com o desenvolvimento de sistemas autmatos utilizando, por
exemplo, o microprocessador Atmega 2560 montado em uma plataforma Arduino.
Utilizando de tcnicas cada vez mais elaboradas para o desenvolvimento de sistemas
e a grande complexidade dos atuais sistemas de automao veicular envolvendo dispositivos
mecnicos, eletrnicos e sistemas computacionais, estimulam a introduo de novas
metodologias de projeto. Um ponto importante que as metodologias de desenvolvimento
exigem um nvel de abstrao alto para elaborao, verificao e validao do sistema
proposto.
Este trabalho descreve um sistema de controle e automao veicular baseado em
tcnicas de arquitetura de software e hardware Open Source. Desta maneira foi definido um
fluxo de projeto que permite um alto nvel de abstrao para validao do sistema. O

13

sistema proposto composto de um controlador (desenvolvido com hardware Open Source)


e diversos atuadores, interfaces, sensores e etc. Tendo como objetivo a construo da base
de controle do veculo. Para o projeto de automao veicular o sistema foi projetado e
implementado utilizando tcnicas e tecnologias que esto ganhando cada vez mais
visibilidade internacional.
A implementao do sistema de controle e automao foi desenvolvida em etapas
diferentes durante sua elaborao que so descritas neste trabalho. Inicialmente, foi
projetado o sistema de controle e automao, utilizando os conceitos de microcontrolador
embarcado para o controle dos atuadores instalados no veculo. A segunda etapa consistiu
no desenvolvimento do ambiente de interao com o usurio, utilizando-se de um celular
SmartPhone com sistema operacional android.

1.1 Fundamentos Tecnolgicos

Inicialmente, descreve-se um breve histrico dos sistemas de automao veicular,


enfatizando a evoluo e a incorporao de sistemas automatizados. Tambm so
abordadas as principais tecnologias aplicadas a veculos de passeio a evoluo dos sistemas
e os conceitos que revolucionaram a forma de dirigir um veculo possibilitando novos
patamares de segurana, conforto e economia.
As pesquisas em automao veicular abriram as portas para o surgimento de
sistemas que auxiliam o motorista na execuo de tarefas pr-estabelecidas e no
gerenciamento de funes especficas ou gerais como: manter a velocidade do veculo,
manter a distncia do veculo a sua frente, controle de funes do veculo ou at mesmo o
monitoramento da temperatura no interior do veculo.
Com o avano das tecnologias relacionadas aos veculos automatizados, surgiram
novos paradigmas na rea de sistemas veiculares robotizados. Estes sistemas ganham
espao em aplicaes industriais (e.g. carga e descarga) e, em aplicaes urbanas
objetivando cada vez mais isentar as pessoas de executarem tarefas repetitivas e/ou
desgastantes.
Por outro lado, os sistemas de automao veicular objetivam o aumento de
segurana, pois com o desenvolvimento desses sistemas no haveria mais excesso de
velocidade, ultrapassagens perigosas, roubo de veculos poderiam ser minimizados com um

14

sistema automatizado de controle do veculo, desenvolvimento de sistemas de vigilncia e


acionamento via satlite. Com o surgimento de novas tecnologias e o avano das linguagens
de programao tornou possvel o desenvolvimento de sistemas cada vez mais seguros e
confiveis.
O ambiente de programao eclipse para o desenvolvimento de cdigos na
linguagem de programao Java foi iniciado na IBM desenvolvendo a primeira verso do
produto e fazendo a doao deste para a comunidade Open Source. Possui forte orientao
ao desenvolvimento baseado em plug-ins. Possibilitando assim um amplo suporte ao
desenvolvedor com centenas de plug-ins que procuram atender as diferentes necessidades
dos programadores.
Utilizando a IDE Eclipse com plug-ins pode-se desenvolver no s em Java, mas
tambm em C, C++, PHP e Python.
Juntamente com o desenvolvimento dos sistemas veiculares automatizados o
surgimento de novas tecnologias de sistemas embarcados tem se mostrado necessrio para
dar suporte as necessidades cada vez mais pujantes. A quantidade de eletrnica embarcada
nos veculos, atualmente, j est na casa de centenas no caso de veculos mais luxuosos.
Visando este crescimento as indstrias de desenvolvimento de sistemas eletrnicos
para aplicaes veiculares esto investindo na pesquisa de novas metodologias para o
controle dos sistemas veiculares embarcados. Nessa dinmica a computao reconfigurvel
vem se mostrando uma tecnologia interessante. O projeto Arduino iniciou-se na cidade de
Ivrea, Itlia, em 2005, com o intuito de interagir em projetos escolares de forma a ter um
oramento menor que outros sistemas de prototipagem disponveis naquela poca. Seu
sucesso foi sinalizado com o recebimento de uma meno honrosa na categoria
Comunidades Digitais em 2006, pela Prix Ars Electronica, alm da marca de mais de 50.000
placas vendidas at outubro de 2008.
Atualmente, o hardware feito atravs de um microcontrolador Atmel AVR, que
pode ser estendido se necessrio for para implementao do projeto. A flexibilidade e
reconfigurabilidade do hardware tem se mostrado competitiva em termos de custo do chip e
do seu ciclo de projeto.
Na seo seguinte so abordados os conceitos tecnolgicos aplicados no
desenvolvimento do sistema de controle e automaes de um veculo de passeio Estes

15

conceitos esto relacionadas com a aplicao de Sistemas Reconfigurveis para o projeto de


Sistemas de Automao Veicular.

1.2 Tecnologia Aplicada a Automao Veicular

Dentro dos conceitos relacionados automao veicular so descritas as tecnologias


aplicadas aos veculos de passeio seus conceitos e o estado da arte em sistemas inteligentes
para o controle veicular.

1.2.1 Aspectos Gerais das Tecnologias Aplicadas a Sistemas de Automao Veicular

A automao veicular, alm de proporcionar ao motorista segurana em situaes


crticas, pode tambm auxili-lo dando-lhe informaes necessrias para que possa executar
manobras, ou mesmo automatizar alguma das tarefas relacionadas dirigibilidade. A
indstria automotiva tem investido nesta rea visando aumentar o conforto, segurana,
estabilidade e rendimento dos veculos, utilizando-se de sistemas embarcados que
controlam a ao de frenagem ABS Anti-lock-Breaking-System (Kelber, 2003a), estabilidade
do veculo ESP Eletronic Stability Program (Kelber, 2003a), controle da velocidade, controle
da autonomia, controle do consumo mdio de combustvel, controle de temperatura.
Com o aumento das necessidades de tornar os veculos mais inteligentes, solues
computacionais tornaram-se cada vez mais comuns. Em diversos pases os motoristas
podem contar com computadores que possuem os mapas das ruas da cidade e recebem
informaes sobre as condies de trnsito escolhendo para o motorista o melhor trajeto.
As tecnologias atualmente desenvolvidas apresentam em sua maioria um grande
conjunto de sensores, transdutores, atuadores, sistemas de comunicao modernos, que
possibilitam a estes veculos cada vez mais executar tarefas mais complexas de forma
segura. Para dotar estes veculos de comportamentos inteligentes so incorporados
componentes de percepo garantindo maiores nveis de autonomia e robustez.
Cada vez mais os projetos de veculos inteligentes esto incorporando tecnologias de
desenvolvimento de robs autnomos, estudos da cinemtica (Dudek G. and Jenkin M.,
2000), comunicao, controle e inteligncia para execuo de tarefas.

16

A concepo de um veculo com graus de autonomia uma ideia que vem sendo
explorada e estudada por todo o mundo. A automao veicular, mesmo em seus diferentes
nveis, proporciona aos motoristas e ocupantes, maior segurana em condies adversas.
Auxilia na conduo do veculo executando tarefas de forma automatizadas, como por
exemplo: manter o veculo na pista dentro da faixa correta, manter a distncia dos veculos a
sua frente, controlar a velocidade do veculo conforme o trnsito ou achar o caminho mais
curto e seguro para se chegar ao destino (Kelber C. R, et al., 2005).
Em 1997, o I.N.R.IA Institut National de Recherche en Informatique et en
Automatique apresentou ao pblico um veculo de fabricao em srie, chamado de CyCab,
com diversos modos de movimentao automatizados (Baille, Grard et all., 1999). O CyCab
j est sendo produzido pela empresa Robosoft, que j apresenta inclusive outros modelos,
com o RoBUCAB, o RobuRIDE e o RoBUCAR (Robosoft, 2003).
Em 2003, a Toyota lanou, no Japo, o Prius, um modelo de veculo com capacidade
de efetuar manobras de estacionamento autonomamente (Self-parking, 2003).
Em outubro de 2005, quatro veculos conseguiram completar o percurso da
competio promovida pelo DARPA Defense Advanced Research Projects Agency, o DARPA
Grad Chalenge Race. 132 milhas (aproximadamente 212 km) foram percorridas pelo deserto
de Nevada, nos Estados Unidos da Amrica, de maneira completamente autnoma (CNN (a),
2005).

1.2.2 Sistemas Inteligentes Veiculares

Um ponto importante a introduo de sistemas inteligentes na indstria


automobilstica, neste caso, na literatura o termo Sistema Inteligente mais aplicado na
introduo de novas tecnologias (eletrnica embarcada, sistema micro processados, etc.)
para viabilizar tcnicas que aumentem a segurana, conforto e aspectos ambientais.
Nas ltimas dcadas os veculos de passeio tm deixado de serem mquinas
essencialmente mecnicas e incorporado cada vez mais sistemas eletrnicos de controle e
acionamentos controlveis usando informaes desse sistema. A princpio foi uma simples
substituio do sistema de ignio com platinado pela Ignio Eletrnica. O desenvolvimento
dos sistemas de ignio eletrnica ocorreu simultaneamente com os sistemas de injeo
eletrnica.

17

Atualmente, veculos apresentados como carro conceito, dispem de sistemas


completos totalmente drive-by-wire. Exemplos destes so o Pivo, da Nissan (CNN (b), 2005) e
o PM da Toyota (Toyota, 2006).
Com o surgimento e a popularizao cada vez maior dos conceitos de sistemas
eletrnicos embarcados aplicados aos veculos de passeio, o mercado mundial responde
cada vez mais de forma positiva, dando suporte para o desenvolvimento de novas tcnicas e
a realizao de projetos e conceitos.
Com o crescimento das pesquisas na rea de aplicao e projetos de sistemas surgem
novas necessidades tecnolgicas para aumentar a segurana e o conforto do motorista e
ocupante. Os projetos de sistemas inteligentes embarcados nos veculos vm contribuindo
para o desenvolvimento de vrios ramos, tecnolgico, acadmicos e de mercado. Segundo
(Kelber C. R, et all., 2005), um dos motivos principais do surgimento de carros inteligentes
propiciar ao motorista maior segurana e conforto em condies adversas.
Os conceitos mais aplicados nos sistemas inteligentes embarcados nos veculos
de passeio so:

ABS Anti-lock-Breaking-System;

BAS Breaking-Assistant;

ESP Electronic Stability Program;

TCS Traction Control System;

by-Wire;

Cruise Control;

Lane keeping Assistance;

Parking Assistance.

Estes sistemas foram desenvolvidos com o objetivo de proporcionar ao motorista


maior segurana em condies crticas ou auxiliado na execuo de tarefas relacionadas a
conduo do veculo. Cada dia os veculos inteligentes somam as novas tecnologias
formando assim uma plataforma embarcada mais complexa. Para gerenciar todos estes
sistemas esto sendo aplicados conceitos estruturais, o que tem dado aos projetistas destes
sistemas novas direes para projetar sistemas modulares responsveis por controlar aes
do veculo.

18

Acompanhando esta tendncia, este trabalho possui uma arquitetura modular onde
cada um dos mdulos responsvel por aes sendo os mdulos subdivididos em blocos
formando uma arquitetura distribuda. Estas tecnologias tm apresentado bons resultados,
no projeto Autonomies Fahren, (Becker, 1998), (Simon, 1999), (Snitz, 1999), (Simon, 2000) e
(Snitz, 2001).

1.3 Sistema de Automao Veicular

Nos ltimos anos as pesquisas focadas na rea de veculos inteligentes tm gerado


conceitos que esto revolucionando o mundo no que se diz respeito a transporte pessoal. As
linhas de pesquisas so as mais diversas possveis, mas em comum, focam pontos como
segurana, conforto, cuidados ambientais e adaptabilidade para diferentes circunstncias
(por exemplo, solues veiculares voltadas para deficientes).
Por outro lado, os novos desenvolvimentos buscam cada vez mais substituir as
solues mecnicas por solues eletromecnicas (Kelber, 2003a). Nesta seo sero
estudados os diferentes sistemas de automao veicular. Do ponto de vista dos objetivos e
das tcnicas aplicadas, os sistemas de automao veicular podem ser divididos em: Sistemas
de Apoio ao Motorista e Sistemas Veiculares Robticos.
No primeiro caso, as tcnicas tm como objetivo auxiliar o motorista na execuo de
tarefas determinadas melhorando o desempenho do usurio e a segurana. No segundo
caso, trata-se de resolver o problema conhecido na literatura como Hands-free Vehicle
Driving (Giove D, 2004).
No caso do sistema envolver todos os controles parciais do veculo o termo usado na
literatura Automated Highway System (AHS) (Han_Shue, et al., 1999).

19

1.3.1 Sistema de Apoio ao Motorista

Os sistemas de apoio ao motorista surgiram na dcada de 80 com o intuito de


proporcionar maior conforto e segurana ao motorista e os passageiros. So classificados em
dois grandes grupos: sistemas passivos e sistemas ativos (Kelber C. R, et al., 2005).
No sistema passivo a eletrnica identifica os sinais das variveis que indicam um
cenrio e alerta o motorista, que toma as devidas providncias com a finalidade de
contornar a situao.
J no caso do sistema ativo ele funciona como um copiloto eletrnico e em casos
de situaes perigosas ele atua diretamente sobre as variveis para efetuar a correo
necessria para auxiliar o piloto a contornar o problema. O princpio deste sistema nunca
tira do motorista o controle do veculo, ou seja, mantm a responsabilidade do condutor
atuando como auxiliar em situaes de perigo.
Os sistemas de identificao de obstculos podem ser aplicados em veculos de
pequeno e grande porte. Um sistema muito til para a segurana dos motoristas e
passageiros em condies de pouca visibilidade ou de cochilo do motorista o Sistema de
Aviso do Abandono de Pista. Fontes de estudo das causas dos acidentes apresentam um
elevado nmero de acidentes causados por motivos relacionados a perda de controle da
direo do veculo pelo abandono da pista (Kelber, 2003a).
Outro sistema muito utilizado atualmente com a popularizao cada vez maior dos
GPS Global Positioning System so os de navegao. Baseados em mapas digitais das
regies estes sistemas funcionam como um guia instantneo para o motorista auxiliando na
definio das rotas a serem percorridas para alcanar seu destino. Atualmente, muitos
destes sistemas esto ligados a sistemas mais complexos, o que possibilita ao motorista
obter informaes das condies de trnsito, se o combustvel que est no tanque
suficiente para chegar at o destino, e oferece rotas alternativas mais rpidas e seguras
(Kelber, 2003a).

1.3.2 Sistemas Veiculares Robticos

Recentemente surgiram os robs mveis destacando-se por sua mobilidade guiada,


semiautnoma ou totalmente autnoma. A tecnologia dos robs mveis tornou-se grande

20

foco de pesquisa sendo difundida em diferentes reas e em diversas aplicaes (e.g.


explorao de ambiente hostil). Pesquisas tambm tem se intensificado na aplicao dos
conceitos da robtica mvel em veculos de passeio.
Dentre os projetos que tem se destacado esto os participantes do Grand DARPA
Challenge 2004 Autonomous Ground Vehicles, este evento vem ocorrendo anualmente e
tem como objetivo vencer uma distncia de 300 quilmetros de forma completamente
autnoma, a equipe vencedora recebe um prmio de 1 milho de dlares.
O setor de carga, descarga e transporte tem se destacado nos investimentos de apoio
ao motorista. Projetos de carregadeiras, empilhadeiras autnomas foram desenvolvidos
pelas empresas FOX GmbH e Goetting KG.

1.4 Hardware Arduino e Seus Conceitos

Nesta seo so apresentados a descrio da configurao do hardware, as


ferramentas utilizadas e os conceitos aplicados para se configurar um microcontrolador
embarcado em lgica reconfigurvel. Tambm apresentada a descrio do software
desenvolvido, seu funcionamento no controle de cada um dos mdulos e suas variveis.
Adicionalmente, so apresentados os resultados do desenvolvimento do hardware de
controle, a ocupao dos recursos lgicos do Arduino e seu desempenho.
A configurao do Hardware de controle representa uma das etapas primordiais
desse trabalho e objetiva o projeto e implementao de um sistema para o controle e
automao do veculo que atenda as necessidades de segurana e os objetivos definidos
para o controle do veculo dentro das especificaes do projeto SiAV.

1.4.1 Aspectos do Arduino

O Arduino faz parte do conceito de hardware e Open Source e est aberto para uso e
contribuio de toda sociedade. O conceito Arduino surgiu na Itlia em 2005 com o objetivo
de criar um dispositivo para o controle de projetos construdos de uma forma menos
dispendiosa do que outros sistemas disponveis no mercado.
Arduino uma plataforma de computao fsica (so sistemas digitais ligados a
sensores e atuadores, que permitem construir sistemas que percebam a realidade e

21

respondam com aes fsicas), baseada em uma simples placa de Entrada/Sada micro
controlada e desenvolvida sobre uma biblioteca que simplifica a escrita da programao em
C/C++. O Arduino pode ser usado para desenvolver artefatos interativos stand-alone ou
conectados ao computador atravs do Adobe Flash, Processing, Max/MSP, Pure Data ou
SuperCollider.
Um microcontrolador (tambm denominado MCU) um computador em um chip,
que contem processador, memria e perifricos de entrada/sada. um microprocessador
que pode ser programado para funes especficas, em contraste com outros
microcontrolador de propsito geral (como os utilizados nos PCs). Eles so embarcados no
interior de algum outro dispositivo, no nosso caso o Arduino, para que possam controlar
suas funes ou aes (Silva l. a, 2010).

1.4.2 Funcionamento do Arduino

O Arduino Mega 2560 uma placa de microcontrolador baseada no ATmega2560


(datasheet). Ele possui 54 pinos de entradas/sadas digitais, 16 entradas analgicas, 4 UARTs
(portas seriais de hardware), um oscilador de cristal de 16 MHz, uma conexo USB, uma
entrada de alimentao, uma conexo ICSP e um boto de reset.

Figura 1 - Partes tcnicas do microcontrolador Arduino Mega 2560.

22

1.4.3 Especificaes tcnicas do Arduino

Tabela 1 - Especificaes tcnicas do ATmega2560.


Micro controlado

ATmega2560

Tenso de operao

5V

Tenso de entrada (recomendada)

7-12V

Tenso de entrada (limites)

6-20V

Pinos de entrada e sada (I/O) digitais

54 (dos quais 14 podem ser sadas PWM)

Pinos de entradas analgicas

16

Corrente DC por pino I/O

40mA

Corrente DC para pino de 3,3V

50mA

Memria Flash

256KB (dos quais 8KB so usados para o bootloader)

SRAM

8KB

EEPROM

4KB

Velocidade de Clock

16MHz

A Tabela 1 demostra as principais especificaes do hardware embarcado Arduino.

Memria flash: capaz de preservar os dados armazenados por um longo tempo sem
a presena de corrente eltrica;

EEPROM: memria no voltil, pode ser programada e apagada vrias vezes,


eletricamente;

SRAM: memria de acesso aleatrio que mantm os dados armazenados desde que
seja mantida sua alimentao;

Shields: so placas de circuito impresso com uma funo especfica.

A placa pode operar com alimentao externa entre 6 e 20 volts. No entanto, se


menos de 7 volts forem fornecidos o pino de 5V pode fornecer menos de 5 volts e a placa
pode ficar instvel. Com mais de 12V o regulador de voltagem pode superaquecer e danificar
a placa. A faixa recomendvel de 7 a 12 volts.
Os pinos de alimentao so os seguintes:

23

VIN. Relacionado entrada de voltagem da placa Arduino quando se est usando


alimentao externa (em oposio aos 5 volts fornecidos pela conexo USB ou outra
fonte de alimentao regulada). possvel fornecer alimentao atravs deste pino
ou acess-la se estiver alimentando pelo conector de alimentao;

5V. Fornecimento de alimentao regulada para o microcontrolador e outros


componentes da placa;

3V3. Uma alimentao de 3,3 volts gerada pelo chip FTDI. A corrente mxima de 50
mA;

GND. Pinos terra. Cada um dos 54 pinos digitais do Mega2560 pode ser usado como
entrada ou sada. Eles operam a 5 volts. Cada pino pode fornecer ou receber um
mximo de 40 mA e possui um resistor interno de 20-50 K.

O Atmega2560 tem 256 KB de memria flash para armazenamento de cdigo(dos


quais 8KB so usados pelo bootloader), 8 KB de SRAM e 4 KB de EEPROM

1.5 Ambiente de Desenvolvimento e seus Conceitos

Esta seo apresenta os ambientes de programao utilizados no sistema de


automao veicular.
Um IDE Integrated Development Environment (Ambiente de desenvolvimento
integrado) - consiste em um software que contm um conjunto de funcionalidades
embutidas, cuja finalidade prover um modo mais fcil e interativo de construir e manipular
seus programas. Entre estas ferramentas geralmente figuram:

Um editor de texto com facilidades especialmente desenhadas para a linguagem;

Um compilador (e um interpretador, no caso de Java e outras linguagens


interpretadas);

Um editor grfico, com facilidades para criao e edio da interface grfica do


programa a ser desenvolvido;

Um debugger, que possibilita um monitoramento mais elegante do funcionamento


do programa, facilitando a deteco e remoo dos erros.

24

1.5.1 Plataforma de desenvolvimento Arduino

O ambiente de desenvolvimento Arduino contm um editor de texto para a escrita


de cdigo, uma rea de mensagens, um console de texto, uma barra de ferramentas com
botes para variadas funes, e uma srie de menus. Ele se conecta ao hardware do
Arduino, permitindo o upload de programas e a comunicao com eles.
Os programas escritos usando Arduino so chamados sketches. Essas sketches so
escritas no editor de texto, e so salvas com a extenso de arquivo. Elas permitem
funcionalidades como recortar/colar e procurar/substituir texto. Na rea de mensagem,
temos retorno de aes como salvar e exportar, alm da exibio de erros. O console mostra
a sada de texto do Arduino, incluindo mensagens de erro completas e outras informaes.
O canto inferior direito mostra a board atual e a portal serial. Os botes da barra de
ferramentas permitem que voc verifique e faa upload de programas, crie, abra e salve
sketches, e abra o monitor serial.
Na Figura 2 possvel observar o ambiente de programao do Arduino.

Figura 2 - Ambiente de desenvolvimento Arduino 0022.

Principais comandos disponveis:

25

(a)

Verify: Verifica se o cdigo contm erros;

(b)

Upload: Compila o cdigo a faz o upload para o Arduino;

(c)

New: Cria uma nova sketch;

(d)

Open: Exibe um menu com todas as sketches no seu sketchbook. Ao clicar em


uma, a mesma ser aberta na janela atual;

(e)

Save: Salva sua sketch;

(f)

Serial Monitor: Abre o monitor serial.

Comandos adicionais so encontrados atravs dos menus: File, Edit, Sketch, Tools, Help. As
funes disponveis pelos menus File, Edit e Help so semelhantes a outros programas bem
conhecidos e, por isso, no iremos detalh-las aqui.

Menu Sketch:

Verify/Compile - Verica se seu cdigo tem erros;

Import Library - Adiciona bibliotecas ao seu programa;

Show sketchfolder - Abre a pasta onde o programa est salvo;

Add File - Adiciona um arquivo fonte ao programa. O novo arquivo aparece em uma
nova aba.

Menu Tools:

Auto format - Formata o cdigo para uma melhor leitura, alinhando as chaves e
indentando seu contedo;

Board - Seleciona o kit de desenvolvimento onde se deseja realizar o projeto;

Serial Port - Mostra todas as portas seriais que o computador possui;

26

Burn Bootloader - Permite gravar um bootloader no kit de desenvolvimento do


Arduino.

1.5.2 Plataforma de desenvolvimento Android

O Android uma plataforma desenvolvida pela Google voltada para dispositivos


mveis. Em 5 de novembro de 2007, a empresa tornou pblica a primeira plataforma Open
Source de desenvolvimento para dispositivos mveis baseada na plataforma Java com
sistema operacional Linux, a qual foi chamada de Android. Essa plataforma mantida pela
OHA (Open Handset Alliance), um grupo formado por mais de 40 empresas as quais se
uniram para inovar e acelerar o desenvolvimento de aplicaes, servios, trazendo aos
consumidores uma experincia mais rica em termos de recursos, menos dispendiosa em
ternos financeiros para o mercado mvel. Pode-se dizer que a plataforma Android a
primeira plataforma mvel completa, aberta e livre.

1.5.2.1 Estrutura geral da plataforma

Android a plataforma Open Source para dispositivos mveis da OpenHandset


Alliance (OHA). O Android SDK o kit de desenvolvimento que disponibiliza as ferramentas e
APIs necessrias para desenvolver aplicaes para a plataforma Android, utilizando a
linguagem Java.
Recursos:

Application framework proporciona a reutilizao e substituio de componentes;

Dalvik virtual machine otimizada para dispositivos mveis;

Browser Integrado baseado no webkit engine;

Grficos Otimizados possui uma biblioteca 2D; e 3D baseada na especificao


OpenGL ES 1.0 (acelerao de hardware opcional);

SQLite para guardar dados estruturados;

Suporte multimdia para udio, vdeo e formatos de imagem (MPEG4, H.264, MP3,
AAC, AMR, JPG, PNG, GIF);

Telefonia GSM (dependente de hardware);

27

Bluetooth, EDGE, 3G, e WiFi (dependente de hardware);

Cmera, GPS, compasso, e acelermetro (dependente de hardware);

Rico ambiente de desenvolvimento, incluindo um emulador de dispositivo,


ferramentas de depurao, memria, performance e um plugin para o Eclipse (ADT).

1.5.2.2 Arquitetura

Na Figura 3 possvel observar a arquitetura computacional do Android.

Figura 3 - Arquitetura Android.

1.5.2.3 Bibliotecas

- System C library uma implementao derivada da biblioteca C padro sistema


(libc) do BSD sintonizada para dispositivos rodando Linux;

- Media Libraries baseado no PacketVideos OpenCORE; as bibliotecas suportam os


mais populares formatos de udio e vdeo, bem como imagens estticas;

- Surface Manager gerencia o acesso ao subsistema de exibio bem como as


mltiplas camadas de aplicaes 2D e 3D;

28

- LibWebCore um web browser engine utilizado tanto no Android Browser quanto


para exibies web;

- SGL o engine de grficos 2D;

- 3D libraries uma implementao baseada no OpenGL ES 1.0 APIs; as bibliotecas


utilizam acelerao 3D via hardware (quando disponvel) ou o software de
renderizao 3D altamente otimizado includo no Android;

- FreeType renderizao de fontes bitmap e vector;

- SQLite um poderoso e leve engine de banco de dados relacional disponvel para


todas as aplicaes.

1.5.3 Plataforma de desenvolvimento Eclipse

A integrao entre o ambiente Eclipse e o Android atravs de plug-ins possibilitou


uma forma pratica e rpida de desenvolver um aplicativo pra dispositivos mveis.
O Eclipse uma plataforma de desenvolvimento de Open Source extensvel, baseada
em Java. Por si s, simplesmente uma estrutura e um conjunto de servios para
desenvolvimento de aplicativos e componentes de plug-ins.
O Eclipse possui um conjunto padro de plug-ins, incluindo as amplamente
conhecidas Ferramentas de Desenvolvimento Java (JDT). Figura 4 mostra plataforma de
desenvolvimento Eclipse com plug-in Android instalado.

Figura 4 - Plataforma de desenvolvimento Eclipse com plug-in Android.

29

1.5.3.1 Arquitetura Eclipse

Na Figura 5 observar-se a arquitetura simplificada da plataforma eclipse.

Figura 5 - Arquitetura simplificada da plataforma eclipse.

As partes em azul (Help e Update) so componentes da parte principal da Rich Client


Platform (RCP) do Eclipse. Considere a RCP apenas como um conjunto de plug-ins que
podem usados para desenvolver aplicativos, como o Lotus Notes. As partes em azul claro so
opcionais (mais recomendadas) para serem includas em aplicativos baseados em RCP. E as
partes em cinza(Text, IDE Text, Compare, Debug, Search, Team/CVS, IDE personality e
Resources) so totalmente opcionais. A plataforma composta por vrios componentes.
Tempo de execuo:
O tempo de execuo o cdigo que define o modelo de plug-in do Eclipse, com base
na especificao de OSGi e noo de extenso e pontos de extenso. O tempo de execuo
tambm fornece servios adicionais como criao de log e simultaneidade.
JFace/SWT
O Standard Widget Toolkit (SWT) um conjunto de widget que proporciona ao
Eclipse sua aparncia. O JFace simplesmente uma camada no alto do SWT que fornece
algumas classes Model-View-Controller (MVC) para simplificar o desenvolvimento de
aplicativos grficos.

30

Workbench
O ambiente de trabalho concede ao Eclipse sua personalidade. O conceito das
visualizaes, perspectivas e itens como editores so definidos nesse nvel.
Ajuda (Assistncia ao Usurio)
O componente do Eclipse permite que voc fornea assistncia a seus usurios. Isso
pode ser feito por meio do sistema de ajuda, que permite aos usurios fazer procuras na
documentao de ajuda ou usando folhas de dicas, que podem ser consideradas como listas
de tarefas interativas para usurios finais.
Update
O componente de atualizao do Eclipse fornece as facilidades para permitir a
atualizao dos seus aplicativos entre verses.
Team
O componente Team composto por uma estrutura para permitir que fornecedores
se conectem nos seus prprios sistemas de controle de verso. Uma implementao
exemplar de provedor o plug-in CVS fornecido fora da caixa do Eclipse.

1.5.3.2 Emulador Android

O kit de desenvolvimento Android fornecido como plug-in e conta com o emulador


embutido auxiliando na criao de aplicativos para dispositivos mveis com sistema
operacional Android. A Figura 6 mostra emulador Android.

Figura 6 - Emulador Android.

31

1.6 Caracterizao do Problema

O tema tratado, controle e automao de veculos, vm sendo largamente


pesquisado em diferentes reas pelo mundo.
A problemtica proposta consiste no projeto e desenvolvimento de um sistema de
controle e automao de um carro de passeio aplicando processamento embarcado e Open
Source no projeto do sistema.
Diante da possibilidade de automao de um veculo, questiona-se a viabilidade de
automao utilizando-se um dispositivo SmartPhone. Visto que este proporcionaria total
liberdade para o usurio, questiona-se tambm a segurana e conforto.
O projeto SiAV possui arquitetura em blocos que pode ser gerenciado de forma
dinmica que ser apresentado de maneira mais abrangente nos captulos seguintes.
A proposta do SiAV tornar o veculo capaz de realizar tarefas por meio de um
Celular SmartPhone utilizando da tecnologia 3G e possibilitando comandos especficos ao
automvel.

1.7 Projeto SiAV

O projeto SiAV teve incio com o surgimento dos primeiros autmatos (ancestrais dos
atuais robs), podemos considerar como um marco na histria da humanidade a construo
da primeira mquina de calcular, criada por Pascal em 1642. A partir desta poca inmeros
autmatos foram desenvolvidos, mas foi somente a partir de 1923 que o termo robot
comeou a ser empregado, tendo sido usado pela primeira vez por Karel Capek (Dudek
2000).
Com a evoluo dos robot e o desejo de se automatizar cada vez mais os
componentes do nosso dia-a-dia, o projeto SiAV traz para o cotidiano a experincia de se
automatizar um veculo pequeno de passeio possibilitando assim um maior conforto,
segurana e praticidade ao usurio.
Este projeto foi desenvolvido em trs etapas distintas. Na primeira etapa foram
identificados quais comandos deveriam ser automatizados, a partir da projetou-se os
atuadores para efetuar o acionamento para esses comandos. Na segunda etapa definiu-se a

32

arquitetura de software e hardware livres para o controle das variveis automatizadas. Na


terceira e ultima etapa desenvolveram-se os algoritmos de controle do sistema.
Vale ressaltar que o intuito do projeto a utilizao de dispositivos de baixo custo
buscando o desenvolvimento de um produto acessvel comercializao.
Foram projetados e construdos os circuitos eletroeletrnicos para a primeira verso
do software de controle e automao do veculo baseado em um microprocessador Atmega
2560 sobre plataforma Arduino.
Na Figura 7, observa-se o equipamento Arduino que foi utilizado no SiAV.

Figura 7 - Arduino Atmega 2560.

1.8 Motivao deste Trabalho

Atualmente, os sistemas autnomos veiculares vm ganhando cada vez mais espao.


Fatores relacionados segurana e conforto so os principais motivadores, os quais tm
despertado o interesse de montadoras e laboratrios de pesquisa a redirecionarem suas
pesquisas em sistemas autnomos.
Entretanto, grande parte desses sistemas so projetados em arquiteturas de sistemas
microprocessados com diferentes conceitos (Shimazaki et al., 2004), (Wada M., 2003) e

33

(Good et al., 1988). As aplicaes desenvolvidas em sua grande maioria so desenvolvidas


para

carros

com

motores

eltricos

com

diversos

acessrios

automticos

ou

semiautomticos.
O projeto em questo, por sua vez, pode ser definido como diferenciado das
aplicaes j desenvolvidas, pois possuem premissas que estabelecem a utilizao de um
veculo popular, visando a obteno de um sistema de baixo custo flexvel o suficiente para
adaptar-se a diferentes modelos de carros realizando a tarefa de automao dos
equipamentos do veculo.
Os sistemas j desenvolvidos utilizam sistemas sofisticados e complexos instalados
em veculos modernos que contam com inmeros dispositivos de controle j instalados.
Todo esse trabalho envolve um detalhado estudo para o desenvolvimento de um sistema
robusto, simples e barato que implique em modificaes mnimas no veculo.

1.9 Justificativa

Na rea de veculos autnomos ou automao veicular, tem aumentado a cada dia a


importncia dos conceitos de segurana, conforto e eficincia. Visando maximizar cada vez
mais estes princpios, muito se tem investido em novas pesquisas dentro dos conceitos de
sistemas de apoio ao motorista e de automao de tarefas repetitivas dando maior conforto
e segurana.
Estudos mostram o aumento da utilizao de sistemas eletrnicos para o controle e
monitorao de diversos dispositivos, sistemas e at tarefas. Os automveis representam os
produtos que vm a cada dia incorporando mais equipamentos e dispositivos
microeletrnicos, o que contribui para o aumento do consumo de semicondutores.
Os equipamentos incorporados aos automveis representam a eletrnica embarcada
na forma de sensores, computadores de bordo, circuitos eletrnicos, freios inteligentes,
instrumentao, cmbios automticos, entre outros (Consoni F., 2004).
Um ponto importante que a capacidade para executar um projeto cresce mais
lentamente se comparada com o aumento da complexidade do mesmo. Este ponto se
reflete em um aumento lento da produtividade do ciclo de projeto de sistemas complexos
(Harteinsten R., 2002).

34

O mercado tem respondido de forma positiva com o crescimento de unidades


produzidas e comercializadas. Estima-se que nos prximos anos o aumento do consumo
destas tecnologias e novos conceitos em eletrnica embarcada nos veculos tragam maior
segurana e conforto ao motorista e aos ocupantes.
Torna-se cada vez maior o relacionamento de computadores e da indstria de
semicondutores com os automveis. Esta modernizao est trazendo aos motoristas e
passageiros diversos benefcios como: maior segurana ao dirigir, apoio ao motorista em
situaes de emergncia, limitadores e controladores de velocidade e estabilidade do
veculo e os sistemas de ajuda no estacionamento dos veculos.
Em pases da Europa como a Alemanha, Frana e Itlia existem rodovias com alto
grau de automatizao atuando de forma inteligente, so as chamadas AHS Automated
Highway Systems.
Essas rodovias, por sua vez, so equipadas com diversos dispositivos que auxiliam o
motorista no controle e conduo do veculo, podendo estabelecer o controle de velocidade
eletronicamente, avisando o motorista das condies de alerta e emergncia.

35

2 OBJETIVOS

2.1 Objetivos Gerais

Este trabalho tem como objetivo principal desenvolver um controlador de automao


para o veculo acionando os atuadores de acordo com as necessidades, seguindo as
especificaes de arquitetura flexvel em sistemas distribudos (Bellardi, T., 2005).
A abordagem aplicada para este propsito baseia-se no projeto e implementao de
um controlador de automao embarcado em lgica configurvel propiciando a um veculo
de passeio receber comandos para automao de forma segura e controlada. Por outro lado,
este trabalho tambm visa desenvolver uma interface entre o controlador e o operador para
o envio dos comandos.

2.2 Objetivos especficos

Estudar, projetar e implementar a programao dos mdulos e seus respectivos


blocos para o controle de automao em um microcontrolador embarcado em
hardware Open Source;

Projetar e implementar os perifricos para o microcontrolador embarcado em


hardware Open Source e conectar ao barramento de comunicao;

Definir e projetar uma comunicao entre o operador e o controlador de forma


automtica propiciando ao sistema receber comandos e executar as aes
necessrias para a automao do veculo.

36

3 METODOLOGIA

A metodologia aplicada neste trabalho dedicou-se ao projeto de um sistema de


controle e automao para um veculo de passeio comum a partir dos conceitos da
arquitetura flexvel, modular e distribuda definida por (Bellardi, T., 2005). Esta arquitetura
dividida em mdulos a fim de propiciar futuras modificaes do sistema e o acrscimo de
outras funcionalidades.
O sistema de controle e automao foi subdividido em dois mdulos: mdulo de
controle e automao, mdulo de interface com o operador, sendo que estes sero
estudados posteriormente.
Desenvolveu-se a sistemtica de controle e automao usando as ferramentas do
Arduino SDK 0.24 (Software Development Kit) para a codificao do software do
microcontrolador embarcado Arduino mega 2560 o qual responsvel por controlar os
atuadores do veculo.
O mdulo de interface com o operador foi desenvolvido usando a ferramenta de
desenvolvimento Eclipse Idigo com pacote SDK Android (Software Development Kit). Para
codificao da interface utilizou-se a linguagem de programao Java.
A presente metodologia de projeto, envolvendo arquiteturas reconfigurveis,
mostra-se promissora devido grande flexibilidade das tcnicas utilizadas. O projetista pode
modelar diversas tcnicas de controle para validar desempenho e viabilidade
tcnica/econmica do projeto.

37

4 SISTEMA DE AUTOMAO VEICULAR COM ARDUINO E ANDROID - Desenvolvimento


4.1 Arquitetura do Sistema

Esta seo apresenta arquitetura proposta na elaborao do controle de automao


do veculo. Sendo apresentadas partes mecnicas, eletroeletrnicas e computacionais
propostas nesses trabalhos.
Sabe-se que para o projeto de sistemas de controle o estudo da arquitetura do
sistema um dos passos iniciais na concepo do projeto. durante a elaborao da
arquitetura do sistema que os projetistas dedicam sua ateno para a definio da
comunicao, interao e o funcionamento entre os subsistemas.
Para a elaborao do sistema de controle e automao dedicaram-se esforos na
concepo de uma arquitetura que atendesse os requisitos de segurana, desempenho e
baixo custo.
A elaborao desse projeto passou por duas fases diferentes. Na primeira fase foram
definidas os parmetros principais do projeto SiAV e seus objetivos. A segunda fase por sua
vez, consistiu no estudo e definio da arquitetura flexvel e modular do sistema de controle.
As duas fases que antecederam esse trabalho contriburam de forma importante para
a obteno de resultados considerveis em termos tecnolgicos e cientficos na elaborao e
implementao da arquitetura.
As implementaes nessas fases realizadas trouxeram a possibilidade de se
desenvolver solues a partir do ponto at onde essas fases alcanaram dando sequncia ao
projeto SiAV em busca do objetivo principal do projeto: automao de um veculo utilizando
um celular Smartphone .

4.1.1 Arquitetura na primeira fase do projeto SiAV

Na primeira fase do projeto foram definidos os parmetros de projeto e seu objetivo


obteve-se tambm os modelos de abertura de portas, capo e partida do motor.
Durante a elaborao da arquitetura do sistema foi seguido o fluxo de projeto saindo
do acionamento mecnico para a interface com o operador. Uma vez definida a arquitetura

38

de acionamento foram definidas as arquiteturas computacional e de acionamento


eletroeletrnico para o controle do veculo.
Na Figura 8 pode-se visualizar a arquitetura computacional e de acionamento
eletroeletrnico proposta.

Figura 8 - Diagrama de bloco do sistema proposto.

Nessa arquitetura do sistema proposta e implementada, o notebook o responsvel


por processar os comandos e enviar ao microcontrolador Arduino.

4.1.2 Arquitetura na segunda fase do projeto SiAV

Na segunda fase do projeto, foi definida uma arquitetura flexvel para o controle da
movimentao do veculo. Inicialmente, aplicou-se a metodologia de se dividir o sistema e
organiz-lo em diferentes mdulos os quais possuem funes bem especficas para a
realizao das tarefas relacionadas ao controle da movimentao do veculo.

39

O desenho da arquitetura foi projetado pensando-se em quatro mdulos sendo


esses: mapeamento, controle dos mdulos de atuao, controle de automao e interface
com o usurio.
Essa estrutura apresentada por (Bellardi T, 2005) tem um carter de orientar o
desenvolvimento do projeto, no consistindo em um critrio rgido (podendo sofrer
modificaes com os avanos do projeto).
Na Figura 9 observa-se a arquitetura detalhada do mdulo de automao:

Figura 9 - Arquitetura conceitual do mdulo de controle e automao.

Busca-se com a arquitetura proposta alcanar o objetivo inicial do projeto SiAV e


possibilitar assim automatizar outras tarefas (Correia A., et al., 2007a). Sendo assim, os
principais conceitos desenvolvidos nesta fase foram concentrados em duas frentes:
a) O desenvolvimento do controlador de automao em um microcontrolador
embarcado em lgica reconfigurvel;
b) O projeto e desenvolvimento das placas de interface de sinais e potncia.

40

4.2 Aspectos Gerais Desenvolvimento do Software de Controle

A seo Apndices descreve a codificao dos principais mdulos de controle


desenvolvidos no sistema de automao veicular.

4.2.1 Mdulo controlador cliente

O sistema foi projetado e construdo utilizando a ferramenta de desenvolvimento


eclipse onde foi adicionado o plug-in do ambiente de desenvolvimento Android utilizando a
linguagem de programao Java. O projeto partiu da criao de um pacote Android cujo
nome (Self-Car) dentro do pacote foram criadas as classes; Cliente, ConexoSocket, Envio e
Mensagem com extenso .java.
A classe Cliente responsvel por chamar os mtodos necessrios para iniciar
aplicao (Ver Apndice A).
A classe ConexaoSocket responsvel por iniciar uma conexo com o servidor e
preparar o envio de mensagens (Ver Apndice B).
A classe Envio responsvel por preparar o envio de mensagens ao servidor (Ver
Apndice C).
A Classe Mensagem responsvel por enviar as mensagens para o servidor (Ver
Apndice D).
4.2.1.1 Diagrama de classe do Mdulo Cliente

Observa-se na Figura 10 do diagrama de classe Modulo Cliente, onde a classe Cliente


informa para classe ConexoSocket o IP e Porta para conexo com o servidor socket
instalado no veculo, a classe Mensagem e responsvel por informar as mensagem coletadas
da tela layout para classe Envio essa por sua vez envia as mensagem para o servidor socket.

41

Figura 10 - Diagrama de classe Mdulo Cliente.

4.2.1.2 Layout do mdulo cliente

A seguir apresentado o layout do modulo cliente, onde temos uma breve


explicao das telas seguintes. A Figura 11 apresenta a tela principal do Android, quando
emulador iniciado aps clicar no cone do software criado abrir a tela de conexo com o
servidor onde se pode informar o IP e porta do servidor que estar alocado no veculo.

42

Figura 11 - Telas Emulador e Conexo com Servidor.


A Figura 12 apresenta a tela aps a autenticao no servidor, mostrando os 4 botes
de automao do veculo onde os mesmos estaro desligados, aps o acionamentos os
botes mudaram de status para on e sinalizao verde.

Figura 12 - Layout mdulo cliente.


4.2.2 Modulo controlador servidor

O sistema foi projetado e construdo utilizando a ferramenta de desenvolvimento


eclipse utilizando a linguagem de programao Java. O projeto partiu da criao de um
Servidor Socket com duas classes: Servidor e ControlePorta.
A Classe Servidor responsvel por instanciar o servidor (Ver Apndice E).

43

A Classe ControlePorta responsvel por enviar os comandos do servidor para o


controlador Arduino (Ver Apndice F).

4.2.2.1 Diagrama de classe do Modulo Servidor

Observa-se na Figura 13, o diagrama de classe do modulo servidor onde a classe


Servidor envia comandos para a classe ControlePorta, esta por sua vez a classe responsvel
por instanciar uma comunicao com hardware Arduino e assim enviar comandos para o
mesmo.

Figura 13 - Diagrama de classe mdulo servidor.

44

5 CONCLUSO

Neste trabalho foi desenvolvido um controlador de automao para o veculo


automotor de passeio possibilitando ao usurio a instalao de mdulos de acordo com sua
necessidade, o projeto buscou possibilitar assim um maior conforto, segurana e praticidade
ao usurio.
Foram implementados a programao dos mdulos e seus respectivos blocos para o
controle de automao em um microcontrolador embarcado em hardware Open Source.
Foram implementados os perifricos para o microcontrolador embarcado em
hardware Open Source e a conexo com o barramento de comunicao.
Foi projetada a comunicao entre o operador e o controlador de forma automtica
propiciando ao sistema receber comandos e executar as aes necessrias para a
automao do veculo utilizando a tecnologia 3G, Android e Arduino para o sucesso deste
projeto.

5.1 Trabalhos futuros

As perspectivas de trabalhos futuros relacionados objetivam atingir um nvel


funcional do sistema para atender as expectativas do projeto SiAV.
A implementao de um Mdulo de mapeamento e localizao do veculo utilizando
a tecnologia GPS (Global Positioning System) para monitoramento do automvel.
A implementao de um Mdulo de cmeras de vigilncia integradas com o modulo
cliente para visualizao instantnea do interior e exterior do veculo.

45

6 REFERNCIAS
ADADE FILHO, A. Fundamentos de Robtica Cinemtica, Dinmica e Controle de
Manipuladores Robticos. So Jos dos Campos, ITA, 1992.
AMATO Joo Neto (2004) Relatrio setorial FINEP Semicondutores
http://www.finep.gov.br/PortalDPP/45oolean45t_setorial acessado em 2004

AMBIENTES VIRTUAIS INTERATIVOS E INTELIGENTES: Fundamentos, Implementao e


Aplicaes Prticas. XXIV Congresso da SBC JAI 2004 (Jornadas de Atualizao em
Informtica). Tutorial. Salvador, Bahia. Web.
ANDEEN, G.B. (ED.) Robot Design Handbook. NY, McGraw-Hill, 1988.
BELLARDI Thiago C., (2005). Definio de uma arquitetura flexvel para controle de
movimentos de um veculo de passeio. Publicao DM 002 Dissertao de mestrado
apresentada no departamento de mecnica da Universidade de Braslia, novembro.
BROWN S.; Vranesic Z. (2000). Fundamentals of Digital Logic with VHDL Design. McGraw
Hill, Toronto.
BUSHBY S. (1997). BACnet: a Standard Comunication Infrastrutures for intelligent Buildings.
In: Elsevier, Automation in Construction 6, pg. 529-540.
CORREIA A.; Llanos C. H. Q.; Carvalho R. W.; Alfaro S. A. (a) (2007): A Design/Testing
Platform Based on Reconfigurable Architectures and Virtual Instrumentation Applied to
the Hands-free Driving Automobile Problem, WSEAS transactions on systems and control.
Issue 3, vol. 2, Maro 2007.
CORREIA A.; Llanos C. H. Q.; Carvalho R. W.; Alfaro S. A. (b) (2007): A Platform Based on
Reconfigurable Architectures and Virtual Instrumentation Applied to the Driving
Automobile Problem. 6th WSEAS International Conference on SIGNAL PROCESSING,
ROBOTICS and AUTOMATION (ISPRA 07). Ilha de Corfu, Grcia, Fevereiro, 2007. Pg. 242 a
248.
CORREIA, A. P. Um projeto de Controle de Movimentao Veicular Projetado em um
Processador Embarcado em FPGA com Ambiente de Simulao Usando Instrumentao
Virtual. 2007. 178f. Dissertao (MESTRADO EM SISTEMAS MECATRNICOS)-Universidade
de Braslia Faculdade de Tecnologia Departamento de Engenharia Mecnica, Braslia, 2007.
DEHON A. The Density Advantage of Configurable Computing, IEEE Computer. Vol. 33,
No. 4, 2000.
DEITEL,H.;DEITEL,P.C++: Como Programar.5 Edio. Editora Prentice-Hall.
DEITEL,H.;DEITEL,P.J.Java: Como Programar.8 Edio. Editora Prentice-Hall.

46

DORF, R. C. (ED.) Concise International Encyclopedia of Robotics. NY, Wiley, 1990.


DUDEK, G. and Jenkin, M. (2000). Computational Principles of Mobile Robotics. Cambridge
University Press, Cambridge, UK. EDK MicroBlaze tutorial Xilinx 2005.
FONSECA, E. G. P. da, Beppu, M. M. Apostila Arduino. 2010. 23 f. Apostila Universidade
Federal Fluminense Centro Tecnolgico Escola de Engenharia Curso de Engenharia de
Telecomunicaes Programa de Educao Tutorial, Niteri, 2010.
FU, K.S. et alii Robotics: Control, Sensing, Vision and Intelligence. NY, McGraw-Hill, 1987.
GARRIDO R. (2001). Automao e Controle Aplicados em Veculo de Combusto interna
Convencional em Deslocamento Linear. Dissertao de mestrado UnB.
GOETTING, H.H. (2001). FOX GmbH: Automatisierte Fahrzeuge. Disponvel em:
http://www.foxit.de. Acessado em: 11/06/2012.
I.N.R.I.A institute Disponvel em: <http://www.inria.fr/index.en.html>. Acessado em 2007.
KELBER Christian R., Cludio R. Jung, Farlei Heinen (2005). Computao Embarcada; Projeto
e Implementao de Veculos Autnomos Inteligentes. XXV Congresso da SBC, Janeiro.
KELBER, C.R.; Dreger, R.S.; Gomes, G.K.; Webber, D.; Schirmbeck, J.; Netto, R.H.
KELBER, C.R.; Osrio, F.S.; Jung, C.R.; Heinen, F.J.; Dreger, R.S.; Gules, R.; Mello Jr., C.D.;
Silveira, M.A.; Schumacher, W.; (2003) Tecnologias para Automao Veicular Solues
em Mecatrnica e Sistemas de Apoio ao Motorista; Engenharia- Estudos Tecnolgicos;
ISSN 1517-3615, Vol. XXIII, No. 24, p.37-47.
LEWIS, T. G.; El-Rewini, H. (1998). Distributed and Parallel Computing, Manning.
LHOTE, F. et alii Robot Technology, Vol. 4 Robot Components and Systems. London,
Kogan Page/Prentice-Hall, 1983.
Li J. H, Lee, Li, P. M. (2005) A Neural Network Adaptive Controller Design for Free- PitchAngle Diving Behavior of an Autonomous Underwater Vehicle. Robotics and Autonomous
Systems. Elsevier, 52 pg 132 147

MINGJIE Lin.; Gamal A.; Chang Y.; Wong S. (2006). Performance Benefits of Monolithically
Stacked 3D-FPGA. FPGA06 USA.
MOORE G. E. (1997). The Microprocessador: Engine of the Technology revolution.
Communications of the AMC, Vol. 40 (2), pg. 112-114.
NETO,O. M. Entendendo e Dominando Java. 2 Edio. Editora Universo dos Livros. 2007.

47

OSRIO, F. S.; Heinen, F.; Fortes, L. (2002). Controle da Tarefa de Estacionamento de um


Veculo Autnomo atravs do Aprendizado de um Autmato Finito usando uma Rede
Neural J-CC. In: VII Simpsio Brasileiro de Redes Neurais, 2002, SBC Porto de Galinhas
Recife.
PATTERSON, David A.; Hennessy, John L. (2000). Organizao e projeto de computadores: A
interface Hardware/Software.2 Ed. Rio de Janeiro:LTC, pg. 551.
PEREIRA, K. R. C. Sistema para Controle e Superviso Remota para Automao Residencial.
2009. 37f. Trabalho de Concluso de Curso. Natal, 2009.
ROBOSOFT S.A. Automated People Transportation Applications, Technologies and
Perspectives. Sep. 2003. Disponvel em: http://www.robosoft.fr/Brochures/wptransports_EN.pdf.
SANCHEZ, E. et al. (1999). Static and Dynamic Configurable Systems, IEEE Transactions of
Computers, pp. 556-564.
SHIMAZAKI Kazunori; Kimura Tomio; Yamada Satoshi (2004). Parking assisting device
Patent No US 6711473 B2 United States
SILVA, L. A. da. Apostila de Android: Programando Passo a Passo. 2010. 132 f. Apostila, Rio
de Janeiro, 2010
SIPPER, M.; Sanchez, E. (2000). Configurable Chips Meld Software and Hardware, IEEE
Computer, pp. 120-121.
SHNITZ, I. (2001); Querregelung eines autonomen Strassenfahrzeugs; ForschrittBerichte VDI, Reihe 8, Nr. 882.
SHNITZ, I., Schwarze, K., (1999) Lateral Control of an Autonomous Vehicle: Design and
First Practical Results, In Proceeding of the IEEE International Conference on Intelligent
Transportation Systems. Tokyo, Japan; 5-8 October.
STEVEN E. Shaladover; Charles A. Desoer (1991). Automatic Vehicle Control Developments
in the PATH Program. IEEE Transaction on Vehicle Technology, Vol., 40, No 1, Fevereiro.
TANAKA Yuu; Iwata Yoshifumi; Satonaka Hisashi; Endo Tomohiko; Kubota Yuichi; Matsui
Akira; Iwakiri Hideyuki; Sugiyama Toru; Kawakami Seiji; Iwazaki Katsuhiko; Kataoka Hiroaki
(2006): Vehicle backward movement assist device and vehicle parking assist device
Patent No 7039504 United States
TOYOTA MOTOR CORPORATION. The PM concept vehicle disponvel
<http://www.toyota.com/vehicles/future/pm.html>. Acessado em:10/11/2011.

em:

TURLEY, J. (1998). Triscend E5 Reconfigures Microcontrollers, Microprocessor Report,


Nov. 16, pg. 12-13.

48

WILLIANS R. (2006). Projeto de um Sistema Embarcado em Arquitetura Reconfigurvel e


instrumentao Virtual Aplicados a Veculos Autnomos Trabalho de Graduao UnB.
WOLF, W. (1994). Modern VLSI Design: A system Approach, Englewood Cliffs, Prentice
Hall. Xilinx : Spartan-3 Starter Kit Board User Guide. UG130 (v1.1) Maio 2005.
YABARRENA, Jean Mimar Santa Cruz (2006). Tecnologias system on chip e CAN em sistemas
de controle distribudo. Dissertao de mestrado USP.
YANG E., Gu, D., Mita, T., Hu, H (2004). Nonlinear Tracking Control of A Car-Likemobile
Robot via Dynamic Feedback Linearization. Control 2004, University of Bath, UK, Setembro.

49

APNDICES
APNDICE A- Classe Cliente
package br.Self.Car;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import br.Self.Car.R;
import br.Self.Car.ConexaoSocket;
import br.Self.Car.Mensagem;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Cliente extends Activity implements OnClickListener {
/**
* @uml.property name=btnConectar
* @uml.associationEnd
*/
private Button btnConectar;
/**
* @uml.property name=lbIp
* @uml.associationEnd
*/
private TextView lbIp;
/**
* @uml.property name=edIp
* @uml.associationEnd
*/
private EditText edIp;
/**
* @uml.property name=edPorta
* @uml.associationEnd
*/
private EditText edPorta;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Recupera componenentes da tela
btnConectar = (Button) findViewById(R.id.btnConectar);
btnConectar.setOnClickListener(this);
edIp = (EditText) findViewById(R.id.edIp);
edPorta = (EditText) findViewById(R.id.edPorta);
lbIp = (TextView) findViewById(R.id.lbIp);
lbIp.setText(getLocalIpAddress());
}
public void onClick(View view) {
if (view == btnConectar) { // Clicou no boto Conectar
try {

50

// Tenta iniciar uma conexo com o Servidor de Socket


ConexaoSocket connection =
ConexaoSocket.createConnection(edIp.getText().
toString(), edPorta.getText().toString());
connection.connect();
// Inicia tela para envio de mensagens
startActivity(new Intent(this, Mensagem.class));
} catch (Exception e) {
// Mostra erro na tela
Toast.makeText(this,
No foi possvel conectar + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}
/**
*
* Mtodo para recuperar ip do aparelho
*/
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
}
return null;
}
}

51

APNDICE B Classe ConexaoSocket


package br.Self.Car;
import java.io.DataOutputStream;
import java.net.Socket;
import android.os.Handler;
import android.os.Message;
public class ConexaoSocket {
private static ConexaoSocket connection;
/**
* @uml.property name=porta
*/
private int porta;
/**
* @uml.property name=host
*/
private String host;
/**
* @uml.property name=socket
*/
private Socket socket;
/**
* @uml.property name=sender
* @uml.associationEnd
*/
private Envio sender;
public static final int CONNECTED = 1;
public static final int ERROR = 2;
public static final int SENDING_MESSAGE = 3;
public static final int DISCONNECTED = 4;
/**
* @uml.property name=msg
* @uml.associationEnd
*/
private Message msg;
/**
* @uml.property name=out
*/
private DataOutputStream out;
/**
* @uml.property name=handler
* @uml.associationEnd
*/
private Handler handler; // Handle para notificaes na tela
private ConexaoSocket(String host, String porta) {
this.host = host;
this.porta = Integer.parseInt(porta);
}
// Mtodo que cria Objecto ConnectionSocket
public static ConexaoSocket createConnection(String host, String porta) {
connection = new ConexaoSocket(host, porta);
return connection;
}
// Retorna conexo atual
public static ConexaoSocket getCurentConnection() {
return connection;

52

}
// Conecta com o Servidor
public void connect() throws Exception {
this.socket = new Socket(host, porta);
out = new DataOutputStream(socket.getOutputStream());
}
// Inicia Thread para envio de mensagens
public void startSender(Handler handler) {
sender = new Envio (out, handler);
new Thread(sender).start();
this.handler = handler;
}
// Mtodo set mensagem para envio
public void senMessage(String mensagem) {
sender.setMessage(mensagem);
}
// Mtodo para 52cole52tar dados do Servidor
public void disconnect() throws Exception {
sender.disconnect();
socket.close();
if (handler != null) {
msg = new Message();
msg.arg1 = ConexaoSocket.DISCONNECTED;
handler.sendMessage(msg);
}
}
}

53

APNDICE C Classe Envio


package br.Self.Car;
import java.io.DataOutputStream;
import java.io.IOException;
import android.os.Handler;
import android.os.Message;
class Envio implements Runnable {
/**
* @uml.property name=out
*/
private DataOutputStream out;
/**
* @uml.property name=running
*/
private 53oolean running = true;
/**
* @uml.property name=handler
* @uml.associationEnd multiplicity=(1 1)
*/
private Handler handler;
/**
* @uml.property name=msg
* @uml.associationEnd
*/
private Message msg;
/**
* @uml.property name=sendMessage
*/
private String sendMessage;
public Envio (DataOutputStream out, Handler handler) {
this.out = out;
this.handler = handler;
}
public void run() {
while (running) {// Enquanto estiver executando
try {
if (sendMessage != null) { // Se existir uma mensagem para
// enviar
msg = new Message();
msg.arg1 = ConexaoSocket.SENDING_MESSAGE;
handler.sendMessage(msg); // Notifica Handler
out.writeUTF(sendMessage); // Escreve mensagem
out.flush();
sendMessage = null; // Seta nulo na mensagem
}
} catch (IOException e) {
e.printStackTrace();
msg = new Message();
msg.arg1 = ConexaoSocket.ERROR;
msg.obj = e.getMessage();
handler.sendMessage(msg);
running = false;
}
}
try {

54

out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @return
* @uml.property name=running
*/
public 54oolean isRunning() {
return running;
}
/**
* @param running
* @uml.property name=running
*/
public void setRunning(54oolean running) {
this.running = running;
}
public void stop() {
running = false;
}
public void setMessage(String message) {
this.sendMessage = message;
}
public void disconnect() throws Exception {
msg = new Message();
msg.arg1 = ConexaoSocket.DISCONNECTED;
handler.sendMessage(msg); // Notifica Handler
running = false;
out.close();
}
}

55

APNDICE D Classe Mensagem


package br.Self.Car;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.Button;
public class Mensagem extends Activity {
/**
* @uml.property name="handler"
* @uml.associationEnd multiplicity="(1 1)"
*/
private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
// Verifica mensagem do Handler e mostra na tela
synchronized (msg) {
switch (msg.arg1) {
case ConexaoSocket.CONNECTED:
break;
case ConexaoSocket.SENDING_MESSAGE:
break;
case ConexaoSocket.ERROR:
break;
case ConexaoSocket.DISCONNECTED:
break;
}
}
};
};
//Cria e instncia os botes do tipo ToggleButton e seta a view tela1.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tela1);
Button butDesconectar = (Button) findViewById(R.id.butDesconectar);
butDesconectar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
// Mtodo que verifica se a seleo foi marcada.
if (((Button) v).isClickable())
try {
ConexaoSocket.getCurentConnection().disconnect();
} catch (Exception e) {
// TODO Auto-generated catch block
e.toString( );
}
}
});
ToggleButton butmotor = (ToggleButton) findViewById(R.id.butmotor);
butmotor.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)

56

{
// Mtodo que verifica se a seleo foi marcada.
if (((ToggleButton) v).isChecked())
ConexaoSocket.getCurentConnection().senMessage("motor ligado");
else
ConexaoSocket.getCurentConnection().senMessage("motor desligado");
}
});
ToggleButton butporta = (ToggleButton) findViewById(R.id.butportas);
butporta.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
// Mtodo que verifica se a seleo foi marcada.
if (((ToggleButton) v).isChecked())
ConexaoSocket.getCurentConnection().senMessage("Porta
aberta");
else
ConexaoSocket.getCurentConnection().senMessage("Porta
fechada");
}
});
ToggleButton butcapo = (ToggleButton) findViewById(R.id.butcapo);
butcapo.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
// Mtodo que verifica se a seleo foi marcada.
if (((ToggleButton) v).isChecked())
ConexaoSocket.getCurentConnection().senMessage("Cap aberto");
else
ConexaoSocket.getCurentConnection().senMessage("Cap fechado");
}
});
try {
// Recupera Conexo atual
ConexaoSocket.getCurentConnection().startSender(handler);
} catch (Exception e) {
Toast
.makeText(this,"No foi possvel iniciar o Servio de
Mensagens.",Toast.LENGTH_LONG).show();
finish();
}
}
}

57

APNDICE E - Classe Servidor


package com.sevidor;
import java.io.DataInputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor {
private static boolean executando = true;
private static String mensagem;
private static final int PORTA = 1234;
private static ControlePorta arduino;
public void Controller(){
arduino = new ControlePorta();
arduino.initSerial();
}
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(1234);
InetAddress addr = InetAddress.getLocalHost();
System.out.println("----------- SERVIDOR CONECTADO "+ addr.getHostAddress() + "
PORTA " + PORTA + " -----------");
System.out.println("Esperando Conexes.");
Socket socket = server.accept();
System.out.println("Sevidor-> Conectou Ip " +
socket.getInetAddress().getHostAddress());
DataInputStream in = new DataInputStream(socket.getInputStream());
try {
}
//
}
mensagem);
}
System.out.println("Servidor-> Finalizado 1 ");
in.close();
socket.close();
//server.close();
} catch (Exception e) {
System.out.println("Servidor-> Finalizado 2 ");
socket.close();
server.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

58

APNDICE F Classe ControlePorta


Package com.sevidor;
import gnu.io.CommPortIdentifier;
import gnu.io.NoSuchPortException;
import gnu.io.SerialPort;
import java.io.IOException;
import java.io.OutputStream;
public class ControlePorta {
private OutputStream serialOut;
public void initSerial() {
try {
try {
}{
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void close(){
try {
serialOut.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void enviaDados(int 58oole){
try {
{
}
}
}

Anda mungkin juga menyukai