tg_accelercar

89
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

Upload: wislan-lima

Post on 14-Apr-2017

37 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TG_AccelerCar

Universidade PaulistaInstituto de Ciências Exatas e Tecnologia

Graduação em Engenharia da Computação

André Henrique NogueiraDanilo da Silva Junqueira

Estiven Koo UryuWislan Alandes de Lima Arruda

ACCELERCAR:Carrinho Controlado pelo Sensor de Movimento do Celular via Bluetooth

São José dos Campos - SP2010

Page 2: TG_AccelerCar

André Henrique NogueiraDanilo da Silva Junqueira

Estiven Koo UryuWislan 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 - SP2010

Page 3: TG_AccelerCar

André Henrique NogueiraDanilo da Silva Junqueira

Estiven Koo UryuWislan 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 / 2010Data da aprovação

Page 4: TG_AccelerCar

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.

Page 5: TG_AccelerCar

“O segredo do sucesso é não escutar

ninguém. O segredo do sucesso é ser

você do seu jeito e seguir a sua alma”.

Gasparetto

Page 6: TG_AccelerCar

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.

Page 7: TG_AccelerCar

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.

Page 8: TG_AccelerCar

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

Page 9: TG_AccelerCar

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

Page 10: TG_AccelerCar

LISTA DE TABELAS

Tabela 3.1 – Controle de dados.................................................................................30

Page 11: TG_AccelerCar

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

Page 12: TG_AccelerCar

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

Page 13: TG_AccelerCar

SUMÁRIO

1 INTRODUÇÃO ....................................................................................................141.1 Objetivo do trabalho.................................................................................141.2 Justificativa do trabalho...........................................................................151.3 Estrutura do trabalho................................................................................15

2 FUNDAMENTAÇÃO TEÓRICA ..........................................................................162.1 Microcontrolador.......................................................................................162.2 Tecnologia Bluetooth ..............................................................................16

2.2.1 Frequência e Comunicação.............................................................17

2.2.2 Redes Bluetooth...............................................................................18

2.3 Smartphone Nokia N95.............................................................................192.3.1 Sistema Operacional Symbian.........................................................19

2.3.2 Acelerômetro....................................................................................20

2.4 Python .......................................................................................................212.4.1 Python Série 60................................................................................21

2.5 Linguagem Basic ......................................................................................22

3 PROJETO E DESENVOLVIMENTO....................................................................233.1 Visão Geral................................................................................................233.2 Compilador Basic Step M8.......................................................................233.3 Microcontrolador Basic Step M8..............................................................243.4 Nokia N95...................................................................................................26

3.4.1 Referências de orientação do sensor..............................................26

3.5 Módulo Bluetooth......................................................................................283.6 Protocolo....................................................................................................293.7 Placa de circuito impresso.......................................................................313.8 Circuito Reset............................................................................................333.9 Regulador de tensão.................................................................................343.10 Ponte H e circuito do motor DC.............................................................353.11 Servomotor..............................................................................................353.12 Funcionamento do software do smartphone........................................373.13 Funcionamento do software do BSM8..................................................38

Page 14: TG_AccelerCar

4 TESTES E RESULTADOS...................................................................................404.1 Testes de hardware do projeto................................................................404.2 Comunicação entre dispositivos.............................................................40

5 CONCLUSÃO......................................................................................................435.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

Page 15: TG_AccelerCar

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.

Page 16: TG_AccelerCar

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.

Page 17: TG_AccelerCar

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.

Page 18: TG_AccelerCar

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).

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

Page 19: TG_AccelerCar

18

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).

Page 20: TG_AccelerCar

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.

Page 21: TG_AccelerCar

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,

Page 22: TG_AccelerCar

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

Page 23: TG_AccelerCar

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

Page 24: TG_AccelerCar

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).

Page 25: TG_AccelerCar

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.

Page 26: TG_AccelerCar

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

Page 27: TG_AccelerCar

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

Page 28: TG_AccelerCar

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

Page 29: TG_AccelerCar

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)

Page 30: TG_AccelerCar

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

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

(a) (b)

(a) (b)

Page 31: TG_AccelerCar

30

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

reconhecido pelo microcontrolador. Os scripts desenvolvidos para ambos, podem

ser visualizados no APÊNDICE E e APÊNDICE D respectivamente.

Page 32: TG_AccelerCar

31

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. Control

e Dados do Acelerômetro Movimento do Carrinho

U 1 T Aceleração >= 90 Frente – Modo TurboU 1 R Aceleração >= 60 Frente – RápidoU 1 L Aceleração >= 30 Frente – LentoU 1 S Aceleração <= -90 Ré – Modo TurboU 1 3 Aceleração <= -60 Ré – Rápido

Page 33: TG_AccelerCar

32

Início/Sinc Disp. Control

e Dados do Acelerômetro Movimento do Carrinho

U 1 2 Aceleração <= -30 Ré – Lento U 1 P Aceleração entre -30 e 30 ParadoU 9 E Direção >= 60 EsquerdaU 9 D Direção <= -60 DireitaU 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.

Page 34: TG_AccelerCar

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.

Page 35: TG_AccelerCar

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)

Page 36: TG_AccelerCar

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

bateria de 12 volts. O esquema de ligação do regulador pode ser visto na Figura

3.14 abaixo.

Page 37: TG_AccelerCar

36

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

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).

Page 38: TG_AccelerCar

37

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.

Figura 3.17 – Servomotor utilizado no projeto.

Page 39: TG_AccelerCar

38

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.

Page 40: TG_AccelerCar

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).

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;

Page 41: TG_AccelerCar

40

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

É 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.

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

Page 42: TG_AccelerCar

41

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).

Page 43: TG_AccelerCar

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.

Page 44: TG_AccelerCar

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

Page 45: TG_AccelerCar

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.

Page 46: TG_AccelerCar

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

Page 47: TG_AccelerCar

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.

REFERÊNCIAS

Page 48: TG_AccelerCar

47

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.

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_Python.pdf>. Acesso em: 10 out. 2010.

Page 49: TG_AccelerCar

48

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.

WILLIAMS, AL. Microcontroller Projects Using the Basic Stamp. 2nd ed. Lawrance, Kansas: CMP Books, 2002.

Page 50: TG_AccelerCar

49

APÊNDICE A – CIRCUITO COMPLETO

A Figura a seguir, mostra todos os componentes eletrônicos

interligados em seus respectivos dispositivos.

Page 51: TG_AccelerCar

50

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,002 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

20Bateria LiPo recarregável 11,1V 5A 1 300,00 300,00

21 Resistor 330 1 0,15 0,1522 TPS77833 1 20,00 20,0023 LMD18200 1 70,00 70,00

Total R$ 1516,84

Page 52: TG_AccelerCar

51

APÊNDICE C – PLACA COM OS COMPONENTES SOLDADOS

Page 53: TG_AccelerCar

52

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 'ServomotorMAKEOUT B,2 'PWM motor DCMAKEOUT B,6 'Nível alto pára o motor DCMAKEOUT B,7 'Seta direção do motor DCSETBIT B,6 'Inicia com o motor parado'---------------------------------------' Declaração Máquina estados e Variáveis'---------------------------------------frame1 = "U"stdsinc = 0stddisp = 1stddados = 2estado = stdsincaceleracao = "1" 'Dispositivo aceleraçãodirecao = "9" 'Dispositivo direçãodisp = ""dados = ""rbyte = ""count = 0errorflag = 0'------------------------------' Iniciar UART e ligar o timer2'------------------------------rflag = 0 'Flag de interrupçãotempo = 0 'Contador caso a conexão cair, parar carrinhoTIMER2 ON 1024RECV INIT 9600'Configura o baud rate da UART de recepçãoRECV INTERRUPT ON 'Liga a interrupção da UART de recepção'--------------------' Programa Principal'--------------------DO

IF rflag | 0 THEN 'Verifica se houve interrupçãoIF errorflag = 0 THEN'Byte recebido sem erros

'Entra na máquina de estadosBEGINCASE estado

'Se estado inicial/sinc e recebeu "U", próx estado e zera timer2CASE stdsinc

IF rbyte = frame1 THENestado = stddispTIMER2 ON 1024periodo = 0

ENDIF'Se recebeu "U", continua mesmo estado'Se recebeu "1" ou "9", próx estado senão voltaCASE stddisp

disp = rbyte

Page 54: TG_AccelerCar

53

IF disp = aceleracao THENestado = stddados

ELSEIF disp = direcao THEN

estado = stddadosELSE

IF disp = frame1 THENestado = stddisp

ELSEestado = stdsinc

ENDIFENDIF

ENDIF'Controlar dispositivosCASE stddados

dados = rbyte'Verifica qual dispositivo será controladoIF disp = aceleracao THEN

'Frente-lento, PWM 60% ciclo ativo, f=50HzIF dados = "L" THEN

CLRBIT B,6CLRBIT B,7PWMB THRESHOLD 155PWMB INIT 50,8

ELSE'ParadoIF dados = "P" THEN

SETBIT B,6ELSE

'Frente-rápido, PWM 80% ciclo ativo, f=50HzIF dados = "R" THEN

CLRBIT B,6CLRBIT B,7PWMB THRESHOLD 205PWMB INIT 50,8

ELSE'Frente-turbo, PWM 99% ciclo ativo, f=50HzIF dados = "T" THEN

CLRBIT B,6CLRBIT B,7PWMB THRESHOLD 255PWMB INIT 50,8

ELSE'Ré-lento, PWM 60% ciclo ativo, f=50HzIF dados = "2" THEN

CLRBIT B,6SETBIT B,7PWMB THRESHOLD 155PWMB INIT 50,8

ELSE'Ré-rápido, PWM 80% ciclo ativo, f=50HzIF dados = "3" THEN

CLRBIT B,6SETBIT B,7PWMB THRESHOLD 205PWMB INIT 50,8

ELSE'Ré-turbo, PWM 99% ciclo ativo, f=50HzIF dados = "S" THEN

CLRBIT B,6SETBIT B,7

Page 55: TG_AccelerCar

54

PWMB THRESHOLD 255PWMB INIT 50,8

ENDIFENDIF

ENDIFENDIF

ENDIFENDIF

ENDIFELSE

'Posiciona o servo +ou- 11h, 1300 usIF dados = "E" THEN

FOR count = 1 TO 10PULSE B,0,1.3PAUSE 18

NEXTELSE

'Posiciona o servo a 12h, 1500 usIF dados = "F" THEN

FOR count = 1 TO 10PULSE B,0,1.5PAUSE 18

NEXTELSE

'Posiciona o servo +ou- 1h, 1750 usIF dados = "D" THEN

FOR count = 1 TO 10PULSE B,0,1.75PAUSE 18

NEXTENDIF

ENDIFENDIF

ENDIF'Volta ao estado inicialestado = stdsincdisp = ""dados = ""

ENDCASEerrorflag = 0ENDIF

rflag = 0'Se não receber dadosELSE'--------------------------------------------' 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áraTIMER2 READ periodoIF periodo = 255 THEN

tempo = tempo + 1TIMER2 ON 1024IF tempo = 80 THEN

SETBIT B,6periodo = 0tempo = 0

ENDIF

Page 56: TG_AccelerCar

55

ENDIFENDIF

LOOP'--------------------------------------------------' Rotina de interrupção para receber dados da UART'--------------------------------------------------INTERRUPT RECV

PUSHREGPUSHFLAGSrflag = 1RECV IN rbyte, errorflagPOPFLAGSPOPREG

END INTERRUPT

Page 57: TG_AccelerCar

56

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 S60import appuifw # Módulo de Bluetoothimport socket # Módulo de Dados do Aparelhoimport sysinfo# Módulo de Funções do S60import e32# Módulo de Manipulação de Áudioimport audio from key_codes import *from graphics import *# Depuração: 1 = ligado , -1 = desligadodepuracao = -1# Bluetooth ligado: 1 = ligado , -1 = desligadoBluetooth = 1# Tamaho do ponto que mostra o valor da aceleraçãotponto = 10# Modo Turbo: 1 = ligado , -1 = desligadoturbo = -1# Tamanho da Tela: large = apenas as softkeys visíveis , full = tela cheiaappuifw.app.screen='full'# Importar Acelerômetroimport sensorignora_max = 4 # Não enviar todas as mensagens # -------------------------------------------------------------------------------------------------# Manipular dados de aceleraçãodef 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

Page 58: TG_AccelerCar

57

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)

Page 59: TG_AccelerCar

58

# ------------------------------------------------------------------------------------------------- # 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)

Page 60: TG_AccelerCar

59

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 teladef 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 127def 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):

Page 61: TG_AccelerCar

60

cur_data[i] /= 5 dacelerometro(-cur_data[1]/5,-cur_data[0]/5,-cur_data[2]/5)# -------------------------------------------------------------------------------------------------# Iniciar o aplicativo e o sensorappuifw.app.title = u"AccelerCar"appuifw.app.exit_key_handler = fecha_aplicativoappuifw.app.menu = [(u"Sobre", menu_sobre),(u"Sair", menu_sair)]keyboard=Keyboard()# Modo gráficocanvas=appuifw.Canvas(event_callback=keyboard.manipula_evento, redraw_callback=redesenha_tela)# Definir a tela do aplicativoappuifw.app.body=canvas# Criar uma imagem brancatelah, telav = sysinfo.display_pixels()img=Image.new((telah,telav))pare = -1 # Parada obrigatória é desativadaignora_msg = 0# Chamar a função que manipula a conexão Bluetoothif Bluetooth == 1: conexao_Bluetooth()# Média do sensorvalue_cache = [[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]]cache_pos = 0# Conectar ao acelerômetrosensor_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()

Page 62: TG_AccelerCar

61

APÊNDICE F – PROTÓTIPO DESENVOLVIDO

Page 63: TG_AccelerCar

62

APÊNDICE G – DIAGRAMA DE ESTADOS – SOFTWARE DO CONTROLADOR

Page 64: TG_AccelerCar

63

APÊNDICE H – DIAGRAMA DE BLOCOS – SOFTWARE DO CELULAR

Page 65: TG_AccelerCar

64