Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
Robson Vitor Rezini
Brusque – Santa Catarina
Brasil
[email protected]
Resumo
Miguel Alexandre Wisintainer
Blumenau – Santa Catarina
Brasil
[email protected]
Este artigo apresenta o desenvolvimento de um protótipo de game embarcado em plataforma
Acorn RISC Machine (ARM) dotado de acelerômetro. São abordadas informações sobre o
dispositivo acelerômetro utilizado e sua função para com o protótipo, informações sobre o
processador ARM e seu kit de desenvolvimento, suas principais características e limites,
informações sobre a Integrated Development Enviroment (IDE) e a linguagem computacional
utilizada. É desenvolvido o protótipo do game baseado no game clássico Tetris, levando em
consideração seus limites e a utilização do acelerômetro para a detecção dos movimentos, que
serão utilizados pra controlar os movimentos das peças do jogo, sem o auxilio de qualquer
outro botão.
Palavras-Chave: Acelerômetro. Software embarcado. Microcontrolador ARM.
Abstract This article presents the development of a prototype board game on the platform Acorn RISC
Machine (ARM) with the accelerometer. They discussed details on the accelerometer used and
its function to the prototype, information on the ARM processor and development of their kit,
their main characteristics and limits, information on the Integrated Development Environment
(IDE) and the computer language used. It developed the prototype of the game based on the
classic Tetris game, taking into account its limits and use the accelerometer to detect
movements, which will be used for controlling the movements of parts of the game without the
aid of any other button.
Keywords: Accelerometer. Software board. ARM Microcontroller.
1 Introdução
1
Já é de conhecimento comum a todos que a indústria
de jogos tem crescido muito nos últimos anos, atingindo
a todas as faixas etárias, movimentando altos valores
financeiros e gerando muita lucratividade para os seus
investidores. Isso motivou um investimento em
pesquisas de novas tecnologias de software e hardware
para desenvolverem seus jogos, estreitando ainda mais
a distância entre a realidade e o mundo virtual dos
jogos.
1
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
Após uma pesquisa, a DFC Intelligence [a DFC
Intelligence é uma empresa de pesquisa e consultoria de
mercado focada na área de jogos] concluiu que haverá
um crescimento significativo na indústria de jogos
eletrônicos nos próximos anos. Até 2011, a indústria
mundial que valia US$ 29 bilhões até 2005, passará a
valer aproximadamente US$ 44 bilhões [1].
Com essas tecnologias novas, surgiu o acelerômetro,
que capta movimentos e age aos estímulos do jogador.
A utilização destes componentes na área de
entretenimento é muito atual. Sua utilização pode ser
muito extensa. Com a captura dos movimentos é
possível utilizá-lo para navegação em menus, controle
de objetos do mundo virtual como bola, jogador e peças
entre outros, e até outras aplicações que podem ir além
do mundo dos jogos, como detecção de terremotos,
detecção de impacto em discos rígidos e outros
dispositivos comuns do cotidiano. Os acelerômetros já
estão presentes em alguns celulares e consoles de
videogames de última geração, como o smartphone
Nokia N95, o console Nintendo Wii e o celular iPhone
da Apple.
Tentando contribuir para a popularização e
conhecimento do acelerômetro, surge a idéia de
prototipar um game utilizando-o como principal meio
de interface entre o jogador e o jogo, mostrando assim
suas funcionalidades e seus benefícios, não só ao
mundo dos jogos, mas também a outras aplicações que
necessitam de uma solução na qual o mesmo se encaixe.
1.1 Escopo e Problema
Como visto anteriormente, as indústrias estão
investindo em novas tecnologias como o acelerômetro
para atrair mais jogadores e como o mesmo está
presente na área de atuação da Ciência da Computação,
é muito importante o desenvolvimento e a pesquisa
deste componente para indivíduos que atuam nesta área,
não deixando assim o mercado se desenvolver sem a
pesquisa acadêmica. Como são altos os recursos
investidos, deve-se incentivar as pesquisas acadêmicas
nestas tecnologias, para atrair uma parte deste recurso
diretamente ao meio acadêmico, visando o
desenvolvimento do conhecimento. Agora, focando
diretamente no objeto alvo deste trabalho, o
acelerômetro, observa-se que não se trata de algo com
conhecimento difundido em meio acadêmico, se trata
de um novo recurso da área de eletrônica, ainda pouco
explorado nas instituições de ensino e um recurso que,
pelas suas características, tem um potencial de uso
quase ilimitado, dependendo unicamente da criatividade
do desenvolvedor na sua utilização.
Será utilizado o kit STM3210B-PRIMER da
STMicroleletronics, um kit de desenvolvimento
baseado no processador STM32 ARM Cortex – M3,
que possui um LCD de interface gráfica colorida,
conexão USB, buzzer, acelerômetro e utiliza programas
desenvolvidos em C/C++, itens que beneficiam o
desenvolvimento de jogos. Essa escolha também se
deve a própria STMicroeletronics desenvolver os
acelerômetros do console da Nintendo, o Wii, e do
Iphone da Apple provando desta forma que seus
produtos são precisos e de boa qualidade.
1.2 Objetivos
O objetivo deste artigo é desenvolver um protótipo
de jogo em plataforma ARM que utilize o componente
eletrônico acelerômetro como principal interface de
interação entre o jogador e o jogo.
Os objetivos específicos são:
a) identificar um jogo que possua características
compatíveis com o dispositivo STM3210BPRIMER.
b) adequar o roteiro e as regras do jogo selecionado
para compatibilizá-lo com as limitações do
dispositivo STM3210B-PRIMER;
c) portar o jogo selecionado para a plataforma ARM
do dispositivo STM3210B-PRIMER.
d) traduzir a informação do acelerômetro em
informação útil ao jogo selecionado.
e) utilizar o acelerômetro como única forma de
navegação no jogo.
2 Fundamentação Teórica
Relacionamos aqui, os conceitos mais importantes,
que servirão como base para o desenvolvimento do
protótipo. São descritas as principais características de
um microcontrolador ARM, do kit STM3210BPRIMER e do acelerômetro e apresentados alguns
trabalhos correlatos.
2.1 Microcontrolador ARM
Os microcontroladores ARM são um marco na
indústria de semicondutores. Nunca uma arquitetura foi
tão rapidamente difundida e maciçamente fabricada
como a arquitetura ARM.
Parte deste sucesso se deve às suas características
atraentes que incluem um design simples, alta
velocidade, grande diversidade de modelos e
fabricantes e quantidade de software disponível, entre
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
outras.
Não é por acaso que esses microcontroladores estão
presentes na maioria dos equipamentos portáteis
vendidos atualmente, incluindo telefones celulares,
computadores de mão (PDAs), MP3 players,
videogames etc. [2].
No caso do microcontrolador ARM STM32F103B6
presente
no
kit
de
desenvolvimento,
a
STMicroeletronics [3] descreve suas características
como, um microcontrolador ARM baseado na família
Cortex-M3 de 32 bits, com 72MHZ de freqüência
máxima, com até 128 Kbytes de memória flash, nove
interfaces de comunicação diferentes, uma delas sendo
USB 2.0 e sete timers internos.
De modo geral, os microcontroladores ARM, são
processadores de pequeno porte e baixo custo, que
possuem em um único chip o processador, os
registradores, a memória, as interfaces e os barramentos
necessários para o seu funcionamento.
2.2 Acelerômetro
A detecção de movimento em dispositivos é
possível graças ao acelerômetro, um dispositivo eletromecânico com tamanho e custos reduzidos. No kit, o
acelerômetro
LIS3LV02DL é utilizado, seu
funcionamento baseia-se em pequenos sensores que,
segundo a STMicroeletronics [4], é feito de uma
tecnologia microscópica, conhecida como Micro
Electro Mechanical Systems (MEMS), onde os mesmo
possuem pequenas estruturas de silício, representadas
na Figura 1, que são imersas em um substrato presentes
em três pontos do acelerômetro chamados âncoras,
essas estruturas são livres de movimentos, movendo-se
para qualquer direção, de acordo com a movimentação
do acelerômetro. Quando uma aceleração for aplicada
aos sensores, as estruturas se deslocam no substrato,
causando um desequilíbrio elétrico entre as hastes, esse
desequilíbrio é medido aplicando-o como um pulso
elétrico em um capacitor preso a estrutura, e depois se
lê a carga do mesmo, essa carga é muito baixa, mas
mesmo assim possui limites para não danificar os
componentes. Existe ainda um amplificador de sinais,
responsável por amplificar os pulsos elétricos.
Figura 1: Foto microscópica dos sensores do acelerômetro
LIS3LV02DL.
2.2 Kit STM3210B-PRIMER
O
STM3210B-PRIMER
é
um
kit
de
desenvolvimento inovador e de baixo custo, concebido
para fornecer divertimento e introdução às
características dos microcontroladores ARM Cortex –
M3 [5].
Este kit de desenvolvimento é muito útil para
pessoas que queiram iniciar o estudo dos acelerômetros,
já que possui vários itens que auxiliam no
desenvolvimento de aplicações e uma interface USB
para comunicação com outros dispositivos.
STMicroeletronics
[6]
descreve
seu
kit,
representado pela Figura 2, como sendo um pacote de
desenvolvimento inovador e divertido que fornece
ferramentas de introdução aos microcontroladores
ARM Cortex – M3, possuindo comunicação USB com
o computador e softwares e ferramentas de edição de
códigos desenvolvidos pela Raisonance baseados na
linguagem C++.
Figura 2: Kit de desenvolvimento STM3210B-PRIMER.
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
2.3 Trabalhos Correlatos
Existem atualmente alguns hardwares e softwares
desenvolvidos para utilizar o acelerômetro, a maioria
ainda presente na área de entretenimento. Como esses
hardwares e softwares são novos e estão tendo muito
sucesso em suas vendas, isso nos leva a crer que esta
área tem muito a ganhar com o uso do acelerômetro.
2.3.1 Nintendo Wii
O Nintendo Wii é um console de videogame de
última geração que possui uma característica diferente
dos consoles de outros fabricantes. O seu controle, o
Wii Remote, representado na Figura 3, possui
acelerômetros para a detecção de movimentos,
aumentando a interatividade com o jogo.
Figura 4: O iphone, sendo rotacionado e mudando a posição de sua
tela.
3 Desenvolvimento
Figura 3: Wii Remote, controle do console Nintendo Wii, que possui
um acelerômetro integrado.
2.3.1 Iphone
O iPhone, representado na Figura 4, é um novo e
revolucionário celular que permite fazer uma chamada
com um simples toque em sua tela, é um celular que
vem fazendo muito sucesso desde seu lançamento. No
iPhone o acelerômetro ainda é um dispositivo que não
chama muito a atenção, pois o celular possui muitos
outros itens que despertam mais a atenção dos usuários,
mas aos poucos vão sendo desenvolvidas novas
aplicações e o uso deste dispositivo pode se tornar mais
presente no aparelho. Basicamente no Iphone o
acelerômetro é utilizado para verificar em que posição
o celular está, em posição de retrato ou em posição de
paisagem. Quando o acelerômetro detecta a mudança da
posição da tela, ele gera uma interrupção e faz o iPhone
ajustar instantaneamente a tela de acordo com a nova
posição.
Como o principal objetivo deste artigo foi
desenvolver um protótipo de game que utilize o
acelerômetro como meio de navegação do jogador, foi
desenvolvido um protótipo do game Tetris para o kit de
desenvolvimento escolhido, a Figura 5 ilustra o game,
onde o acelerômetro fica com a tarefa de captar os
movimentos do usuário para movimentar as peças do
jogo. Este game diferenciou-se de outros possíveis
candidatos à implementação por se utilizar do
acelerômetro sem modificar as regras básicas e
clássicas do jogo. Este game baseia-se em encaixar as
peças de diferentes formatos que surgem, uma de cada
vez, no alto da tela, na base da tela de forma a
preencher totalmente as linhas horizontais, não
deixando nenhum espaço livre entre as peças. Quando
uma linha é preenchida, a mesma desaparece da tela e o
jogador soma pontos, o jogo termina quando as linhas
incompletas se empilham até o topo da tela do jogo e o
usuário não tem mais vidas para continuar a jogar.
continuar a jogar.
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
Arquivo
Figura 5: O jogo Tetris
Inicialização e
gerenciamento do botão.
buzzer.c
Funções dedicadas ao
buzzer, com suporte a sons
no formato RTTTL.
circle_api.h
Biblioteca de controle
geral do kit de
desenvolvimento.
draw.c
Utilitários de desenho.
lcd.c
Driver LCD para ST7637.
led.c
Gerenciamento dos LEDs.
mems.c
Inicialização e
gerenciamento do
acelerômetro.
menu.c
Gerenciador geral dos menus
e caixas de diálogo.
menu_app.c
Funções gerais para lidar
com o menu da aplicação.
menu_settings.c
Gestão de um menu.
pointer.c
Diversos utilitários para
gerenciamento dos
ponteiros.
rtc.c
Gestão e utilitários do
relógio interno.
Util.c
Funções úteis pata o kit,
como conversão de inteiro
para string.
3.1 Ferramentas e Codificação
Para desenvolver o código fonte da aplicação, foi
escolhida a IDE Ride7, isso se deve à ele ser a única
voltada á família STM32 de microcontroladores ARM,
prover todas as ferramentas necessárias para o
desenvolvimento do jogo e por utilizar a linguagem de
programação C/C++, bastante popular e muito utilizada
em meio acadêmico e profissional. Outro motivo que
levou a escolha dessa IDE, foi que a mesma é
desenvolvida pela da mesma fabricante do kit de
desenvolvimento (hardware), com isso diminuímos a
chance de ocorrer inconsistências e incompatibilidades
entre a IDE e o kit de desenvolvimento (hardware).
Esta IDE, traz um padrão de codificação e
documentação especificados pelo fabricante, que se
seguido, permitira a postagem deste protótipo no fórum
do próprio fabricante que aborda o kit de
desenvolvimento. Resolveu-se seguir esta metodologia
padronizada afim de manter uma qualidade e utilizar
mais tarde o fórum do fabricante como ferramenta de
testes, pois os códigos fontes e arquivos executáveis são
todos submetidos à avaliação dos programadores do
fabricante e posteriormente divulgados a comunidade
de desenvolvedores.
Acompanhando o kit de desenvolvimento, vem a
documentação e a Firmware do mesmo, com APIs já
configuradas para trabalhar com os componenetes do
kit, esta API se chama Circle-OS. Com ela pode-se
acessar informações do acelerômetro, clock de
processamento, eventos e configurações dos botões e
escrita do LCD. A Tabela 1 ilustra os arquivos e suas
funções na API.
Descrição
button.c
Tabela 1: Tabela com os arquivos da API Circle-OS.
A partir desta API, foi possível gerenciar o
comportamento do acelerômetro, utilizando o arquivo
“mems.c”, sendo o mais importante para o
desenvolvimento
do
protótipo,
pois
fornece
informações sobre o acelerômetro através da função
“MEMS_GetInfo( )”, essa informação é guardada em
um tipo de estrutura da própria biblioteca chamada
“tMEMS_Info” que pode ser acessada em qualquer
momento na aplicação, desde que declarada, conforme
código fonte da Figura 6.
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
/***************************************************************
* Function Name : Application_Ini
* Description
: Initialization function of Circle_App. This
* Input
: None
* Return
: MENU_CONTINUE_COMMAND
***************************************************************/
enum MENU_code Application_Ini ( void )
{
POINTER_SetMode(POINTER_OFF);
if(strcmp(UTIL_GetVersion(), NEEDEDVERSION) < 0)
{
return MsgVersion();
}
Initial_MEMS_X = 0;
Initial_MEMS_Y = 0;
MEMS_GetInfo()->DoubleClick = 0;
pMEMS_info = (MEMS_GetInfo());
LCD_SetScreenOrientation ( V12 ) ;
VariableInit();
DesignInit();
}
return MENU_CONTINUE_COMMAND;
Figura 6 : Exemplo de uso da função MEMS_GetInfo().
A partir dessa informação pode-se começar a
trabalhar com o acelerômetro, traduzindo as variáveis e
seus valores para um significado usual no protótipo,
como mostra a Figura 7.
//Get information from the accelerometer
Current_MEMS_X = pMEMS_info -> OutX_F4 >> 2;
Current_MEMS_Y = pMEMS_info -> OutY_F4 >> 2;
deltaX = Current_MEMS_X - Initial_MEMS_X;
deltaY = Current_MEMS_Y - Initial_MEMS_Y;
//Check the direction of movement
if(abs(deltaX)>abs(deltaY))//more X than Y
{
if(Current_MEMS_X>0) Direction=2;
if(Current_MEMS_X<0) Direction=4;
}
if(abs(deltaX)<abs(deltaY))//more Y than X
{
if(Current_MEMS_Y>0) Direction=3;
if(Current_MEMS_Y<0) Direction=1;
}
Figura 7 : Exemplo do uso das informações do acelerômetro.
A primeira parte do código da Figura 7 utiliza duas
variáveis de locomoção do acelerômetro, a “OutX_F4”
e a “OutY_F4”, que trazem a posição dos acelerômetros
nos eixos X e Y respectivamente, no momento em que
são atribuídos. Com estes valores, podemos calcular as
quanto foi a movimentação de X e Y em relação á
posição inicial de X e Y, obtendo assim um valor delta,
representado pelas variáveis “deltaX” e “deltaY”.
Como no protótipo implementado queria-se somente
saber para qual direção o jogador moveu o kit (para
cima, ou para baixo, ou para o lado esquerdo ou direito)
a fim de mover as peças do game, resolveu-se calcular
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
qual a direção que obteve mais deslocamento, sendo
assim calculou-se se X ou Y obteve maior
movimentação, sabendo assim se a movimentação foi
horizontal (eixo x) ou vertical (eixo y), após isso bastou
apenas sabe se os valores eram negativos ou positivos
para designar se o movimento foi para o lado esquerdo
ou direito, no caso da movimentação horizontal, ou foi
para cima ou para baixo, no caso da movimentação
vertical. Esse trecho do código de checagem de direção
e movimentação foi a parte mais importante do trabalho
pois com isso pode-se saber qual foi a intenção do
jogador e quais as medidas devem-se ser tomadas para
mover ou alterar o status do jogo.
Com as funções de captura de movimentos
implementadas, bastou-se codificar o game e suas
funções de rotação, movimentação, desenho de
imagens, controle de pontos e outras mais pertinentes
ao jogo em si mesmo e não ao uso do acelerômetro, por
isso não se faz necessário a sua documentação neste
artigo. Também é possível achar inúmeras
implementações do jogo Tetris na internet para diversas
plataformas, tendo-se uma idéia geral de sua
implementação.
3.2 Resultados e Discussão
Para demonstrar e testar na prática o funcionamento
do protótipo resolveu-se submeter o mesmo à avaliação
dos técnicos, que não é reportada ao desenvolvedor, e
dos usuários do fórum do fabricante do kit que hoje
conta com trinta e seis projetos cadastrados e quatro mil
setecentos e oitenta e três usuários cadastrados , com
isso tem-se uma validação real do protótipo, visando
uma qualidade boa de código, funcionamento e
jogabilidade, provando que o uso do acelerômetro no
desenvolvimento do game foi justificado, e que o
mesmo ocorreu de maneira a não prejudicar a
jogabilidade, trazendo mais benefícios e desafios ao
jogador.
Após submeter o protótipo ao fórum do fabricante,
teve-se uma grande surpresa. Além de o projeto ter
passado pela avaliação dos programadores do
fabricante, o mesmo apareceu como destaque na página
inicial do fórum, apresentando a todos o game como
projeto destaque. Nessa situação, começaram a aparecer
inúmeros downloads do mesmo, e visitas à página de
documentação e download do protótipo. Após duas
semanas presente no fórum do fabricante, o protótipo
de game Tetris desenvolvido já tinha a melhor
avaliação de seus jogadores, ou seja, foi o projeto
melhor avaliado, liderando a lista de projetos mais
populares do fórum. O endereço do fórum é
http://www.stm32circle.com/.
4 Conclusão
Pode-se concluir que se conseguiu chegar aos
objetivos propostos, desenvolvendo um game em
plataforma ARM que utilize o acelerômetro como
interface de captação de movimento, provando que seu
uso contribui ainda mais para a jogabilidade do game.
Conclui-se também que o acelerômetro se trata de um
dispositivo multiuso com infinitas aplicações, atuando
em várias áreas da informática, como entretenimento,
segurança, portabilidade e outras. Como o seu uso é
abrangente espera-se que surjam cada vez mais
aplicações e tecnologias que o utilizem. O meio
acadêmico tem muito conhecimento a desenvolver
acerca do mesmo, conseguindo assim atrair
investimentos acadêmicos criando tecnologias novas. O
desenvolvimento deste jogo provou que até pequenas
aplicações e jogos podem se fazer do uso do mesmo
atraindo mais usuários e jogadores, como provou o
fórum do fabricante, onde o jogo obteve sucesso e
popularidade muito rapidamente. Mesmo o game não
sendo um game de alta tecnologia gráfica com
interfaces 3D e uso de inteligência artificial, com o uso
do acelerômetro, pode-se conseguir fazer com que o
mesmo chame a atenção dos jogadores.
Idéias de novas aplicações que o utilizem surgem a
toda hora, pois a imaginação é o limite de seu uso.
Aplicações como dispositivos de segurança anti-choque
em HD’s, dispositivos de checagem de nível de
inclinação, coordenação de movimentos, dispositivos
de equilíbrio para robôs bípedes são só alguns
exemplos de aplicações futuras que podem ser
implementadas utilizando o acelerômetro como sensor.
O crescimento do seu uso e tecnologia, vai só depender
do desenvolvimento de novas pesquisas, que não param
mais de surgir.
Referências
[1]
PORTAL TERRA. Indústria mundial de games
valerá US$ 44 bilhões. [S.l.], 2006. Disponível
em:
<http://games.terra.com.br/interna/0,,OI1162241
-EI1702,00.html>. Acesso em: 25 mar. 2008.
[2]
PEREIRA,
Fábio.
Tecnologia
ARM:
microcontroladores de 32 bits. São Paulo: Érica,
2007.
[3]
STMICROELETRONICS.
STM32F103x6
STM32F103x8 STM32F103xB: performance
line, ARM-based 32-bit MCU with flash, USB,
CAN, seven 16-bit timers, two ADCs and nine
Robson Vitor Rezini Protótipo de game embarcado em plataforma ARM dotado de acelerômetro
e Miguel Alexandre Wisintainer
communication interfaces. [S.l.], 2008b.
Disponível
em:
<http://www.st.com/stonline/products/literature/d
s/13587.pdf >. Acesso em: 26 mar. 2008.
[4]
STMICROELETRONICS.
LIS3LV02DL:
MEMS inertial sensor 3-axis - ±2g/±6g digital
output low voltage linear accelerometer. [S.l.],
2008a.
Disponível
em:
<http://www.st.com/stonline/products/literature/d
s/12094/lis3lv02dl.pdf>. Acesso em: 26 mar.
2008.
[5]
RAISONANCE. STM32-primer: fun, easy
introduction kit for STM32 microcontrollers.
[S.l.],
2007.
Disponível
em:
<http://elmicro.com/files/raisonance/stm32primer-manual.pdf>. Acesso em: 01 abr. 2008.
[6]
STMICROELETRONICS. STM32 primer.
[S.l.],
2007a.
Disponível
em:
<http://www.st.com/mcu/contentid-105-110STM3210B_PRIMER.html>. Acesso em: 01
abr. 2008.
Download

Protótipo de game embarcado em plataforma ARM dotado de