SlideShare uma empresa Scribd logo
1 de 69
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
São José dos Campos - SP
2010
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.
São José dos Campos - SP
2010
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
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 do nosso
sonho de se tornar Engenheiros.
“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 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.
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.
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
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
LISTA DE TABELAS
Tabela 3.1 – Controle de dados..................................................................................30
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
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
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
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
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.
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.
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.
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).
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).
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.
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,
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
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
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).
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.
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
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
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
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)
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)
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
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
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.
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.
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)
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
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
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.
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.
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).
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
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).
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.
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
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.
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
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.
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.
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.
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 respectivos dispositivos.
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
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
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
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
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
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
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
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)
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)
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):
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()
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

Mais conteúdo relacionado

Semelhante a Carrinho controlado por celular via Bluetooth

Desenvolvimento de Produto para Automação Residencial com Sistema DroidLar
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLarDesenvolvimento de Produto para Automação Residencial com Sistema DroidLar
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLarBruno Silva
 
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...lystermachado
 
TCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOS
TCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOSTCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOS
TCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOSJean Luiz Zanatta
 
Apostila pic-c
Apostila pic-cApostila pic-c
Apostila pic-cjlconrado
 
Tcc final fernandopolastrini_2016_ee-
Tcc final fernandopolastrini_2016_ee-Tcc final fernandopolastrini_2016_ee-
Tcc final fernandopolastrini_2016_ee-Dyego Torres
 
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1Denis Storti da Silva
 
The mathematics used by technicians in the automotive electronics industry.
The mathematics used by technicians in the automotive electronics industry.The mathematics used by technicians in the automotive electronics industry.
The mathematics used by technicians in the automotive electronics industry.Erotide Pereira
 
Apostila controladores-compact logix
Apostila controladores-compact logixApostila controladores-compact logix
Apostila controladores-compact logixMarcelo Araujo
 
An Embedded System for Analysis and Classification of a Driver's Conducting
An Embedded System for Analysis and Classification of a Driver's ConductingAn Embedded System for Analysis and Classification of a Driver's Conducting
An Embedded System for Analysis and Classification of a Driver's ConductingFelipe Wanderley
 
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalPim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalCesar Jardim
 
Sistema de monitoramento para redes sem fio com Zabbix e openWRT
 Sistema de monitoramento para redes sem fio com Zabbix e openWRT Sistema de monitoramento para redes sem fio com Zabbix e openWRT
Sistema de monitoramento para redes sem fio com Zabbix e openWRTMarcelo Santana Camacho
 
Inseto robo
Inseto roboInseto robo
Inseto roboedycar5
 
DESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdf
DESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdfDESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdf
DESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdfJulioCesar547337
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...Jucemar Dimon
 
Controladores Lógicos Programáveis - CLP
Controladores Lógicos Programáveis - CLPControladores Lógicos Programáveis - CLP
Controladores Lógicos Programáveis - CLPFabiano Sales
 

Semelhante a Carrinho controlado por celular via Bluetooth (20)

Desenvolvimento de Produto para Automação Residencial com Sistema DroidLar
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLarDesenvolvimento de Produto para Automação Residencial com Sistema DroidLar
Desenvolvimento de Produto para Automação Residencial com Sistema DroidLar
 
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
SEGURANÇA E SUSTENTABILIDADE EM COMPUTAÇÃO NAS NUVENS: APLICAÇÃO EM EMPRESAS ...
 
TCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOS
TCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOSTCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOS
TCC - SISTEMA PARA MONITORAMENTO DO GÁS AMÔNIA EM AVIÁRIOS
 
Apostila pic-c
Apostila pic-cApostila pic-c
Apostila pic-c
 
Apostila pic-c16 f877
Apostila pic-c16 f877Apostila pic-c16 f877
Apostila pic-c16 f877
 
Apostila pic-c
Apostila pic-cApostila pic-c
Apostila pic-c
 
Douglasbentoscriptoretcc 130423092544-phpapp01 (1)
Douglasbentoscriptoretcc 130423092544-phpapp01 (1)Douglasbentoscriptoretcc 130423092544-phpapp01 (1)
Douglasbentoscriptoretcc 130423092544-phpapp01 (1)
 
Tcc final fernandopolastrini_2016_ee-
Tcc final fernandopolastrini_2016_ee-Tcc final fernandopolastrini_2016_ee-
Tcc final fernandopolastrini_2016_ee-
 
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
Monografia_AWS_ProtocolosIOT_DenisStorti_v1.1
 
The mathematics used by technicians in the automotive electronics industry.
The mathematics used by technicians in the automotive electronics industry.The mathematics used by technicians in the automotive electronics industry.
The mathematics used by technicians in the automotive electronics industry.
 
Apostila controladores-compact logix
Apostila controladores-compact logixApostila controladores-compact logix
Apostila controladores-compact logix
 
An Embedded System for Analysis and Classification of a Driver's Conducting
An Embedded System for Analysis and Classification of a Driver's ConductingAn Embedded System for Analysis and Classification of a Driver's Conducting
An Embedded System for Analysis and Classification of a Driver's Conducting
 
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. finalPim ii virtualização de servidores e computadores na univen petróleo rev. final
Pim ii virtualização de servidores e computadores na univen petróleo rev. final
 
Sistema de monitoramento para redes sem fio com Zabbix e openWRT
 Sistema de monitoramento para redes sem fio com Zabbix e openWRT Sistema de monitoramento para redes sem fio com Zabbix e openWRT
Sistema de monitoramento para redes sem fio com Zabbix e openWRT
 
Inseto robo
Inseto roboInseto robo
Inseto robo
 
Tese de mestrado
Tese de mestradoTese de mestrado
Tese de mestrado
 
Projeto BUS-BUS
Projeto BUS-BUSProjeto BUS-BUS
Projeto BUS-BUS
 
DESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdf
DESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdfDESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdf
DESENVOLVIMENTO_DE_FIRMWARE_E_SOFTWARE_D.pdf
 
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
SISTEMA DE ESTACIONAMENTO AUTOMOTIVO UTILIZANDO AS PLATAFORMAS MOBILE ANDROID...
 
Controladores Lógicos Programáveis - CLP
Controladores Lógicos Programáveis - CLPControladores Lógicos Programáveis - CLP
Controladores Lógicos Programáveis - CLP
 

Carrinho controlado por celular via Bluetooth

  • 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. São José dos Campos - SP 2010
  • 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. São José dos Campos - SP 2010
  • 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. 27 / 10 / 2010 Data da aprovação
  • 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. “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. 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. 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. 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. 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. LISTA DE TABELAS Tabela 3.1 – Controle de dados..................................................................................30
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 49 WILLIAMS, AL. Microcontroller Projects Using the Basic Stamp. 2nd ed. Lawrance, Kansas: CMP Books, 2002.
  • 54. 50 APÊNDICE A – CIRCUITO COMPLETO A Figura a seguir, mostra todos os componentes eletrônicos interligados em seus respectivos dispositivos.
  • 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. 52 APÊNDICE C – PLACA COM OS COMPONENTES SOLDADOS
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 62 APÊNDICE F – PROTÓTIPO DESENVOLVIDO
  • 67. 63 APÊNDICE G – DIAGRAMA DE ESTADOS – SOFTWARE DO CONTROLADOR
  • 68. 64 APÊNDICE H – DIAGRAMA DE BLOCOS – SOFTWARE DO CELULAR
  • 69. 65