Escolar Documentos
Profissional Documentos
Cultura Documentos
Escola Politcnica
Departamento de Eletrnica e de Computao
Autor:
_________________________________________________
Luiz Alberto Santos da Silva
Orientador:
_________________________________________________
Prof. Sergio Barbosa Villas-Boas, Ph. D.
Examinador:
_________________________________________________
Prof. Aloysio de Castro Pinto Pedroza, Dr.
Examinador:
_________________________________________________
Prof. Jorge Lopes de Souza Leo, Dr.
DEL
Janeiro de 2014
CEP 21949-900
ii
iii
AGRADECIMENTO
Dedico este trabalho, primeiramente, a Deus, minha famlia, ao meu Orientador
Prof. Sergio Barbosa Villas-Boas e a todos que contriburam de forma significativa
minha formao e estada nesta Universidade. Este projeto uma pequena forma de
retribuir o investimento e confiana em mim depositados.
iv
RESUMO
O presente trabalho visa implementar um osciloscpio em um sistema
operacional Android, que se comunique com um hardware utilizando a tecnologia
Bluetooth. Dessa forma, ser possvel trazer um pouco do instrumento de bancada mais
utilizado em laboratrios de eletrnica para diversos lugares, atravs de um dispositivo
mvel.
ABSTRACT
The objective of this project is to implement an oscilloscope on Android
operating system that communicates with a hardware using Bluetooth technology. That
way, itll be possible bring a little more of that bench instrument, heavily used in
electronic laboratories, to different places, through a mobile device.
vi
SIGLAS
SDK Software Development Kit
iOS iPhone Operational System
OS Operational System
IDE Integrated Development Environment
ADT Android Development Tools
A/D Analgico / Digital
ISR Interrupt Service Routine
UART - Universal asynchronous receiver/transmitter
API Application Programming Interface
ADSC A/D Start Conversion
vii
Sumrio
1 Introduo
1.1 Tema
1.2 Delimitao
1.3 Justificativa
1.4 Objetivos
1.5 Metodologia
1.6 Descrio
1
1
1
1
2
2
2
2 Android
2.1 Sistema Operacional Android
2.2 Recursos do Android
2.3 Verses do Android
2.4 Ferramentas para Desenvolvimento
2.5 Estrutura de um Aplicativo Android
2.5.1 Estrutura do Projeto no IDE Eclipse
2.5.2 Activities e Intents
2.5.2.1 Activity
2.5.2.2 Intent
2.6 API Bluetooth para Android
2.6.1 Tornando o dispositivo descobrvel e procurando por outros
dispositivos
2.6.2 Comunicao Bluetooth
2.7 API aChartEngine 1.0.0
4
4
4
5
5
6
6
7
8
12
14
3 Hardware
3.1 Arduino
3.1.1 Conversor A/D do Arduino
3.1.1.1 Arquitetura
3.1.1.2 Clock e Prescaler
3.1.2 Software Arduino IDE
3.2 Mdulo Bluetooth
21
21
22
23
24
27
30
4 Android Oscilloscope
4.1 Anlise do Cdigo para o Arduino
4.1.1 Definies do Cdigo para o Arduino
4.1.2 Tecnologias Arduino e Mdulo Bluetooth
4.2 Anlise do Aplicativo Android
4.2.1 Activity Inicial
4.2.2 Bluetooth Android
4.2.3 Activity do Osciloscpio
4.2.3.1 Processo de Exibio do Grfico
4.2.3.2 Clculo de Vmx, Vpp e Frequncia
4.2.3.3 Trigger do Osciloscpio
32
32
32
34
35
35
37
38
41
43
46
5 Concluses
Bibliografia
49
50
viii
16
17
18
Lista de Figuras
Figura 2.1 Exemplo AndroidManifest.xml
Figura 2.2 Exemplo Activity
Figura 2.3 Ciclo de Vida da Activity
Figura 2.4 Ciclo de Vida da Activity com Instances
Figura 2.5 Exemplo de Instances
Figura 2.6 Intent no AndroidManifest
Figura 2.7 Mtodos para chamar outra Activity
Figura 2.8 Resultado da Activity
Figura 2.9 Armazenar valor para a prxima Activity
Figura 2.10 Exemplo de onActivityResult
Figura 2.11 Permisso Bluetooth no AndroidManifest
Figura 2.12 Verifica se Bluetooth est Ativo
Figura 2.13 Solicitar Ativao Bluetooth
Figura 2.14 Conexo com Dispositivo Bluetooth
Figura 2.15 Site da API AChartEngine
Figura 3.1 Site da Arduino
Figura 3.2 Diagrama de Blocos do Conversor A/D
Figura 3.3 Configurao padro do Prescaler do Microcontrolador
Figura 3.4 Cdigo Setup do Teste de Prescaler
Figura 3.5 Cdigo Loop do Teste de Prescaler
Figura 3.6 Resultado com Prescaler igual a 64
Figura 3.7 Resultado com Prescaler igual a 4
Figura 3.8 Cdigo Exemplo de Estrutura de Programa para Arduino
Figura 3.9 Mdulo Bluetooth
Figura 4.1 Exemplo de Profundidade de Memria
Figura 4.2 Tela Inicial do Aplicativo
Figura 4.3 Tela About do Aplicativo
Figura 4.4 Solicitando Permisso para ativar Bluetooth
Figura 4.5 Menu do Aplicativo
Figura 4.6 DeviceListActivity
Figura 4.7 Conectando ao dispositivo Bluetooth
Figura 4.8 Exemplo 1 Clculo Vmax e Vpp
Figura 4.9 Exemplo 2 Clculo Vmax e Vpp
Figura 4.10 Exemplo Clculo de Frequncia
Figura 4.11 Exemplo Trigger do Osciloscpio
Figura 4.12 Exemplo dos Botes da Activity Principal
ix
7
8
10
11
12
12
13
13
13
14
14
15
15
18
20
22
23
24
25
25
26
27
29
31
33
36
37
39
40
41
42
44
45
46
47
48
Captulo 1
Introduo
1.1 Tema
O tema do trabalho consiste no estudo e implementao de um aplicativo com
funes de um osciloscpio, armazenado em um dispositivo mvel com sistema
operacional Android. Este dispositivo recebe o sinal amostrado por um Arduino, via
comunicao Bluetooth. Desta forma, o dispositivo com Android vai possibilitar ao
usurio a visualizao do sinal na tela do mobile.
1.2 Delimitao
O desenvolvimento restringe-se ao ambiente Android, plataforma que, junto com
o iOS (Apple), domina o mercado de smartphones. A escolha da plataforma se deve a
facilidade para desenvolver no ambiente Android, podendo-se utilizar computadores
com Windows, Mac OS ou Linux. Alm de ser uma plataforma aberta, qualquer um
pode baixar o cdigo-fonte do Android e o Android SDK para desenvolvimento, sem
custos.
1.3 Justificativa
A escolha da plataforma de desenvolvimento se justifica, conforme citado
anteriormente, ao baixo custo de desenvolvimento e por possuir, atualmente, um grande
nmero de consumidores.
Quanto ao osciloscpio, este um instrumento que nos permite observar e
efetuar medidas de um sinal de tenso eltrica. A inteno do projeto, pelo fato de ser
porttil, alcanar outros usurios.
1.4 Objetivos
O objetivo geral criar uma aplicao para Android que simule as
funcionalidades de um osciloscpio real, logicamente com algumas limitaes que o
hardware impe. O sinal a ser observado na tela do mobile o sinal lido e amostrado
pelo Arduino e transmitido via Bluetooth. O objetivo no desenvolver um aplicativo
que possua exatamente as mesmas especificaes ou algo prximo de um osciloscpio
real, pois para isso seria necessrio o uso de um hardware mais especfico e
consequentemente mais custoso.
1.5 Metodologia
Este projeto foi desenvolvido, em sua maioria, utilizando linguagem de
programao Java e uma biblioteca open source (achartengine) para construir os
grficos e exibi-los na tela. A IDE escolhida para o desenvolvimento do Software
Android foi o Eclipse, tambm open source e possui compatibilidade com as
ferramentas Android: componentes Android SDK e ADT Plugin para Eclipse. O
computador utilizado foi um com sistema operacional Windows 7.
Para o hardware, responsvel por tratar o sinal e depois transmiti-lo para o
dispositivo mvel, foram utilizados: um microcontrolador Arduino, modelo UNO R3,
com um conversor A/D com entrada analgica de no mximo 5 Volts de tenso e capaz
de amostrar sinais analgicos com resoluo de 10 bits e um mdulo de comunicao
serial Bluetooth, modelo HC-05. No software para Arduino foi utilizada a linguagem de
programao C e uma IDE disponibilizada pela prpria fabricante do Arduino que nos
permite desenvolver e fazer o upload do aplicativo para a memria do
microcontrolador.
1.6 Descrio
No captulo 2 falaremos sobre o Android: como est o cenrio atual para os
desenvolvedores e para os usurios, assim como sua arquitetura de sistema operacional,
bibliotecas e recursos disponveis e a estrutura de um aplicativo Android em linguagem
2
Captulo 2
Android
2.1 Sistema Operacional Android
O Android um sistema operacional para mobile que baseado em uma verso
modificada do Linux. Este foi adquirido, junto com a equipe de desenvolvimento, pela
Google, como parte da estratgia para entrar no mercado de dispositivos mveis.
Quando o iPhone foi lanado, muitos fabricantes tiveram que encontrar novas
formas de revitalizar seus produtos. Para estes fabricantes de hardware, o Android foi
visto como uma soluo, eles continuam a fabricar seu hardware e usam o Android
como o sistema operacional que o potencializa. Existir um sistema operacional para
mobile, open source, como o Android, possibilita-os customizar o sistema para
diferenciar seu produto.
Para os desenvolvedores, a principal vantagem de programar para Android que
ele oferece uma abordagem nica nas aplicaes. Desenvolvedores precisam
desenvolver somente para Android, e, com isso, suas aplicaes devem ser capazes de
rodar em diferentes dispositivos.
2.5.2.1 Activity
Para criar uma Activity basta criar uma classe Java que estende uma classe base
Activity.
Todos esses mtodos podem ser sobrescritos, j que com o extends pode-se
estender as funcionalidades da classe Activity e herdar todos os mtodos. O mtodo
super inicializa a classe pai antes de inicializar a classe herdeira.
A Activity definida de acordo com o arquivo XML que fica no diretrio
res/layout do projeto. O mtodo setContentView vai indicar o XML especfico da
activity.
Toda activity do projeto deve ser declarada no AndroidManifest.xml.
A classe base segue uma srie de eventos que definem o ciclo de vida de uma
Activity. Os eventos so:
8
Outros dois mtodos importantes dentro do ciclo de vida de uma activity so:
onSaveInstanceState() e o onRestoreInstanceState(). Quando uma activity pausada ou
parada, o objeto da classe Activity se mantm na memria, isto , o estado atual do
objeto permanece intacto. Todas as alteraes que o usurio faz so salvas e quando a
activity retorna para o primeiro plano, essas mudanas permanecem. Mas quando o
10
Este dois mtodos so muito teis quando uma mudana no dispositivo ocorre
durante a execuo do aplicativo, por exemplo, na orientao do mobile. Quando
acontece, a activity destruda e criada novamente. Pode-se tratar esta mudana de
orientao usando esses dois mtodos, pois, antes de a activity ser destruda, o
onSaveInstanceState()
chamado
e,
quando
for
reconstruda,
11
Tambm
podemos
adicionar
uma
tag,
para
cada
activity,
no
2.5.2.2 Intent
Quando a aplicao tem mais de uma activity, inevitavelmente ser necessrio
navegar de uma para outra. No Android, essa navegao entre activities conhecida
como intent.
Como visto anteriormente, toda nova activity do projeto deve possuir um
arquivo xml para definir o layout e uma classe que herda de Activity. No
AndroidManifest.xml deve-se declarar a nova activity tambm e, nesse arquivo, pode-se
inserir a tag intent-filter para definir o nome e a categoria do intent filter. Outras
activities que quiserem chamar esta nova devem faz-lo pelo nome do intent filter.
12
filter. Desta forma, a activity pode ser chamada por qualquer outra aplicao do
dispositivo mvel. Mas se a activity a ser invocada da mesma aplicao, o mtodo
startActivity() pode ser usado da segunda maneira abaixo.
13
14
15
16
17
18
19
20
Captulo 3
Hardware
3.1 Arduino
uma plataforma eletrnica open source, com um microcontrolador, que possui
um ambiente de desenvolvimento especfico para programar os componentes que o
fazem parte. Ela pode ser comprada j pr-programada ou, por ser open source, pode ser
construda pelo prprio usurio, ou seja, eles podem adapt-la as suas necessidades e
depois atualizar e distribuir suas prprias verses. Os esquemas, as caractersticas de
cada verso, os datasheets dos seus componentes, alm dos arquivos EAGLE para a
montagem da prpria placa podem ser encontrados no site do Arduino:
www.arduino.cc.
O software pode ser programado utilizando as linguagens C ou C++. No site do
Arduino esto disponveis para download a IDE, que permite o desenvolvimento e o
carregamento do Software para o microcontrolador, e diversos exemplos para auxiliar
todos os tipos de usurio do Arduino, que vo desde aqueles que levam como um
passatempo at aqueles que possuem certa especializao em eletrnica.
21
No projeto do osciloscpio foi utilizada a verso Arduino Uno R3, por se tratar
de uma verso que possui os componentes necessrios e por ser menos custosa. Nesse
tpico iremos tratar da arquitetura deste Arduino, evidenciando o conversor A/D, como
funciona a programao utilizando a IDE e o cdigo do projeto.
Destes, o mais relevante para ser citado o conversor A/D (ou ADC), pois foi
trabalhado muito em cima dele, neste projeto.
3.1.1.1 Arquitetura
O ADC usado para converter um sinal analgico (varia continuamente) em
valores digitais. O valor analgico representa alguma medida real, neste caso uma
medida de tenso eltrica. Como j conhecido, os valores digitais no so contnuos,
eles so amostrados um certo nmero de vezes a cada perodo de tempo.
O conversor A/D do Arduino realiza a converso atravs do mtodo de
aproximaes sucessivas. Abaixo temos um diagrama simples que ilustra o ADC.
Vin 10
2 1 .
Vref
23
24
16 MHz / 4 = 4 MHz
16 MHz / 8 = 2 MHz
16 MHz / 16 = 1 MHz
16 MHz / 32 = 500 kHz
16 MHz / 64 = 250 kHz
16 MHz / 128 = 125 kHz
25
26
27
prpria
instalao
da
IDE
(executvel
no
endereo
www.arduino.cc/en/Main/Software);
Necessrio tambm instalar os drivers referentes verso do hardware (placa)
utilizada;
J na prpria IDE, identificar e configurar a porta serial onde a placa est
conectada.
28
do Arduino e os pinos que possibilitam a comunicao foram ligados nos pinos da porta
serial do Arduino.
Segue abaixo uma imagem do dispositivo:
31
Captulo 4
Android Oscilloscope
4.1 Anlise do Cdigo para o Arduino
Depois de entender como funciona a programao no Arduino, foi feita uma
anlise do que era preciso ser feito no software do projeto e foram definidos a estrutura
e os requisitos para o programa no Arduino.
Neste tpico sero abordadas as principais definies no software do Arduino,
as tecnologias utilizadas e a comunicao serial via Bluetooth.
32
devemos ter uma quantidade de amostras que permita ao software do Android, aps
identificar o ponto de incio do grfico (trigger point), preencher a tela inteira.
A essa quantidade de amostras capturadas pelo osciloscpio dado o nome de
profundidade de memria, que seria igual taxa de amostragem multiplicado pela
configurao do tempo por diviso (escala no tempo) multiplicado ainda pela
quantidade de divises.
No exemplo abaixo do aplicativo Oscilloscope, podemos ver que temos cinco
divises no tempo e que a escala no tempo de 1,0 milissegundos por diviso. Sabendo
que a taxa de amostragem para esta situao de 100 kHz, podemos chegar concluso
que a profundidade de memria mnima de 500 pontos (amostras).
33
34
35
36
37
38
Device. A aplicao vai exibir a DeviceListActivity que permite fazer um escner por
dispositivos Bluetooth disponveis e selecionar a qual ir conectar-se. O mdulo
Bluetooth est representado como linvor na figura abaixo.
39
40
41
O fluxo dos dados comea quando o boto Start acionado, neste momento o
celular envia para o mdulo Bluetooth uma requisio de dados, esta mensagem
interpretada pelo microcontrolador e inicia-se processo de tratamento dos dados
convertidos, conforme explicitado anteriormente.
Para fazer o controle de transmisso e recepo dos dados, na aplicao
Android, foi utilizado um mtodo da classe Handler chamado handleMessage. Logo,
quando uma mensagem contendo os dados do sinal analgico convertido chega ao
celular, este mtodo de controle acionado. Este mtodo recebe como parmetro um
objeto da classe Message.
So quatro tipos de mensagem:
DEVICE_NAME quando ocorre esta mensagem, o usurio recebe um Toast
indicando que a conexo foi realizada com sucesso e exibe na tela o nome do
dispositivo ao qual se conectou;
42
43
No exemplo acima, podemos conferir que o Vmax e o Vpp esto de acordo com
o esperado, sabendo que o Timer 555 em sua configurao astvel possui tenso
mxima na sada igual a tenso de alimentao.
Na figura abaixo temos um outro exemplo com uma onda triangular:
44
45
46
Neste projeto, foi tomado como padro a regio do Trigger onde a derivada
positiva e o valor inicial calculado e igual mdia do valor mximo com o valor
mnimo do vetor de dados. Esse valor inicial s alterado quando o usurio alterar o
nvel de Trigger.
Para identificar se o Trigger est ativo e com bom funcionamento necessrio
verificar, em vrias atualizaes de tela, se a onda peridica est fixa, mas para
ilustrar seguem abaixo algumas imagens do osciloscpio, onde o valor do ponto de
Trigger foi alterado pelo usurio.
47
Para a escala de tempo os valores definidos por diviso so: 0,1 ms, 0,2 ms, 0,5 ms, 1.0
ms e 2.0 ms.
Seguem abaixo alguns exemplos de alterao das escalas:
48
Captulo 5
Concluses
Esse projeto teve incio durante o perodo letivo em que cursava a disciplina de
Software para Smartphone. O trabalho evoluiu de apenas um simulador no trabalho final
da disciplina eletiva a um aplicativo que realmente pode ser utilizado para anlises de
sinais de tenso. Obviamente, este trabalho ainda no tem a pretenso de substituir um
osciloscpio de bancada, que vem sendo utilizado h muitos anos em diversos
laboratrios de vrias universidades e escolas, mas pode entregar ao usurio (leigo em
eletrnica ou no) um Software para dispositivo mvel que possibilita anlise de sinais
de tenso em qualquer lugar.
Houveram dificuldades por se tratar de um projeto que lida com dois blocos
separados de hardware e software, foi necessrio um ajuste (sincronismo) entre as duas
camadas. Outra dificuldade seria em relao aos testes, foram necessrias diversas
visitas ao laboratrio para fazer uso do gerador de funes e do osciloscpio de bancada
(questes de comparao). Entre outras, todas foram superadas.
Realmente o trabalho atingiu os objetivos traados na proposta inicial, porm
existem muitas possibilidades e melhorias para este. Seguem abaixo alguns possveis
trabalhos futuros:
Voltage Level Shifting uma tcnica para ajustar de tenso de um circuito. O
conversor A/D utilizado nesse permite apenas entradas de 0 a 5 volts e maioria
dos conversores no mercado funcionam da mesma forma, porm possvel
ajustar o nvel de tenso na entrada do conversor para que o usurio possa medir,
por exemplo, um sinal de -10 a 10 volts, este sinal ser tratado pelo circuito de
voltage level shifting e entrar no conversor como um sinal de 0a 5 volts;
Osciloscpio com mais de um canal esse segundo canal poderia ser
implementado de diversas formas, talvez a mais correta seja a utilizao de um
Arduino com mais de uma porta serial. Dessa forma, o hardware poderia enviar
dois sinais em paralelo.
49
Bibliografia
[1] AGILENT TECHNOLOGIES., Arquiteturas de memria de osciloscpio Por que
toda memria de aquisio no criada igualmente. 2012
[2] DON WILCHER. Learn Electronics with Arduino. 2010.
[3] _________ Datasheets ATmega 328. 2009.
[4] RETO MEIER. Profissional Android 4 application development, 2012.
[5] http://www.exp-tech.de/service/datasheet/HC-Serial-Bluetooth-Products.pdf
[6] http://developer.Android.com/reference/Android/app/Activity.html
[7] http://www.achartengine.org/
[8] http://arduino.cc/
[9] http://www.atmel.com/Images/doc8161.pdf
50