ENGENHEIRO COELHO
ENGENHEIRO COELHO
2012
ENGENHEIRO COELHO
2012
_________________________________________________
Prof. Me.Thales de Trsis Cezare
_________________________________________________
Prof. Me. Peterson Peixoto dos Santos
_________________________________________________
Prof. Me. Mateus dos Santos
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
inteligncia
RESUMO
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.
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
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
12
1 INTRODUO
13
14
15
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).
17
ABS Anti-lock-Breaking-System;
BAS Breaking-Assistant;
by-Wire;
Cruise Control;
Parking Assistance.
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).
19
20
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).
22
ATmega2560
Tenso de operao
5V
7-12V
6-20V
16
40mA
50mA
Memria Flash
SRAM
8KB
EEPROM
4KB
Velocidade de Clock
16MHz
Memria flash: capaz de preservar os dados armazenados por um longo tempo sem
a presena de corrente eltrica;
SRAM: memria de acesso aleatrio que mantm os dados armazenados desde que
seja mantida sua alimentao;
23
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.
24
25
(a)
(b)
(c)
(d)
(e)
(f)
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:
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;
26
Suporte multimdia para udio, vdeo e formatos de imagem (MPEG4, H.264, MP3,
AAC, AMR, JPG, PNG, GIF);
27
1.5.2.2 Arquitetura
1.5.2.3 Bibliotecas
28
29
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.
31
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
33
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
34
35
2 OBJETIVOS
36
3 METODOLOGIA
37
38
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
40
41
42
43
44
5 CONCLUSO
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
46
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
em:
48
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
51
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
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
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
58