Universidade Paulista
Instituto de Ciências Exatas e Tecnologia
Graduação em Engenharia da Computação
André Henrique Nogue...
São José dos Campos - SP
2010
André Henrique Nogueira
Danilo da Silva Junqueira
Estiven Koo Uryu
Wislan Alandes de Lima Arruda
ACCELERCAR:
Carrinho Cont...
São José dos Campos - SP
2010
André Henrique Nogueira
Danilo da Silva Junqueira
Estiven Koo Uryu
Wislan Alandes de Lima Arruda
ACCELERCAR:
Carrinho Cont...
27 / 10 / 2010
Data da aprovação
Dedicamos este trabalho aos nossos pais,
familiares e amigos por estarem presentes em
nossas vidas, diante da concretizaçã...
“O segredo do sucesso é não escutar
ninguém. O segredo do sucesso é ser
você do seu jeito e seguir a sua alma”.
Gasparetto
AGRADECIMENTOS
Agradecemos primeiramente ao nosso orientador Rogério Moreira
Cazo, pela sua auto-estima, simplicidade e mo...
RESUMO
O crescimento da utilização de aparelhos móveis vem superando as
expectativas do mercado ano após ano. Em virtude d...
ABSTRACT
The main objective is to design and implement a system that can
handle a cart by tilting movements of a mobile ph...
LISTA DE ILUSTRAÇÕES
Figura 2.1 – Modelo de comunicação Master e Slave.............................................18
Figu...
LISTA DE TABELAS
Tabela 3.1 – Controle de dados..............................................................................
LISTA DE ABREVIATURAS E SIGLAS
ABNT Associação Brasileira de Normas Técnicas
AD Analog Digital
API Application Programming...
LISTA DE SÍMBOLOS
mW miliwatt
KB Kilobyte
GHz Giga-hertz - Um bilhão de ciclos por segundo
µs Microssegundo
kΩ kilo ohm
bp...
SUMÁRIO
1 INTRODUÇÃO ........................................................................................................
3.12 Funcionamento do software do smartphone........................................37
3.13 Funcionamento do software do B...
14
1 INTRODUÇÃO
O celular hoje em dia é um dos produtos mais utilizados no mundo e a
competição para desenvolvimento de no...
15
1.2 Justificativa do trabalho
A crescente utilização de dispositivos móveis e a capacidade de
integração entre diferent...
16
2 FUNDAMENTAÇÃO TEÓRICA
Para o desenvolvimento deste trabalho foi necessária a aplicação de
diversas tecnologias. A int...
17
2.2 Tecnologia Bluetooth
Bluetooth é o nome dado a tecnologia que possui um padrão global de
comunicação sem fio e de b...
18
O Bluetooth não pode gerar e nem sofrer interferências, por isso, utiliza
Acesso Múltiplo por Divisão de Freqüência (FH...
19
Figura 2.1 – Modelo de comunicação Master – Slave.
2.3 Smartphone Nokia N95
O smartphone é um celular bastante popular,...
20
Figura 2.2 – Smartphone Nokia N95.
2.3.1 Sistema Operacional Symbian
Sistema operacional desenvolvido especialmente par...
21
onde o produto da massa do corpo pela sua aceleração resulta na força aplicada. Os
sensores MEMS utilizam este conceito...
22
respeite a sintaxe, pois é lida linha a linha por um interpretador. Para projetos
complexos não é necessário centenas o...
23
para iniciantes. Atualmente podemos encontrar sucessores desta linguagem como
Visual Basic da Microsoft.
A sua sintaxe ...
24
3 PROJETO E DESENVOLVIMENTO
Neste capítulo está descrito a característica e ferramentas utilizadas
para implementação d...
25
Figura 3.1 – Software do Compilador Basic Step M8.
A Figura 3.2 apresenta o arquivo de ajuda com as instruções e
inform...
26
de memória programável do tipo Flash, 512 bytes de Memória Somente de Leitura
Programável e Apagável Eletricamente (EEP...
27
conexão serial para conectores DB9 e DB25 pode ser visualizada nas figuras
abaixo:
Figura 3.4 – Pinagem dos conectores ...
28
A Figura 3.5 (a) mostra como obter o valor máximo positivo referente
ao eixo X, o telefone deve estar na horizontal apo...
29
Figura 3.6 – (a) Referência eixo Y máximo positivo, (b) Referência eixo Y máximo negativo.
As Figuras 3.7 (a) e 3.7 (b)...
30
O projeto utiliza o circuito GL-6B, módulo de Bluetooth classe 2 com
Chipset AudioRom fornecido pela Cambridge Silicon ...
31
reconhecido pelo microcontrolador. Os scripts desenvolvidos para ambos, podem
ser visualizados no APÊNDICE E e APÊNDICE...
32
Início/
Sinc
Disp. Controle Dados do Acelerômetro Movimento do Carrinho
U 1 L Aceleração >= 30 Frente – Lento
U 1 S Ace...
33
Figura 3.10 – Máscara de solda da placa de circuito impresso feita com o Orcad®.
A placa leva em consideração algumas c...
34
Figura 3.11 – Formato Gerber do projeto.
Com o auxílio do arquivo Gerber, a placa foi fabricada no Instituto de
Estudos...
35
3.8 Circuito de reset
O circuito de reset é responsável por restabelecer as configurações
predefinidas no momento da gr...
36
bateria de 12 volts. O esquema de ligação do regulador pode ser visto na Figura
3.14 abaixo.
Figura 3.14 – Diagrama de ...
37
terminais é ligado a uma das placas do comutador, sendo que a rotação do motor
pode ser mudada simplesmente mudando o t...
38
Figura 3.17 – Servomotor utilizado no projeto.
Servomotor é um dispositivo eletromecânico que possui uma parte fixa
(es...
39
Figura 3.19 – Operação do servomotor conforme a variação da largura do pulso.
3.12 Funcionamento do software do smartph...
40
A utilização do teclado do celular não é necessária, visto que, o
carrinho opera de acordo com os dados do sensor de mo...
41
É importante descrever o funcionamento da máquina de estados
(APÊNDICE G) programada no BSM8, pois este processo é fund...
42
4 TESTES E RESULTADOS
Os testes foram essenciais para o desenvolvimento do projeto e partir
de cada fase foi possível d...
43
O byte inicial foi utilizado para identificar o início da transmissão e
realizar o sincronismo. O segundo byte informa ...
44
padrão de erros e através do caractere U, foi possível verificar uma onda quadrada
simétrica no osciloscópio e desenvol...
45
5 CONCLUSÃO
Através dos testes executados observou-se que os sinais enviados
pelo smartphone foram recebidos e interpre...
46
sensores de movimento podem contribuir consideravelmente
para esta inclusão.
• Modificar o modelo de comunicação entre ...
47
REFERÊNCIAS
DELTORO, Vincent. Fundamentos de Máquinas Elétricas. Rio de Janeiro: LTC,
1999.
ERCEGOVAC, Milos; LANG, Tom...
48
Programming with Python for series 60 platform. Informação técnica. Disponível em:
<http://www.mobilenin.com/pys60/reso...
49
WILLIAMS, AL. Microcontroller Projects Using the Basic Stamp. 2nd
ed.
Lawrance, Kansas: CMP Books, 2002.
50
APÊNDICE A – CIRCUITO COMPLETO
A Figura a seguir, mostra todos os componentes eletrônicos
interligados em seus respecti...
51
APÊNDICE B – ESTIMATIVA DE CUSTOS E LISTA DE MATERIAIS
A tabela abaixo mostra os gastos estimados para a realização do
...
52
APÊNDICE C – PLACA COM OS COMPONENTES SOLDADOS
53
APÊNDICE D – PROGRAMA DO MICROCONTROLADOR EM BASIC
O código a seguir pertence à implementação das rotinas para o
microc...
54
IF disp = aceleracao THEN
estado = stddados
ELSE
IF disp = direcao THEN
estado = stddados
ELSE
IF disp = frame1 THEN
es...
55
PWMB THRESHOLD 255
PWMB INIT 50,8
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
ELSE
'Posiciona o servo +ou- 11h, 1300 us
I...
56
ENDIF
ENDIF
LOOP
'--------------------------------------------------
' Rotina de interrupção para receber dados da UART...
57
APÊNDICE E – SCRIPT DO CELULAR EM PYS60
O código a seguir pertence à implementação das rotinas para o celular.
# Módulo...
58
desenha_y = y
desenha_z = z
#
---------------------------------------------------------------------------
-------------...
59
#
---------------------------------------------------------------------------
----------------------
# Desenhando
# Lim...
60
target='' # pode-se utilizar o endereço do Bluetooth do carrinho
if not target:
# Procurar dispositivos Bluetooth
addre...
61
cur_data[i] /= 5
dacelerometro(-cur_data[1]/5,-cur_data[0]/5,-cur_data[2]/5)
#
----------------------------------------...
62
APÊNDICE F – PROTÓTIPO DESENVOLVIDO
63
APÊNDICE G – DIAGRAMA DE ESTADOS – SOFTWARE DO CONTROLADOR
64
APÊNDICE H – DIAGRAMA DE BLOCOS – SOFTWARE DO CELULAR
65
Próximos SlideShares
Carregando em…5
×

TG_AccelerCar

31 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
31
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

TG_AccelerCar

  1. 1. Universidade Paulista Instituto de Ciências Exatas e Tecnologia Graduação em Engenharia da Computação André Henrique Nogueira Danilo da Silva Junqueira Estiven Koo Uryu Wislan Alandes de Lima Arruda ACCELERCAR: Carrinho Controlado pelo Sensor de Movimento do Celular via Bluetooth
  2. 2. São José dos Campos - SP 2010
  3. 3. André Henrique Nogueira Danilo da Silva Junqueira Estiven Koo Uryu Wislan Alandes de Lima Arruda ACCELERCAR: Carrinho Controlado pelo Sensor de Movimento do Celular via Bluetooth Trabalho de curso apresentado ao Instituto de Ciências Exatas e Tecnologia da Universidade Paulista – UNIP, campus de São José dos Campos, como parte dos requisitos necessários para a obtenção do título de Bacharel em Engenharia da Computação, sob orientação do Prof.º Rogério Moreira Cazo.
  4. 4. São José dos Campos - SP 2010
  5. 5. André Henrique Nogueira Danilo da Silva Junqueira Estiven Koo Uryu Wislan Alandes de Lima Arruda ACCELERCAR: Carrinho Controlado pelo Sensor de Movimento do Celular via Bluetooth Trabalho de curso apresentado ao Instituto de Ciências Exatas e Tecnologia da Universidade Paulista – UNIP, campus de São José dos Campos, como parte dos requisitos necessários para a obtenção do título de Bacharel em Engenharia da Computação, sob orientação do Prof.º Rogério Moreira Cazo. _______________________________________________________ Prof.º Francisco de Assis Corrêa - UNIP _______________________________________________________ Prof.º Marcelo Assis - UNIP _____________________________________ Prof.º Rogério Moreira Cazo - UNIP
  6. 6. 27 / 10 / 2010 Data da aprovação
  7. 7. Dedicamos este trabalho aos nossos pais, familiares e amigos por estarem presentes em nossas vidas, diante da concretização do nosso sonho de se tornar Engenheiros.
  8. 8. “O segredo do sucesso é não escutar ninguém. O segredo do sucesso é ser você do seu jeito e seguir a sua alma”. Gasparetto
  9. 9. AGRADECIMENTOS Agradecemos primeiramente ao nosso orientador Rogério Moreira Cazo, pela sua auto-estima, simplicidade e motivação em auxiliar nossa jornada neste ano. Ao apoio de todos os professores da Universidade Paulista (UNIP), juntamente com nosso coordenador do curso de Engenharia da Computação Francisco de Assis Corrêa. Agradeço o meu grupo pela força de vontade e fé que colocamos uns nos outros. Pela união da sala na reta final, deixando de lado todas as indiferenças. Grato a todos que contribuíram positivamente pela conclusão de todas as tarefas e metas que propusemos para este ano de 2010 e todos os cinco anos de nossas vidas nesta universidade.
  10. 10. RESUMO O crescimento da utilização de aparelhos móveis vem superando as expectativas do mercado ano após ano. Em virtude deste crescimento, novos recursos são desenvolvidos como sensor de movimento no celular. Dentre os diversos fatores que geram competitividade no mercado de eletrônicos, o Bluetooth foi escolhido para integrar este projeto por possuir baixo custo e fácil empregabilidade. O projeto permite conduzir um carrinho de controle remoto, adaptado, utilizando os recursos de um smartphone. Baseado no smartphone N95 com Sistema Operacional Symbian foi desenvolvido um programa (script) na linguagem Python série 60, dedicada especialmente para celulares com este tipo de sistema. A programação controla os recursos do Bluetooth e do acelerômetro do celular. O acelerômetro irá identificar a direção e a aceleração pelos movimentos de inclinação do smartphone, enquanto o Bluetooth enviará os dados coletados ao carrinho através de um formato de pacote próprio, criado para o projeto AccelerCar. O sistema embarcado desenvolvido para o brinquedo irá interpretar estas mensagens ou pacotes e executar o controle, ou seja, o módulo de Bluetooth irá transmitir as mensagens recebidas ao microcontrolador através de uma conexão serial. Este, por sua vez, possui uma máquina de estados para identificar cada byte recebido e formar a mensagem original. Quando um pacote é lido corretamente, o microcontrolador envia os sinais adequados para controlar os motores. Palavras-chave: Bluetooth. Microcontrolador. Smartphone. Nokia N95. Acelerômetro.
  11. 11. ABSTRACT The main objective is to design and implement a system that can handle a cart by tilting movements of a mobile phone via Bluetooth connection. The growing use of mobile phones has surpassed the expectations of the market year after year. Because of that growth, new technologies are developed to attract the consumer, such as using motion sensors and Bluetooth. Among several factors that create competitiveness in the electronics market, the Bluetooth was chosen to join this project because it has low cost and designers-friendly. The design allows for driving a remote control car, adapted, using the resources of a smartphone. Based on the N95 smartphone with Symbian OS was developed a program (script) in the Python series 60, specially designed for mobile phones with this system. The program involves the capabilities of accelerometer and Bluetooth cell phone. The accelerometer will identify the direction and acceleration by tilting movements of the smartphone, while the Bluetooth send the collected data to the cart through a package format itself, created for AccelerCar. The embedded system developed for the toy will interpret these messages or packages and run the control, what means, the Bluetooth module will forward incoming messages to the microcontroller via a serial connection. This, in turn, has a state machine to identify each incoming byte to form the original message. When a packet is successfully read, the microcontroller sends the appropriate signals to control the motors. Key words: Bluetooth. Microcontroller M8. Smartphone. Nokia N95
  12. 12. LISTA DE ILUSTRAÇÕES Figura 2.1 – Modelo de comunicação Master e Slave.............................................18 Figura 2.2 – Smartphone Nokia N95........................................................................19 Figura 2.3 – Comparação do acelerômetro LIS302DL com uma moeda................20 Figura 3.1 – Software do Compilador Basic Step M8...............................................24 Figura 3.2 – Pinagem BSM8 na janela de ajuda....................................................24 Figura 3.3 – Microcontrolador Basic Step M8...........................................................25 Figura 3.4 – Pinagem dos conectores DB9 e DB25.................................................26 Figura 3.5 – (a) Referência eixo X máximo positivo, (b) Referência eixo X máximo negativo..................................................................................................27 Figura 3.6 – (a) Referência eixo Y máximo positivo, (b) Referência eixo Y máximo negativo..................................................................................................27 Figura 3.7 – (a) Referência eixo Z máximo positivo, (b) Referência eixo Z máximo negativo..................................................................................................28 Figura 3.8 – Pinagem do Módulo Bluetooth..............................................................29 Figura 3.9 – Estrutura do Pacote de Controle...........................................................30 Figura 3.10 – Máscara de solda da placa feita com o Orcad®...................................31 Figura 3.11 – Formato Gerber do projeto...................................................................32 Figura 3.12 – (a) Cobre na parte superior da placa, (b) Cobre na parte inferior da placa.....................................................................................................33 Figura 3.13 – Reset Power-on com tensão de 5 volts e um resistor de 1k................33 Figura 3.14 – Diagrama de blocos internos do LM7805 e ligação típica....................34 Figura 3.15 – Esquema de alimentação do sistema...................................................34 Figura 3.16 – Esquema usando o circuito LMD18200 para controlar o motor DC.....35 Figura 3.17 – Servomotor utilizado no projeto............................................................36 Figura 3.18 – Esquema para o servomotor.................................................................36 Figura 3.19 – Operação do servomotor conforme a variação da largura do pulso....37 Figura 4.1 – Protocolo de comunicação com problemas de sincronismo................40
  13. 13. LISTA DE TABELAS Tabela 3.1 – Controle de dados..................................................................................30
  14. 14. LISTA DE ABREVIATURAS E SIGLAS ABNT Associação Brasileira de Normas Técnicas AD Analog Digital API Application Programming Interface BSM8 Microcontrolador Basic Step M8 DC Direct Current EEPROM Electrically Erasable Programmable Read Only Memory FH-CDMA Frequency Hopping – Code Division Multiple Access GPS Global Positioning System I/O Input/Output IEAv Instituto de Estudos Avançados IEEE Institute of Electrical and Electronics Engineers ISM Industrial, Scientific and Medicine MEMS Micro Electro Mechanical Systems MMS Multimedia Messaging Service PAN Personal Area Network PCM Pulse Code Modulation PSF Python Software Foundations PWM Pulse Width Modulation PyS60 Python Série 60 RAM Random Access Memory ROM Read Only Memory SMS Short Message Service S.O. Sistema Operacional TDD Time Division Duplex UART Universal Asynchronous Receiver Transmitter uC Microcontrolador UNIP Universidade Paulista USB Universal Serial Bus WI-FI Wireless Fidelity
  15. 15. LISTA DE SÍMBOLOS mW miliwatt KB Kilobyte GHz Giga-hertz - Um bilhão de ciclos por segundo µs Microssegundo kΩ kilo ohm bps bits por segundo
  16. 16. SUMÁRIO 1 INTRODUÇÃO ......................................................................................................14 1.1 Objetivo do trabalho..................................................................................14 1.2 Justificativa do trabalho............................................................................15 1.3 Estrutura do trabalho.................................................................................15 2 FUNDAMENTAÇÃO TEÓRICA ...........................................................................16 2.1 Microcontrolador........................................................................................16 2.2 Tecnologia Bluetooth ................................................................................16 2.2.1 Frequência e Comunicação..............................................................17 2.2.2 Redes Bluetooth................................................................................18 2.3 Smartphone Nokia N95..............................................................................19 2.3.1 Sistema Operacional Symbian..........................................................19 2.3.2 Acelerômetro.....................................................................................20 2.4 Python .........................................................................................................21 2.4.1 Python Série 60.................................................................................21 2.5 Linguagem Basic .......................................................................................22 3 PROJETO E DESENVOLVIMENTO.....................................................................23 3.1 Visão Geral..................................................................................................23 3.2 Compilador Basic Step M8........................................................................23 3.3 Microcontrolador Basic Step M8...............................................................24 3.4 Nokia N95.....................................................................................................26 3.4.1 Referências de orientação do sensor...............................................26 3.5 Módulo Bluetooth.......................................................................................28 3.6 Protocolo.....................................................................................................29 3.7 Placa de circuito impresso........................................................................31 3.8 Circuito Reset..............................................................................................33 3.9 Regulador de tensão..................................................................................34 3.10 Ponte H e circuito do motor DC..............................................................35 3.11 Servomotor................................................................................................35
  17. 17. 3.12 Funcionamento do software do smartphone........................................37 3.13 Funcionamento do software do BSM8...................................................38 4 TESTES E RESULTADOS....................................................................................40 4.1 Testes de hardware do projeto.................................................................40 4.2 Comunicação entre dispositivos..............................................................40 5 CONCLUSÃO........................................................................................................43 5.1 Sugestões para trabalhos futuros............................................................43 REFERÊNCIAS...........................................................................................................45 APÊNDICE A – Circuito completo..............................................................................47 APÊNDICE B – Estimativa de custos e lista de materiais..........................................48 APÊNDICE C – Placa com os componentes soldados..............................................49 APÊNDICE D – Programa do microcontrolador em Basic.........................................50 APÊNDICE E – Script do celular em PyS60...............................................................54 APÊNDICE F – Protótipo desenvolvido......................................................................59 APÊNDICE G – Diagrama de estados – Software do controlador.............................60 APÊNDICE H – Diagrama de blocos – Software do celular.......................................61
  18. 18. 14 1 INTRODUÇÃO O celular hoje em dia é um dos produtos mais utilizados no mundo e a competição para desenvolvimento de novas tecnologias busca inovação e baixo custo. A tecnologia Bluetooth possui uma forma segura e barata para comunicação sem fios entre dispositivos próximos (tipicamente 10 metros) com a mesma tecnologia. Permite desenvolver diversas aplicações, entre computadores e celulares, além de eliminar cabos entre os dispositivos como smartphones, headsets, desktops, câmeras digitais e outros (BRAGA, 2001, p.4). Nas aplicações como controles remotos, brinquedos e celulares são encontradas microcontroladores capazes de gerenciar e automatizar as funções do sistema. A integração do projeto Accelercar utiliza um microcontrolador Basic Step M8, que será responsavel pelo controle da direção e aceleração do carrinho de brinquedo a partir de sinais Bluetooth enviados de um smartphone. O desenvolvimento do projeto utiliza tanto a parte de harware, quanto a de software. O Python Série 60 é empregada no desenvolvimento do sofware do smartphone para enviar os comandos de direção e aceleração do carrinho de brinquedo. Os comandos serão interpretados e enviados via Bluetooth para o modulo de Bluetooth do carrinho. O microcontrolador será capaz de tratar os sinais e controlar o brinquedo. Para o desenvolvimento do software do microcontrolador, foi implementado a linguagem Basic. 1.1 Objetivo do trabalho O desenvolvimento do projeto Accelercar tem como objetivo controlar um carrinho de brinquedo pelo smartphone da Nokia. O usuário irá fornecer os dados de direção e aceleração de acordo com a inclinação no smartphone, que serão transmitidas para o carrinho via Bluetooth. O carrinho irá executar os dados recebidos a partir dos movimentos aplicados no smartphone.
  19. 19. 15 1.2 Justificativa do trabalho A crescente utilização de dispositivos móveis e a capacidade de integração entre diferentes tipos de tecnologia para: • Promover o emprego do Bluetooth para comunicação e controle de equipamentos eletrônicos; • Utilizar o Python série 60 para criar novas aplicações atrativas aos usuários de smartphone; • Integração de Hardware e Software no desenvolvimento de projetos no ramo da Engenharia da Computação. 1.3 Estrutura do trabalho O trabalho foi dividido em tópicos seqüenciais, onde o leitor poderá ter uma visão clara e objetiva do tema abordado. O Capítulo 2 possui informações teóricas sobre o projeto, como Microcontrolador, tecnologia Bluetooth, recursos do smartphone, linguagem Python e linguagem Basic. Após a fundamentação teórica, o Capítulo 3 apresenta as ferramentas e dispositivos utilizados no desenvolvimento, como, compilador para microcontrolador Basic Step M8 (BSM8), dados técnicos sobre o BSM8, smartphone N95, protocolo, placa de circuito impresso, circuito reset regulador de tensão, ponte H e motores. O Capítulo 4 contém informações detalhadas sobre os testes e resultados obtidos para a elaboração do protótipo. A conclusão no Capítulo 5 detalha o objetivo e resultados obtidos no desenvolvimento do projeto. É importante lembrar a relação dos elementos textuais citados ao decorrer do trabalho para auxiliar uma busca futura mais detalhada. Os apêndices, ilustrações, siglas, abreviaturas, tabelas e referências estão apresentados ao decorrer do projeto.
  20. 20. 16 2 FUNDAMENTAÇÃO TEÓRICA Para o desenvolvimento deste trabalho foi necessária a aplicação de diversas tecnologias. A integração de um microcontrolador para controle das funções de aceleração e direção do carrinho de brinquedo. A tecnologia Bluetooth responsável pela comunicação dos dispositivos entre o smartphone e o carrinho. Além das linguagens utilizadas para desenvolver o software do projeto como Python Série 60 e Basic. 2.1 Microcontrolador Os microcontroladores são poderosos mecanismos de controle que englobam em um só chip os diversos elementos de um computador, por isso estão presentes na maioria dos equipamentos que utilizamos (WILLIAMS, 2002). No entanto, acaba passando despercebidos por executarem tarefas que não requerem esforço do utilizador, como aquecer algum alimento em um forno de microondas ou simplesmente mudar o canal da televisão pelo controle remoto. É importante ressaltar que existe uma grande diferença entre microprocessadores e microcontroladores. Todavia, ambos são responsáveis pelo processamento dos dados e possuem componentes lógicos e aritméticos para realização dos cálculos, além de uma memória interna chamada de registradores (WILLIAMS, 2002). Os microcontroladores integram as diversas funções de um computador completo dentro do mesmo chip, como memória de acesso aleatório (RAM), memória somente de leitura (ROM), temporizadores, contadores, portas de entrada e saída (I/O), entre outras. Atualmente, existem diversos tipos de microcontroladores, alguns com mais funções e outros mais simples, sua escolha depende da aplicação que será desenvolvida. Já os microprocessadores dependerão que estes recursos estejam presentes em placas externas para formar um computador, a grande vantagem neste caso é a alta capacidade de processamento e expansibilidade.
  21. 21. 17 2.2 Tecnologia Bluetooth Bluetooth é o nome dado a tecnologia que possui um padrão global de comunicação sem fio e de baixo consumo de energia permitindo a transmissão de voz e dados entre dispositivos. Com este padrão é possível: • Eliminar todo tipo de fios e cabos para interligar dispositivos fixos ou móveis; • Comunicação simplificada (voz e dados); • Criar rede pessoal entre dispositivos, com a Rede de Área Pessoal (PAN), sem a necessidade de interligações físicas (MORIMOTO, 2008). A comunicação é feita através de rádio frequência, respeitando a distância limite para detectar a conexão, independente de sua posição de origem. 2.2.1 Frequência e comunicação A classificação do Bluetooth foi dividida em três classes para atender os mais variados tipos de dispositivos, são elas: • Classe 1: potência máxima de 100 mW, com alcance de até 100 metros; • Classe 2: potência máxima de 2,5 mW, com alcance de até 10 metros; • Classe 3: potência máxima de 1 mW, com alcance de até 1 metro. O Instituto de Engenheiros Eletricistas e Eletrônicos (IEEE) estabeleceu o padrão Bluetooth IEEE 802.15.1, usado mundialmente em sistemas móveis e de curta distância (HAARTSEN, 2000). A transmissão utiliza ondas de rádio, opera na faixa de 2,4 GHz a 2,48 GHz da banda Industrial, Científico e Medicinal (ISM).
  22. 22. 18 O Bluetooth não pode gerar e nem sofrer interferências, por isso, utiliza Acesso Múltiplo por Divisão de Freqüência (FH-CDMA). Este faz com que a frequência seja dividida em vários canais e a conexão vá mudando de um canal para o outro de uma forma muito rápida, chamada salto de frequência (FH), obtendo então, uma largura de banda de frequência muito pequena e assim, diminuindo as chances de interferência. Neste caso, os transmissores alteram a frequência 1.600 vezes por segundo, essa mesma técnica minimiza o risco de interferência de telefones portáteis ou babás eletrônicas nos dispositivos que estão usando o Bluetooth, já que qualquer interferência em uma frequência particular dura somente uma fração de segundo. 2.2.2 Redes Bluetooth A partir da comunicação entre dois ou mais dispositivos, uma rede é formada e denominada Piconet. Assim, o dispositivo que iniciou a comunicação assume o papel de Master (mestre), enquanto os demais se tornam Slave (escravo). O Master tem a função de regular a transmissão de dados entre a rede e o sincronismo entre os dispositivos (MORIMOTO, 2008). A unidade Master só pode transmitir seus dados nos slots de tempo pares, enquanto que as demais só podem transmitir nos slots ímpares. Sua numeração é dada através do clock do Master. O início de transmissão de um pacote deve estar alinhado com o início do slot de tempo associado (HAARTSEN, 2000). A Figura 2.1 mostra a transmissão e a recepção de pacotes de forma alternada no tempo, técnica conhecida como Comunicação por Divisão de Tempo (TDD).
  23. 23. 19 Figura 2.1 – Modelo de comunicação Master – Slave. 2.3 Smartphone Nokia N95 O smartphone é um celular bastante popular, devido ao recurso multimídia implantado, juntamente com um Sistema Operacional poderoso. Ao passar dos anos foram desenvolvidos diversas aplicações úteis para o celular. Hoje em dia, ouvir música, usar Bluetooth e muito comum entre os usuários (MORIMOTO, 2009). A Figura 2.2 demonstra o N95, um smartphone desenvolvido pela Nokia com tecnologia 3G que permite incorporar redes de acesso à internet em alta velocidade e vídeo-telefonia. Utiliza o Sistema Operacional Symbian 9.2. O aparelho possui tecnologia sem fio Bluetooth 2.0 para se comunicar com demais aparelhos. Possui também um acelerômetro capaz de controlar algumas aplicações do celular pelo movimento do mesmo.
  24. 24. 20 Figura 2.2 – Smartphone Nokia N95. 2.3.1 Sistema Operacional Symbian Sistema operacional desenvolvido especialmente para celulares, usados na maioria dos smartphones modernos. Possibilita o controle de câmeras fotográficas, Serviço de Mensagem Multimídia (MMS), Bluetooth, Sistema de Posicionamento Global (GPS) e outras funções, além de gerenciar a energia da bateria (MORIMOTO, 2009). Criado pelas empresas Nokia, Siemens, Samsung, Ericsson, Sony Ericsson e Panasonic, possui as seguintes vantagens: • É um sistema aberto e de baixo custo. • Possui recursos para gerenciar e utilizar pouca bateria e memória. • Permite a instalação de softwares de terceiros. • Baseado em padrões de comunicação e dados. 2.3.2 Acelerômetro Tecnologia baseada em Sistemas Mecânicos Microeletrônicos (MEMS), usados no campo da tecnologia analógica. O acelerômetro é um sensor sofisticado, porém, com um princípio simples baseado na Segunda Lei de Newton,
  25. 25. 21 onde o produto da massa do corpo pela sua aceleração resulta na força aplicada. Os sensores MEMS utilizam este conceito para poder medir a aceleração e a vibração em até três eixos. A cada movimento do sensor, os elementos móveis que estão associados aos eixos são medidos e convertidos num sinal analógico ou digital (MORIMOTO, 2009). O smartphone N95 está equipado com um circuito baseado na tecnologia MEMS, chamado LIS302DL, que pode ser visto na Figura 2.3. É um sensor compacto e de baixa potência ideal para os portáteis (MORIMOTO, 2009). Figura 2.3 – Comparação do acelerômetro LIS302DL com uma moeda. Como o acelerômetro é sensível ao movimento, permite controle e posicionamento automático da imagem, alterando faixas de música e controlando jogos. 2.4 Python Python é uma linguagem de programação orientada a objetos e de alto nível. Utilizada por vários usuários ao redor do mundo é uma alternativa para iniciantes em programação. Atualmente a organização sem fins lucrativos Python Software Foundations (PSF) gerencia a estabilidade da linguagem Python. Lançada no final de 1990, por Guido Van Rossum, sucessora da linguagem ABC de programação, visando à produtividade do programador e, atualmente encontra se na versão 3.1.2 (Fonte: Python.org, 2010). Com uma estrutura dinâmica e interativa, combina recursos poderosos de sua biblioteca padrão. Pode ser criado em qualquer editor de texto, desde que
  26. 26. 22 respeite a sintaxe, pois é lida linha a linha por um interpretador. Para projetos complexos não é necessário centenas ou milhares de linhas, usando scripts simples podemos criar grandes aplicações, além do suporte para vários sistemas operacionais, simplificação na manutenção e normalização dos módulos (Fonte: Python.org, 2010). 2.4.1 Python série 60 Software de interface para smartphone que funciona no Sistema Operacional Symbian, foi desenvolvido pela Nokia e está entre as mais usadas pelo mundo nesse setor. O uso desta linguagem permite o acesso aos recursos do aparelho, como: • Bluetooth; • Câmeras; • Enviar e receber arquivos pelo Bluetooth; • Acesso ao acelerômetro; • Agenda de contatos; • Serviço de Mensagens Curtas (SMS). Conhecida também como PyS60, a distribuição do software é Open Source (Código Aberto), possui diversos módulos de controle. Os módulos integrados implementam recursos especiais embutidos no Sistema Operacional Symbian, enquanto o módulo dinâmico fornece controle as Interface de Programação de Aplicativos (API) do sistema (MORIMOTO, 2009). 2.5 Linguagem Basic Linguagem de programação de alto nível criada, em 1964, pelos professores John George Kemeny e Thomas Eugene Kurtz em Dartmouth College. Com comandos simples e de uso geral, seu aprendizado pode ser considerado fácil
  27. 27. 23 para iniciantes. Atualmente podemos encontrar sucessores desta linguagem como Visual Basic da Microsoft. A sua sintaxe é próxima do inglês corrente e possui parte da simbologia matemática tradicional. É possível desenvolver aplicações simplificadas em comparação com outras linguagens como a linguagem de programação C. (Fonte: BASIC, 2010).
  28. 28. 24 3 PROJETO E DESENVOLVIMENTO Neste capítulo está descrito a característica e ferramentas utilizadas para implementação do projeto Accelercar. Inclui características tanto no desenvolvimento do hardware que ficará no carrinho, quanto do software desenvolvido para o smartphone e microcontrolador. O protótipo pode ser visualizado no APÊNDICE F. 3.1 Visão geral O projeto Accelercar utiliza um carrinho de controle remoto convencional e um smartphone N95 da Nokia. Ao longo do desenvolvimento o carrinho foi desmontado e novos componentes foram adicionados, como servomotor e placa do circuito elétrico. A parte original do carrinho é composta pelo motor de Corrente Contínua (DC), a estrutura e as rodas. Foi criado um software em Python série 60, para o smartphone funcionar como um controle remoto. 3.2 Compilador Basic Step M8 O fabricante Tato Equipamentos Eletrônicos disponibiliza um compilador para a linha de microcontroladores Basic Step M8, que pode ser encontrado em seu site. O compilador permite ao usuário desenvolver aplicações em linguagem C ou Basic, além de ser utilizado em outros modelos de microcontroladores oferecidos pela mesma empresa. A Figura 3.1 demonstra a tela inicial do compilador. Entre os recursos do compilador, a janela de ajuda possui informações sobre a pinagem do microcontrolador, além dos comandos em Basic.
  29. 29. 25 Figura 3.1 – Software do Compilador Basic Step M8. A Figura 3.2 apresenta o arquivo de ajuda com as instruções e informações do microcontrolador. Figura 3.2 – Pinagem BSM8 na janela de ajuda. 3.3 Microcontrolador Basic Step M8 O Basic Step M8 é um tipo de microcontrolador muito versátil que pode ser empregado nos mais diversos tipos de automação e controle através de linguagens poderosas para a plena utilização de sua funcionalidade. Ele possui 8 KB
  30. 30. 26 de memória programável do tipo Flash, 512 bytes de Memória Somente de Leitura Programável e Apagável Eletricamente (EEPROM), 1 KB de memória RAM, 3 portas que podem ser configuradas como entrada ou saída, chamadas porta B, C e D, além de 2 pinos de conversor analógico / digital. Todavia, configurações alternativas podem ser feitas, como utilizar todos os pinos da porta C como conversores Analógico-Digital (AD), os pinos D0 e D1 como entrada e saída serial, respectivamente, entre outras. Como pode ser visto na Figura 3.3, o Basic Step M8 possui ainda 4 pinos em sua parte superior que são utilizados para gravação do mesmo, através da utilização de um cabo com entrada serial distribuído pelo próprio fabricante (Fonte: TATO.ind, 2010). Figura 3.3 – Microcontrolador Basic Step M8. O programa utilizado para gravá-lo pode ser adquirido no site do fabricante e está incluído dentro do compilador, facilitando o processo de desenvolvimento e gravação. As linguagens de programação utilizadas por este compilador são o Basic ou o C. Existe, ainda, a possibilidade de utilizar compiladores externos. O cabo de gravação do BSM8, também funciona como cabo de comunicação serial com o PC, pois o compilador possui uma tela de terminal que pode ser utilizada para enviar ou receber, e visualizar os dados transmitidos. A
  31. 31. 27 conexão serial para conectores DB9 e DB25 pode ser visualizada nas figuras abaixo: Figura 3.4 – Pinagem dos conectores DB9 e DB25. 3.4 Nokia N95 O aparelho Nokia N95 foi escolhido por conter um sensor, conhecido como acelerômetro, que informa a orientação do aparelho, além de ter integrado a tecnologia Bluetooth e possuir diversos recursos de um smarphone moderno. A orientação do sensor de movimento é definida pelos eixos X, Y e Z. Sendo que cada um pode assumir um valor inteiro no intervalo de -60 a 60. Os valores podem ser utilizados para diversas aplicações que dispensa o uso do teclado numérico e permite a utilização do acelerômetro. Alguns jogos podem utilizar ambas tecnologias. 3.4.1 Referências de orientação do sensor
  32. 32. 28 A Figura 3.5 (a) mostra como obter o valor máximo positivo referente ao eixo X, o telefone deve estar na horizontal apontado à direita e, para o valor negativo deve estar no sentido oposto como na Figura 3.5 (b). Figura 3.5 – (a) Referência eixo X máximo positivo, (b) Referência eixo X máximo negativo. Os dados do eixo X não são utilizados na estrutura do pacote de controle enviado ao carrinho, pois a implementação de direção e aceleração foi validade com apenas 2 eixos. Observando a Figura 3.6 (a) é possível notar como obter o valor máximo positivo referente ao eixo Y, ou seja, posicionar o telefone na vertical apontando para cima. O valor negativo é obtido apontando o celular para baixo de acordo com a Figura 3.6 (b). O eixo Y é utilizado para atribuir os valores à direção do carrinho, ou seja, fazer com que o carrinho vire á esquerda, à direita ou mantenha à frente (ver Tabela 3.1). No projeto, o valor do acelerômetro neste eixo foi multiplicado por três, a fim de, movimentar o ponto desenhado, como referência, por toda a tela e aumentar a velocidade do mesmo. (a) (b)
  33. 33. 29 Figura 3.6 – (a) Referência eixo Y máximo positivo, (b) Referência eixo Y máximo negativo. As Figuras 3.7 (a) e 3.7 (b) demonstram como obter o valor máximo referente ao eixo Z. Quando o telefone é posicionado deitado com o visor para baixo é obtido o valor positivo e com o visor para cima o valor negativo. O eixo Z é utilizado para atribuir os valores à aceleração do carrinho, ou seja, controlar a velocidade do torque e os sentidos frente ou ré (ver Tabela 3.1). No projeto, o valor do acelerômetro neste eixo foi multiplicado por dois, para atingir o mesmo objetivo explicado no eixo anterior. Figura 3.7 – (a) Referência eixo Z máximo positivo, (b) Referência eixo Z máximo negativo. 3.5 Módulo Bluetooth (a) (b) (a) (b)
  34. 34. 30 O projeto utiliza o circuito GL-6B, módulo de Bluetooth classe 2 com Chipset AudioRom fornecido pela Cambridge Silicon Radio. Utiliza um Transmissor e Receptor Universal Assíncrona (UART) de 9600bps, 1 start bit, 8 bits de dados e 1 stop bit para formar o padrão de comunicação. A única restrição e a chave de acesso para estabelecer a comunicação que pode ser utilizada a numeração 0000 ou 1234. O módulo de Bluetooth trabalha com a tensão de entrada em 3,3 volts e possui as portas de controle, principalmente as responsáveis pela comunicação dos dados, como o pino 1 e 2. A Figura 3.8 é apresenta a pinagem do módulo de Bluetooth. Figura 3.8 – Pinagem do Módulo Bluetooth. 3.6 Protocolo O protocolo (HALSALL, 1996) de comunicação Padrão Recomendado 232 (RS-232) é o mais utilizado para o desenvolvimento de aplicações entre os computadores, ou entre diversos dispositivos, inclusive o celular. O padrão RS-232 foi utilizado para a comunicação do módulo de Bluetooth com o microcontrolador, permitindo que os pacotes com as mensagens fossem enviados pelo smartphone e
  35. 35. 31 reconhecido pelo microcontrolador. Os scripts desenvolvidos para ambos, podem ser visualizados no APÊNDICE E e APÊNDICE D respectivamente. A Figura 3.9 apresenta o pacote com a mensagem desenvolvida para sincronizar o software do celular com o microcontrolador. É formado por 3 bytes, que identificam o inicio da transmissão (sincronização), dispositivo a ser acionado e valores a serem atribuídos. Todos os pacotes enviados do celular possuem o primeiro byte com o caractere "U", que determina o inicio de transmissão e é responsável para iniciar a sincronização das mensagens. O segundo byte recebe o caractere “1” ou “9”, para representar o dispositivo a ser acionado, aceleração ou direção respectivamente. O último byte determina os valores para controlar a aceleração e a direção de acordo com a posição do smartphone determinada pelo acelerômetro. Início/Sinc Dispositivo Controle Figura 3.9 – Estrutura do Pacote de Controle Além do controle básico, foram implementados na programação dois modos de operação, para determinar a velocidade de operação do carrinho. As operações são modo normal é modo turbo. O modo normal é o funcionamento normal do programa, em que a velocidade e torque são reduzidos e o modo turbo, usa a capacidade máxima do motor. Para alternar o modo de operação basta pressionar a tecla número cinco do aparelho, é importante ressaltar que a aplicação é iniciada no modo normal. Na tabela abaixo, pode-se conferir os bytes de dados de cada mensagem enviada pelo celular ao carrinho de acordo com a informação captada pelo acelerômetro: Tabela 3.1 – Controle de dados Início/ Sinc Disp. Controle Dados do Acelerômetro Movimento do Carrinho U 1 T Aceleração >= 90 Frente – Modo Turbo U 1 R Aceleração >= 60 Frente – Rápido
  36. 36. 32 Início/ Sinc Disp. Controle Dados do Acelerômetro Movimento do Carrinho U 1 L Aceleração >= 30 Frente – Lento U 1 S Aceleração <= -90 Ré – Modo Turbo U 1 3 Aceleração <= -60 Ré – Rápido U 1 2 Aceleração <= -30 Ré – Lento U 1 P Aceleração entre -30 e 30 Parado U 9 E Direção >= 60 Esquerda U 9 D Direção <= -60 Direita U 9 F Direção entre -60 e 60 Frente O APÊNDICE G mostra a seqüência de funcionamento do microcontrolador passando pelos estágios da máquina de estados para formar o pacote de controle exibido na tabela acima. 3.7 Placa de circuito impresso A placa de circuito impresso é responsável pelo acoplamento físico e organização dos componentes eletrônicos. Possui várias informações sobre tipos de componentes, posição, nome para cada item e as conexões entre os mesmos (OLIVEIRA, 2006). O desenvolvimento da placa para o carrinho foi gerado em um software de simulação e desenho chamado Orcad®. As conexões dos componentes utilizados podem ser visualizadas no APÊNDICE A e a estimativa de custos e lista de materiais encontram-se no APÊNDICE B. O programa permite gerar tanto as informações de posição quanto as dimensões de cada componente, conforme a Figura 3.10.
  37. 37. 33 Figura 3.10 – Máscara de solda da placa de circuito impresso feita com o Orcad®. A placa leva em consideração algumas características importantes descritas a seguir: • Espaço para todos os componentes; • Organização das trilhas para não ocorrer interferência; • Footprint dos componentes; • Informações sobre a ligação entre os componentes e os encapsulamentos (Netlist); • Formato dos terminais (Pads); O Orcad possibilita gerar arquivos no formato Gerber (arquivo padrão para fabricação industrial) com informações detalhas para sua confecção. A Figura 3.11 mostra as faces da placa e as camadas separadas por cor, além da tabela com as dimensões dos terminais.
  38. 38. 34 Figura 3.11 – Formato Gerber do projeto. Com o auxílio do arquivo Gerber, a placa foi fabricada no Instituto de Estudos Avançados (IEAv) em São José dos Campos. O circuito utiliza as duas faces, apresentadas nas Figuras 3.12 (a) e 3.12 (b). A placa recebeu uma proteção contra corrosão com uma solução utilizando Breu (resina) e álcool isopropílico antes da soldagem dos componentes. A placa final pode ser visualizada no APÊNDICE C. Figura 3.12 – (a) Cobre na parte superior da placa, (b) Cobre na parte inferior da placa. (a) (b)
  39. 39. 35 3.8 Circuito de reset O circuito de reset é responsável por restabelecer as configurações predefinidas no momento da gravação do código (OLIVEIRA, 2006). O Basic Step M8 possui internamente circuitos que controlam o que chamamos de Reset Power- on. A Figura 3.13 mostra o esquema utilizado na implementação do circuito reset. Figura 3.13 – Reset Power-on com tensão de 5 volts e um resistor de 1k. 3.9 Regulador de tensão Permite regular a tensão de saída para um sinal contínuo e razoavelmente estabilizada. Respeitando as especificações de entrada, alguns reguladores podem aceitar valores nominais variados ou a mesma tensão de saída (OLIVEIRA, 2006). Para alimentar o microcontrolador, foi utilizado um regulador de tensão linear LM7805, com saída de 5 volts. A tensão do circuito é alimentada por uma
  40. 40. 36 bateria de 12 volts. O esquema de ligação do regulador pode ser visto na Figura 3.14 abaixo. Figura 3.14 – Diagrama de blocos internos do LM7805 e ligação típica. A Figura 3.15 exibe o esquema elétrico para ligação do regulador de tensão TPS77833 junto com o regulador LMD7805. Figura 3.15 – Esquema de alimentação do sistema. 3.10 Ponte H e circuito do motor DC O motor de DC é responsável por movimentar o carrinho. Ele é formado por um rotor, comutador, escovas, eixo e um imã de campo. Motores de corrente contínua funcionam basicamente, devido às características do imã de atrair pólos opostos e repelir pólos iguais criando um movimento de rotação. Os eletroímãs são um conjunto de placas finas de metal unidas, com fios de cobre enrolados em volta de cada um dos pólos da armadura. As duas pontas de cada fio (um fio para cada pólo) estão soldadas em um terminal e então cada um dos
  41. 41. 37 terminais é ligado a uma das placas do comutador, sendo que a rotação do motor pode ser mudada simplesmente mudando o terminal da bateria (DELTORO, 1999). A Figura 3.16 mostra a ponte H do circuito responsável por receber os sinais de controle do microcontrolador e acionar o motor DC, definindo a aceleração e a direção de rotação do mesmo. Figura 3.16 – Esquema usando o circuito LMD18200 para controlar o motor DC. 3.11 Servomotor O servomotor utilizado neste projeto é da marca Hitec, modelo HS-311 síncrono. A principal vantagem com relação ao servomotor original do carrinho é a sua precisão de posicionamento e a forma como os sinais podem ser enviados para controlá-lo. A figura a seguir ilustra o servomotor utilizado.
  42. 42. 38 Figura 3.17 – Servomotor utilizado no projeto. Servomotor é um dispositivo eletromecânico que possui uma parte fixa (estator) e outro móvel (rotor). O estator é semelhante ao de uma máquina elétrica convencional, porém a diferença está na alimentação. O rotor é composto por imãs permanentes, os quais são posicionados alinhadamente sobre o rotor e com o controlador, ou gerador de sinais (DELTORO, 1999). Existe também o servoconversor, estes têm a função de controlar o fluxo eletromagnético e enviado para o servomotor, pois os fluxos oriundos da rede elétrica não apresentam uma conformidade adequada para o acionamento dos servos, sendo que cada servo motor possui seu próprio servoconversor especifico. O circuito de ligação do servomotor está descrito na figura abaixo. Figura 3.18 – Esquema para o servomotor. A posição e direção do eixo são controladas pela duração (largura) do pulso aplicado ao pino de controle do microcontrolador, chamado de Modulação por impulso codificado (PCM). O servomotor utilizado pode operar em até 180° ao receber pulsos entre 600 µs e 2400 µs, como está ilustrado na Figura 3.19.
  43. 43. 39 Figura 3.19 – Operação do servomotor conforme a variação da largura do pulso. 3.12 Funcionamento do software do smartphone O primeiro passo ao iniciar o aplicativo é importar as APIs ou os módulos do smartphone, a fim de manipular as funções do Sistema Operacional Symbian. Após isto, o software irá habilitar a utilização do teclado, definir um fundo branco e exibir a tela de seleção de dispositivos Bluetooth, que permite ao usuário escolher algum dispositivo conectado recentemente ou procurar outros. Tão logo o usuário escolha um dispositivo, o aplicativo inicia um processo para estabelecer uma conexão serial entre eles. Caso a conexão seja efetuada com sucesso, o aplicativo utiliza o áudio do aparelho para alertar o usuário que os dados começaram a ser enviados ao carrinho. Simultaneamente, a tela do aplicativo irá exibir um grid e um ponto de referência da posição captada pelo acelerômetro. As variáveis de direção e aceleração deverão receber os valores dos eixos Y e Z, respectivamente. No entanto, para que o ponto de referência se movimente mais rapidamente e por toda a tela, faz-se necessário a multiplicação do valor da direção por três e da aceleração por dois. As mensagens que serão enviadas ao carrinho são geradas verificando a posição do ponto de referência na tela, ou seja, o valor da aceleração e da direção, dependendo do modo de operação normal ou turbo. As mensagens enviadas já foram descritas neste documento (Tabela 3.1).
  44. 44. 40 A utilização do teclado do celular não é necessária, visto que, o carrinho opera de acordo com os dados do sensor de movimento do N95, mas algumas teclas realizam tarefas específicas e estão descritas a seguir: • Caso pressionada a tecla de Seleção Esquerda o menu do aplicativo deverá ser exibido; • Caso pressionada a tecla de Seleção Direita o programa deverá ser fechado; • Caso pressionada a tecla de Seleção de Itens o carrinho deverá parar imediatamente; • Caso pressionada a tecla número cinco o turbo deverá ser ativado ou desativado; • Caso pressionada a tecla estrela as informações captadas pelo sensor de movimento deverão ser impressas na tela juntamente com o valor da aceleração e direção. O fluxograma deste software pode ser visto na Figura XX abaixo. Figura XX Diagrama de Estados – Software do controlador 3.13 Funcionamento do software do BSM8 Inicial / Sincronismo Dispositivo Valor de controle U <> U 1, 9 U <> U, 1, 9 T / frente-turbo, R / frente-rápido, L / frente-lento, S / ré-turbo, 3 / ré-rápido, 2 / ré-lento, P / parado E / esquerda, D / direita, F / frente
  45. 45. 41 É importante descrever o funcionamento da máquina de estados (APÊNDICE G) programada no BSM8, pois este processo é fundamental para identificar o comando a ser executado pelo carrinho. Quando o celular envia uma mensagem ao módulo de Bluetooth do carrinho, a informação é transmitida byte a byte ao microcontrolador, gerando uma interrupção no processamento do mesmo para receber a nova informação. Como o pacote de controle é composto por três bytes, é necessário receber todos eles antes de enviar os sinais para os motores. O programação deste software pode ser encontrado no APÊNDICE D. O programa é iniciado assim que o carrinho é ligado à alimentação e as rotinas iniciais definem as portas do microcontrolador que serão utilizadas para controlar os motores. O próximo passo é a declaração de todas as variáveis que serão utilizadas no programa, bem como, a configuração da UART de recepção para uma taxa de 9600bps. Neste momento, é iniciado também um contador de tempo do controlador, que será utilizado para parar o carrinho caso nenhuma mensagem seja recebida pelo Bluetooth. A primeira verificação a ser realizada é se houve uma interrupção na porta de entrada serial e, caso positivo, se o byte foi recebido sem erros. Uma vez que estas verificações sejam verdadeiras, o programa entra no estado inicial e permanece neste até que o caractere “U” seja recebido. Quando então, o contador de tempo é reiniciado e o estado dispositivo é ativado. No estado dispositivo os caracteres de entrada admitidos são o “1” ou o “9” para ir ao próximo estado chamado controle. Caso o caractere “U” seja recebido novamente o estado permanece o mesmo, enquanto que valores diferentes destes reiniciam a máquina de estados. No estado de controle é verificado qual o dispositivo será controlado, para isto o caractere do estado anterior servirá como base. O pacote de controle para cada movimento do carrinho já foi descrito neste documento (Tabela 3.1).
  46. 46. 42 4 TESTES E RESULTADOS Os testes foram essenciais para o desenvolvimento do projeto e partir de cada fase foi possível determinar os aprimoramentos. 4.1 Testes de hardware do projeto Após o desenvolvimento do hardware, foram iniciados testes com alguns componentes do circuito. Inicialmente foi verificado o estado das trilhas na placa e soldagem dos reguladores de tensão LM7805C e TPS77833, responsáveis pela alimentação. Com a fonte de tensão e um multímetro fornecido pela UNIP, foi possível verificar os valores de tensão regulados com a entrada mínima de 12 volts. Ambos os reguladores de tensão atendiam a especificação do projeto, garantindo 5 e 3,3 volts respectivamente. O circuito foi montado com o restante dos componentes do projeto. O módulo de Bluetooth foi o primeiro circuito a ser testado, com relação à comunicação. Utilizando o smartphone com o software desenvolvido, foi possível estabelecer a conexão Bluetooth com o módulo. Para o motor DC e servomotor foram verificados os terminais alimentação. 4.2 Comunicação entre os dispositivos Os softwares desenvolvidos para celular e microcontrolador possuíam informações similares para estabelecer a comunicação. Inicialmente, o protocolo estabelecido, continha quatro bytes, conforme a Figura 4.1. Início/Sinc Dispositivo Dados CheckSum Figura 4.1 – Protocolo de comunicação com problemas de sincronismo.
  47. 47. 43 O byte inicial foi utilizado para identificar o início da transmissão e realizar o sincronismo. O segundo byte informa qual dispositivo deveria ser controlado, o motor DC ou o servomotor. Enquanto que o terceiro byte possuía os dados captados pelo acelerômetro. Por fim, o último byte era usado para a checagem de erros, composto pelo resto da divisão da soma dos demais bytes por duzentos e cinqüenta e seis. Os testes com o software desenvolvido não possuía um padrão e aleatoriamente o carrinho executava algumas ações. Para verificar os valores enviados e analisar os sinais recebidos pelo microcontrolador, foi necessário utilizar um osciloscópio digital, para testar os sinais enviados e determinar um padrão na comunicação Realizando vários testes com o osciloscópio e variações no código fonte do celular e microcontrolador, não era possível verificar o padrão de comunicação entre os dispositivos, devido aos inúmeros problemas, foi desenvolvida outra aplicação para realizar os testes. O celular foi trocado pelo computador e adaptações foram aplicadas no script do microcontrolador. Utilizando o teclado numérico do computador, foi estabelecido um novo sistema para o controle do carrinho utilizando o cabo serial do próprio microcontrolador. As teclas oito e dois foram utilizadas para determinar a aceleração, enquanto as teclas seis e quatro para determinar a direção, ambos em Código Padrão Americano para o Intercâmbio de Informação (ASCII). O HyperTerminal do Windows foi utilizado para enviar os valores do teclado para o microcontrolador que reconhecia as interrupções recebidas. O microcontrolador reconhecia algumas interrupções, mas a sincronia não estava estabelecida e nesta etapa foi possível notar um erro no circuito. O microcontrolador não fazia a inversão do motor, e não era possível controlar os bits entre nível lógico alto e baixo. Foi necessário implementar 1 resistor de 1kΩ, 1 resistor de 333Ω e um transistor bc548 e organizar o circuito em uma protoboard. A melhoria será desenvolvida em uma nova versão do projeto. O projeto de teste levou o desenvolvimento de outra aplicação. Dispensando o cabo serial, foi adquirido um Bluetooth USB para efetuar uma nova fase de comunicação entre o computador e o microcontrolador. As informações eram enviadas pelo HyperTerminal do Windows via conexão Bluetooth. Os mesmos problemas encontrados com o cabo serial e conexão Bluetooth seguiam o mesmo
  48. 48. 44 padrão de erros e através do caractere U, foi possível verificar uma onda quadrada simétrica no osciloscópio e desenvolver alterações no código do celular. Inicialmente com o caractere “U” para indicar o início de sincronia, o script do celular foi sendo aprimorado byte a byte, até formar o pacote com três bytes, sendo o primeiro de sincronia, o segundo de dispositivo e o último com valores do acelerômetro. O microcontrolador foi modificado para entender aos dados que estavam sendo enviadas pelo smartphone. O problema de sincronia continuava, e foi iniciada a fase de modificações do microcontrolador. A programação para o microcontrolador seguiu o padrão para reconhecer byte a byte a mensagem enviada pelo celular dentro de uma máquina de estado. Vários modelos de código foram desenvolvidos, a idéia inicial implantada no microcontrolador, envolvia o controle da direção e depois aceleração. Após várias tentativas, o novo software estava baseado na aceleração e depois na direção. A partir deste ponto, as informações estavam sendo enviadas pelo movimento do celular para o modulo de Bluetooth. O mesmo enviava as informações para o microcontrolador e os dados eram reconhecidos e executados de acordo com o programa.
  49. 49. 45 5 CONCLUSÃO Através dos testes executados observou-se que os sinais enviados pelo smartphone foram recebidos e interpretados pelo carrinho de acordo com o esperado. É importante ressaltar que os movimentos do carrinho estão sendo executados em sincronismo com a inclinação do celular. Por exemplo, ao inclinar o celular para a direita o carrinho se movimenta para esta direção e assim com as demais funções disponíveis: para frente, para trás, frente-esquerda, frente-direita, trás-esquerda, trás-direita e parar. A adoção de três bytes para o protocolo de comunicação mostrou-se adequada para esta aplicação, pois foi possível controlar o sistema sem haver perda de sincronismo e sem sobrecarregar a conexão Bluetooth. O sistema não apresentou falhas e intermitências no sinal, portanto não foi possível identificar a perda de pacotes na transmissão. Por exemplo, o carrinho não se movimentou para uma direção diferente do comando enviado pelo celular. Quando o protocolo utilizado era diferente de três bytes constatou-se nos testes que a comunicação não se mantinha estável. 5.1 Sugestões para trabalhos futuros Os conhecimentos obtidos através do desenvolvimento deste trabalho podem ser consideravelmente ampliados através da integração de outros dispositivos. Para isso, sugerimos o aprimoramento da interpretação do pacote de controle que está sendo transmitido, pois tendo uma leitura correta dos sinais, é possível otimizar o código a ser implementado no microcontrolador e no smartphone. A seguir são apresentadas sugestões para trabalhos futuros visando à aplicabilidade de nosso projeto: • A acessibilidade é essencial para realizar a inclusão social de pessoas portadoras de necessidades especiais. Desenvolver aplicações envolvendo meios de comunicação sem fio e
  50. 50. 46 sensores de movimento podem contribuir consideravelmente para esta inclusão. • Modificar o modelo de comunicação entre os dispositivos para rede sem fio (WI-FI), por permitir distâncias maiores entre eles; • Incluir uma câmera no brinquedo para visualizar a imagem na tela do smartphone e ver a direção do carrinho. • Utilizar o acelerômetro para medir a velocidade do carrinho. • Alterar o dispositivo controlado para um helicóptero de brinquedo, podendo incluir no módulo um GPS, assim seria possível fazer a medição de solos ou descobrir a posição de lugares de difícil acesso; • Desenvolver um sistema de segurança para visualização e controle das câmeras, instaladas no estabelecimento, através do smartphone. • Lazer e conforto – este desenvolvimento pode ser utilizado dentro de casa para abrir e fechar cortinas e persianas, balançar um berço, apagar as luzes de uma casa, entre outros.
  51. 51. 47 REFERÊNCIAS DELTORO, Vincent. Fundamentos de Máquinas Elétricas. Rio de Janeiro: LTC, 1999. ERCEGOVAC, Milos; LANG, Tomás; MORENO, Jaime H. Introdução aos Sistemas Digitais. Bookman, 2003. HALSALL, Fred. Data Communications, Computer Networks and Open Systems. 4th ed. Addison-Wesley, 1996. HAARTSEN, J. C.; MATTISSON, S. Bluetooth – A New Low-Power Radio Interface Providing Short-Range Connectivity. IEEE Proceedings of the IEEE, v. 88, n. 10, p. 1651 – 1652, oct. 2000. Linguagem Basic. Disponível em: <http://pt.wikipedia.org/wiki/BASIC>. Acesso em: 10 out. 2010. MÁRQUEZ, Daniel Q. Controle de motor CC pela porta serial do PC. Mecatrônica Fácil, n. 37, p. 22 - 25, 2008. MORIMOTO, Carlos E. Redes: o Guia Definitivo. 1. ed. Porto Alegre: GDH Press e Sul Editores, 2008. MORIMOTO, Carlos E. Hardware: o Guia Definitivo. 1. ed. Porto Alegre: GDH Press e Sul Editores, 2007. MORIMOTO, Carlos E. Smartphones: Guia Prático. 1. ed. Porto Alegre: GDH Press e Sul Editores, 2009. OLIVEIRA, A. S. Sistemas embarcados: Hardware e firmware na prática. Érica, 2006. PARALLAX, Inc. Robotics with the Boe-Bot: Student Guide. 2nd ed. Parallax Inc, 2004.
  52. 52. 48 Programming with Python for series 60 platform. Informação técnica. Disponível em: <http://www.mobilenin.com/pys60/resources/pys60_v_1_2/Programming_with_Pytho n.pdf>. Acesso em: 10 out. 2010. Python Software Foundation. Python Programming Language - Official Website. Disponível em: <http://www.python.org>. Acesso em: 27 fev. 2010. Python Wiki for S60 – OpenSource. A port of the Python language to S60. Disponível em: <http://wiki.opensource.nokia.com/projects/PyS60>. Acesso em: 27 fev. 2010. Smartphone Nokia N95. Informação técnica. Disponível em: <http://www.nokia.com.br/produtos/celulares/nokia-n95-/especificacoes-tecnicas>. Acesso em: 10 out. 2010. SHAW, A. C. Sistemas e Software de Tempo Real. Porto Alegre: Bookman, 2003. SILVA, Francisco J. S. Controle para servomotor. Eletrônica Total, n. 132, ago. 2008. SOARES, M. J. RM-1 – Robô Manipulador. Mecatrônica Fácil, n. 39, p. 18 - 39, jun. 2008. SourceForge.net. The Python programming language for S60 mobile phones. Disponível em: <http://sourceforge.net/projects/pys60>. Acesso em: 27 fev. 2010. Tato Equipamentos Eletrônicos. Website do fabricante do BSM8. Disponível em: <http://www.tato.ind.br>. Acesso em: 11 mai. 2010 The Official Bluetooth Technology. Bluetooth. Disponível em: <http://www.bluetooth.com>. Acesso em: 27 fev. 2010. The power to do more. Informação técnica S.O. Symbian. Disponível em: <http://www.symbian.org/symbian-platform>. Acesso em: 10 out. 2010. The Python wiki. Informação técnica. Disponível em: <http://wiki.Python.org/moin>. Acesso em: 10 out. 2010.
  53. 53. 49 WILLIAMS, AL. Microcontroller Projects Using the Basic Stamp. 2nd ed. Lawrance, Kansas: CMP Books, 2002.
  54. 54. 50 APÊNDICE A – CIRCUITO COMPLETO A Figura a seguir, mostra todos os componentes eletrônicos interligados em seus respectivos dispositivos.
  55. 55. 51 APÊNDICE B – ESTIMATIVA DE CUSTOS E LISTA DE MATERIAIS A tabela abaixo mostra os gastos estimados para a realização do projeto: Item Descrição Qtde Valor Unit. Total 1 Smartphone Nokia N95 1 699,00 699,00 2 Cabo de Gravação do M8 1 15,00 15,00 3 Microcontrolador Basic Step M8 1 69,00 69,00 4 Módulo Bluetooth para uC 1 100,00 100,00 5 Carrinho de Controle Remoto 1 154,90 154,90 6 Servo HS-311 1 34,00 34,00 7 Tubo de solda 1 4,90 4,90 8 Malha desoldadora 1 4,90 4,90 9 Álcool isopropílico 1 5,00 5,00 10 Soquete SPW 28 pinos 1 12,00 12,00 11 Conector 2 vias 1 1,30 1,30 12 Conector 3 vias 1 1,50 1,50 13 Placa de Fenolite dupla face 1 3,50 3,50 14 Capacitor Eletrolítico 100uF 7 0,81 5,67 15 Transistor BC548 2 0,45 0,90 16 Capacitor Eletrolítico 10uF 5 0,40 2,00 17 Resistor 1k 4 0,18 0,72 18 Resistor 10k 2 0,20 0,40 19 LM7805C 1 12,00 12,00 20 Bateria LiPo recarregável 11,1V 5A 1 300,00 300,00 21 Resistor 330 1 0,15 0,15 22 TPS77833 1 20,00 20,00 23 LMD18200 1 70,00 70,00 Total R$ 1516,84
  56. 56. 52 APÊNDICE C – PLACA COM OS COMPONENTES SOLDADOS
  57. 57. 53 APÊNDICE D – PROGRAMA DO MICROCONTROLADOR EM BASIC O código a seguir pertence à implementação das rotinas para o microcontrolador Basic Step M8. '---------------------- ' Definição das Portas '---------------------- MAKEOUT B,0 'Servomotor MAKEOUT B,2 'PWM motor DC MAKEOUT B,6 'Nível alto pára o motor DC MAKEOUT B,7 'Seta direção do motor DC SETBIT B,6 'Inicia com o motor parado '--------------------------------------- ' Declaração Máquina estados e Variáveis '--------------------------------------- frame1 = "U" stdsinc = 0 stddisp = 1 stddados = 2 estado = stdsinc aceleracao = "1" 'Dispositivo aceleração direcao = "9" 'Dispositivo direção disp = "" dados = "" rbyte = "" count = 0 errorflag = 0 '------------------------------ ' Iniciar UART e ligar o timer2 '------------------------------ rflag = 0 'Flag de interrupção tempo = 0 'Contador caso a conexão cair, parar carrinho TIMER2 ON 1024 RECV INIT 9600'Configura o baud rate da UART de recepção RECV INTERRUPT ON 'Liga a interrupção da UART de recepção '-------------------- ' Programa Principal '-------------------- DO IF rflag | 0 THEN 'Verifica se houve interrupção IF errorflag = 0 THEN 'Byte recebido sem erros 'Entra na máquina de estados BEGINCASE estado 'Se estado inicial/sinc e recebeu "U", próx estado e zera timer2 CASE stdsinc IF rbyte = frame1 THEN estado = stddisp TIMER2 ON 1024 periodo = 0 ENDIF 'Se recebeu "U", continua mesmo estado 'Se recebeu "1" ou "9", próx estado senão volta CASE stddisp disp = rbyte
  58. 58. 54 IF disp = aceleracao THEN estado = stddados ELSE IF disp = direcao THEN estado = stddados ELSE IF disp = frame1 THEN estado = stddisp ELSE estado = stdsinc ENDIF ENDIF ENDIF 'Controlar dispositivos CASE stddados dados = rbyte 'Verifica qual dispositivo será controlado IF disp = aceleracao THEN 'Frente-lento, PWM 60% ciclo ativo, f=50Hz IF dados = "L" THEN CLRBIT B,6 CLRBIT B,7 PWMB THRESHOLD 155 PWMB INIT 50,8 ELSE 'Parado IF dados = "P" THEN SETBIT B,6 ELSE 'Frente-rápido, PWM 80% ciclo ativo, f=50Hz IF dados = "R" THEN CLRBIT B,6 CLRBIT B,7 PWMB THRESHOLD 205 PWMB INIT 50,8 ELSE 'Frente-turbo, PWM 99% ciclo ativo, f=50Hz IF dados = "T" THEN CLRBIT B,6 CLRBIT B,7 PWMB THRESHOLD 255 PWMB INIT 50,8 ELSE 'Ré-lento, PWM 60% ciclo ativo, f=50Hz IF dados = "2" THEN CLRBIT B,6 SETBIT B,7 PWMB THRESHOLD 155 PWMB INIT 50,8 ELSE 'Ré-rápido, PWM 80% ciclo ativo, f=50Hz IF dados = "3" THEN CLRBIT B,6 SETBIT B,7 PWMB THRESHOLD 205 PWMB INIT 50,8 ELSE 'Ré-turbo, PWM 99% ciclo ativo, f=50Hz IF dados = "S" THEN CLRBIT B,6 SETBIT B,7
  59. 59. 55 PWMB THRESHOLD 255 PWMB INIT 50,8 ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ELSE 'Posiciona o servo +ou- 11h, 1300 us IF dados = "E" THEN FOR count = 1 TO 10 PULSE B,0,1.3 PAUSE 18 NEXT ELSE 'Posiciona o servo a 12h, 1500 us IF dados = "F" THEN FOR count = 1 TO 10 PULSE B,0,1.5 PAUSE 18 NEXT ELSE 'Posiciona o servo +ou- 1h, 1750 us IF dados = "D" THEN FOR count = 1 TO 10 PULSE B,0,1.75 PAUSE 18 NEXT ENDIF ENDIF ENDIF ENDIF 'Volta ao estado inicial estado = stdsinc disp = "" dados = "" ENDCASE errorflag = 0 ENDIF rflag = 0 'Se não receber dados ELSE '-------------------------------------------- ' Rotina para parar o carrinho ' Desconexão Bluetooth ou problemas na UART ' O carrinho se movimentará no máx 1 segundo '-------------------------------------------- 'Faz a leitura do timer2 e grava na variável período 'Cada vez que período atingir 255 acrescenta 1 na variável tempo 'Se tempo atingir 80 o carrinho pára TIMER2 READ periodo IF periodo = 255 THEN tempo = tempo + 1 TIMER2 ON 1024 IF tempo = 80 THEN SETBIT B,6 periodo = 0 tempo = 0 ENDIF
  60. 60. 56 ENDIF ENDIF LOOP '-------------------------------------------------- ' Rotina de interrupção para receber dados da UART '-------------------------------------------------- INTERRUPT RECV PUSHREG PUSHFLAGS rflag = 1 RECV IN rbyte, errorflag POPFLAGS POPREG END INTERRUPT
  61. 61. 57 APÊNDICE E – SCRIPT DO CELULAR EM PYS60 O código a seguir pertence à implementação das rotinas para o celular. # Módulo Interface de Usuário do S60 import appuifw # Módulo de Bluetooth import socket # Módulo de Dados do Aparelho import sysinfo # Módulo de Funções do S60 import e32 # Módulo de Manipulação de Áudio import audio from key_codes import * from graphics import * # Depuração: 1 = ligado , -1 = desligado depuracao = -1 # Bluetooth ligado: 1 = ligado , -1 = desligado Bluetooth = 1 # Tamaho do ponto que mostra o valor da aceleração tponto = 10 # Modo Turbo: 1 = ligado , -1 = desligado turbo = -1 # Tamanho da Tela: large = apenas as softkeys visíveis , full = tela cheia appuifw.app.screen='full' # Importar Acelerômetro import sensor ignora_max = 4 # Não enviar todas as mensagens # --------------------------------------------------------------------------- ---------------------- # Manipular dados de aceleração def dacelerometro(x,y,z): global ignora_msg, ignora_max # Ignorar algumas mensagens para não sobrecarregar a conexão com o Bluetooth ignora_msg += 1 if ignora_msg < ignora_max: return ignora_msg = 0 # Variável para conexão do Bluetooth global sock global depuracao, pare, turbo # --------------------------------------------------------------------------- ---------------------- # Manipulação do Teclado if keyboard.is_down(EScancodeRightSoftkey): # Fechar aplicativo fecha_aplicativo() elif keyboard.pressed(EScancodeStar): # Ligar/Desligar depuracao depuracao *= -1 elif keyboard.pressed(EScancode5): # Ligar/Desligar turbo turbo *= -1 elif keyboard.pressed(EScancodeSelect): # Ligar/Desligar pare pare *= -1 desenha_x = x
  62. 62. 58 desenha_y = y desenha_z = z # --------------------------------------------------------------------------- ---------------------- # Processo de aceleração e direção # Parada obrigatória if pare == 1: x = 0 y = 0 z = 0 # Definir eixos de controle direcao = -y aceleracao = z # Aumentar valores direcao *= 3 aceleracao *= 2 # --------------------------------------------------------------------------- ---------------------- # Enviar mensagens para o carro # Aceleração if turbo == 1: if aceleracao >= 90: msg = "U1T" elif aceleracao >= 60: msg = "U1R" elif aceleracao >= 30: msg = "U1L" elif aceleracao <= -90: msg = "U1S" elif aceleracao <= -60: msg = "U13" elif aceleracao <= -30: msg = "U12" else: msg = "U1P" else: if aceleracao >= 60: msg = "U1R" elif aceleracao >= 30: msg = "U1L" elif aceleracao <= -60: msg = "U13" elif aceleracao <= -30: msg = "U12" else: msg = "U1P" if Bluetooth == 1: sock.send(msg) # Direção if direcao >= 50: msg = "U9E" elif direcao <= -50: msg = "U9D" else: msg = "U9F" if Bluetooth == 1: sock.send(msg)
  63. 63. 59 # --------------------------------------------------------------------------- ---------------------- # Desenhando # Limpar a imagem img.clear(0x000000) global telah, telav # Desenhar grid de fundo if turbo == -1: # Linha vertical - branca img.line((0, telav / 2, telah, telav / 2),0xffffff) # Linha horizontal - branca img.line((telah / 2, 0, telah / 2, telav),0xffffff) # Colocar o ponto na tela img.point((minmax(aceleracao, tponto / 2, telah - tponto / 2), minmax(direcao, tponto / 2, telav - tponto / 2)), 0xffffff,width=tponto) else: # Linha vertical - vermelha img.line((0, telav / 2, telah, telav / 2),0xff0000) # Linha horizontal - vermelha img.line((telah / 2, 0, telah / 2, telav),0xff0000) # Colocar o ponto na tela img.point((minmax(aceleracao, tponto / 2, telah - tponto / 2), minmax(direcao, tponto / 2, telav - tponto / 2)), 0xff0000,width=tponto) # Depuração ligado, mostrar dados na tela if depuracao == 1: img.text((5, 50),u"Desenha x: %d"%desenha_x,0x0060ff) img.text((5, 65),u"Desenha y: %d"%desenha_y,0x0060ff) img.text((5, 80),u"Desenha z: %d"%desenha_z,0x0060ff) img.text((5, 95),u"Aceleração: %d"%aceleracao,0x0000ff) img.text((5, 110),u"Direção: %d"%direcao,0x0000ff) # Redesenhar imagem redesenha_tela(()) # Priorizar o scheduler para execução dos objetos ativos e32.ao_yield() class Keyboard(object): def __init__(self,onevent=lambda:None): self._keyboard_state={} self._downs={} self._onevent=onevent def manipula_evento(self,event): if event['type'] == appuifw.EEventKeyDown: code=event['scancode'] if not self.is_down(code): self._downs[code]=self._downs.get(code,0)+1 self._keyboard_state[code]=1 elif event['type'] == appuifw.EEventKeyUp: self._keyboard_state[event['scancode']]=0 self._onevent() def is_down(self,scancode): return self._keyboard_state.get(scancode,0) def pressed(self,scancode): if self._downs.get(scancode,0): self._downs[scancode]-=1 return True return False # Função para manipular a conexão Bluetooth: def conexao_Bluetooth(): global sock # Criar socket Bluetooth sock=socket.socket(socket.AF_BT,socket.SOCK_STREAM)
  64. 64. 60 target='' # pode-se utilizar o endereço do Bluetooth do carrinho if not target: # Procurar dispositivos Bluetooth address,services=socket.bt_discover() print "Encontrados: %s, %s"%(address,services) if len(services)>1: choices=services.keys() choices.sort() # Mostrar dispositivos disponíveis para seleção choice=appuifw.popup_menu([unicode(services[x])+": "+x for x in choices],u'Escolher Porta:') target=(address,services[choices[choice]]) else: target=(address,services.values()[0]) print "Conectando a "+str(target) # Conectar a porta serial sock.connect(target) if depuracao == -1: audio.say(u"AccelerCar") # Função que redesenha a tela def redesenha_tela(retangulo): global img canvas.blit(img) def fecha_aplicativo(): global sock,Bluetooth # Parar de receber dados do acelerômetro global acc_sensor acc_sensor.disconnect() if Bluetooth == 1: sock.close() app_lock.signal() appuifw.app.set_exit() # Colocar valores entre -127 e 127 def minmax(val,novo_min,novo_max): if (val < -127): val = -127 elif (val > 127): val = 127 return int(((float(val) + 127) / 254) * (novo_max - novo_min) + novo_min) def menu_sobre(): appuifw.note(u"AccelerCar 1.0", "info") def menu_sair(): fecha_aplicativo() def obter_dados_sensor(status): global value_cache,cache_pos # Calcular a média dos dados recebidos do sensor value_cache[cache_pos][0] = status['data_1'] value_cache[cache_pos][1] = status['data_2'] value_cache[cache_pos][2] = status['data_3'] cache_pos += 1 if cache_pos == 5: cache_pos = 0 cur_data = [0,0,0] for i in range(5): cur_data[0] += value_cache[i][0] cur_data[1] += value_cache[i][1] cur_data[2] += value_cache[i][2] for i in range(3):
  65. 65. 61 cur_data[i] /= 5 dacelerometro(-cur_data[1]/5,-cur_data[0]/5,-cur_data[2]/5) # --------------------------------------------------------------------------- ---------------------- # Iniciar o aplicativo e o sensor appuifw.app.title = u"AccelerCar" appuifw.app.exit_key_handler = fecha_aplicativo appuifw.app.menu = [(u"Sobre", menu_sobre),(u"Sair", menu_sair)] keyboard=Keyboard() # Modo gráfico canvas=appuifw.Canvas(event_callback=keyboard.manipula_evento, redraw_callback=redesenha_tela) # Definir a tela do aplicativo appuifw.app.body=canvas # Criar uma imagem branca telah, telav = sysinfo.display_pixels() img=Image.new((telah,telav)) pare = -1 # Parada obrigatória é desativada ignora_msg = 0 # Chamar a função que manipula a conexão Bluetooth if Bluetooth == 1: conexao_Bluetooth() # Média do sensor value_cache = [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]] cache_pos = 0 # Conectar ao acelerômetro sensor_type = sensor.sensors()['AccSensor'] acc_sensor = sensor.Sensor(sensor_type['id'],sensor_type['category']) acc_sensor.connect(obter_dados_sensor) app_lock = e32.Ao_lock() app_lock.wait()
  66. 66. 62 APÊNDICE F – PROTÓTIPO DESENVOLVIDO
  67. 67. 63 APÊNDICE G – DIAGRAMA DE ESTADOS – SOFTWARE DO CONTROLADOR
  68. 68. 64 APÊNDICE H – DIAGRAMA DE BLOCOS – SOFTWARE DO CELULAR
  69. 69. 65

×