Automodelo de Controle Remoto Controlado por Acelerômetros Henrique Martins1 & Leandro Piqueira2. Orientador: Prof. Renato Giacomini. TG-01-2012-EP 1,2 Graduandos do Curso de Engenharia da Computação da USJT, turma de 2012. e-mail1:[email protected]; e-mail2: [email protected] Resumo -. Este trabalho descreve o uso de dispositivos móveis comerciais (terminais de telefonia celular) aplicados ao controle de um automodelo. Os dispositivos são utilizados sem nenhuma alteração de hardware, de forma que seu uso não fica restrito à aplicação. O automodelo é controlado através do acelerômetro integrado a um dos dispositivos, o dispositivo de operação, dotado de Sistema Operacional (SO) Android. Os dados de controle trafegam em rede Wi-fi e são entregues ao outro dispositivo móvel, também com sistema operacional Android, que está acoplado ao automodelo. Os comandos são repassados então via comunicação Bluetooth a uma placa eletrônica, que aciona os motores do automodelo. O dispositivo de operação exibe imagens de vídeo capturadas do dispositivo acoplado ao automodelo, o que possibilita monitorar o percurso do automodelo mesmo sem estar próximo a ele. Neste artigo será relatado como é possível a integração entre esses dispositivos e a possibilidade de se usar o sistema operacional Android para integrar sistemas tão complexos e poderosos como smartphones com motores elétricos e outras cargas. Abstract -. This paper describes the use of commercial mobile devices (mobile terminals) applied to control an automodel. The devices are used without any hardware modification, so that its use will not be restricted to the application. The automodel is controlled by the integrated accelerometer of one of the devices, the operational device, with Operational System (OS) Android. The control data travels over Wifi Network and are shipped to the other mobile device, with Android operational system too, that is attached to the automodel. The commands are forwarded through Bluetooth communication to an electronic board, which drives the automodel motors. The operational device shows video frames captured from the device attached to the automodel, this allow to monitoring the automodel route even without being close to it. In this paper will be reported how is possible the integration between this devices and the possibility to use Android operational system to integrate complex systems and powerful smartphones with electric motors and another loads. (Palavras-chave: Android, Acelerômetro, Wifi, Bluetooth, Arduino) Introdução Controlar um automodelo é uma tarefa relativamente simples. Uma implementação com dispositivos de Radio Frequência e alguns botões (push bottons) permite criar um controle com cerca de 20 metros de alcance. Porém, adotar uma abordagem diferente torna mais interessante a criação desse controle, tanto do ponto de vista de custo, como de desempenho. Utilizar outro meio de comunicação do controle com o automodelo como, por exemplo, uma rede Ethernet Wifi, deve levar em consideração o custo de processamento e do protocolo de comunicação requerido, pois pode haver certa morosidade na comunicação entre os dispositivos. Porém, se o objetivo do automodelo não requerer altas velocidades e atuação em tempo real restrito, utilizar esse meio traz benefícios. Redes Ethernet Wifi possuem um alcance de cerca de 250 metros. Uma vantagem dessas redes é a capacidade de estendê-las por repetidores ou, até mesmo, por Access Points (dispositivo em uma rede sem fio que realiza a interconexão entre todos os dispositivos móveis) interconectados como, por exemplo, em uma rede Wifi de um grande edifício corporativo. Para controlar um automodelo pode-se desenvolver um controle capaz de simular um volante, ou seja, os comandos laterais (esquerda e direita) podem ser gerados pela inclinação do controle. Os dados de inclinação podem ser fornecidos por algum sensor capaz de medir a inclinação de um eixo perpendicular ao eixo da aceleração da gravidade. Acelerômetros são sensores capazes de medir a aceleração em até três eixos no espaço. Esses sensores permitem que dispositivos possam se basear na aceleração da gravidade para obter uma referência de seu posicionamento. Smartphones vêm se popularizando muito nos últimos anos, evoluindo cada vez mais e sempre com recursos que tornam a interação do usuário com o dispositivo uma experiência menos virtual e mais realista. Recursos como acelerômetros, giroscópios, acesso a redes Ethernet Wifi, Bluetooth, GPS e câmera de vídeo tornaram simples celulares poderosas máquinas portáteis. O Android, Sistema Operacional para dispositivos móveis desenvolvido pela Google, integra com excelência os recursos desses dispositivos e permite a programadores desenvolverem softwares que acessam e utilizam esses recursos de maneira rápida, simples e objetiva. É possível a utilização de Smartphones para o controle de um automodelo valendo-se de seus recursos de conexão à redes Ethernet Wifi e captura dos dados de seu acelerômetro integrado. Esse artigo apresenta o desenvolvimento de um controle para um automodelo com acelerômetro e comunicação por redes Ethernet Wifi utilizando dispositivos móveis com Sistema Operacional Android e seus recursos. Motivação O interesse pelo trabalho, da forma como foi concebido está relacionado tanto ao aspecto social quanto à questão de sustentabilidade. Por um lado, demonstrar ao público a aplicabilidade de Smartphones Android, normalmente utilizados e adquiridos para sua finalidade fundamental de comunicação e encorajar desenvolvedores a criar soluções que contribuam para sociedade como um todo. Por outro, otimizar o uso de energia, utilizando um sistema (máquina e sistema operacional) que são em essência desenvolvidos visando ao baixo consumo. O Android é um Sistema Operacional criado para equipamentos de baixo consumo de energia elétrica. Este Sistema Operacional foi concebido para gerenciar recursos de maneira a economizar o máximo de energia possível, maximizando a autonomia dos dispositivos móveis em que é aplicado. Expandir o domínio de aplicações para Smartphones ajuda na diminuição de geração de lixo eletrônico, pois torna desnecessários dispositivos caros para realizar tarefas específicas. A ideia para o controle de um automodelo utilizando acelerômetros integrados a um dispositivo com SO Android surgiu graças a um jogo de corrida para Android chamado GT Racing: Motor Academy, desenvolvido pela Gameloft, no qual o veículo é conduzido através dos acelerômetros do dispositivo com SO Android. Essa ideia já havia sido explorada e inclusive em carros de Formula 1. Desenvolvedores utilizaram conceitos semelhantes ao deste projeto para o desenvolvimento de um aplicativo para Smarthphones capaz de controlar um automodelo a partir do acelerômetro integrado ao dispositivo. Esse projeto foi modificado por engenheiros da escuderia MacLaren e, assim, foi possível que o piloto Lewis Hamilton controlasse uma MacLaren sem estar em seu cockpit. Metodologia Para montagem do automodelo os componentes principais utilizados foram: • Chassi de um automodelo radio controlado com, apenas, motor DC 12V de tração traseira e rodas; • Suporte automotivo de GPS para suportar o dispositivo Android embarcado; • Placa microcontroladora ( no protótipo, uma placa Arduino Uno com Microcontrolador ATMega328); • Módulo Bluetooth (EGBT-046S); • Atuador em ponte H (CI Ponte-H L293D); • 2 Smartphones com Sistema Operacional Android 2.2 ou superior; • Servomotor (Futaba S3004); Montagem • Arduino: Parafusado o chassi do automodelo. Foi montada uma protoshield sobre o Arduino para facilitar a instalação dos componentes eletrônicos. • Servomotor: Acoplado ao chassi do automodelo. Alimentação ligada na saída de 5v do próprio Arduino. • Ponte H (CI L293D): Para alimentação do CI foi utilizada a saída de 5V do próprio Arduino. Ao pino Vs (Supply Voltage), de alimentação do Motor DC, foi conectada uma fonte de 12V composta por 8 pilhas alcalinas comuns. Dois pinos de entrada foram conectados a duas saídas digitais do Arduino para o chaveamento dessas (saídas que fornecerão 12V ao Motor DC). • Motor DC: Cabos de alimentação do Motor foram conectados as saídas do CI L293D (mencionados no item anterior). • Módulo Bluetooth (EGBT-046S): Para alimentação do módulo foi utilizada a saída de 5V do próprio Arduino. O módulo foi conectado aos pinos Rx/Tx de comunicação via Serial RS232 com o Arduino. Controle de Motor DC com Arduino e Ponte H Os pinos de entrada da ponte H são controlados pelos pinos de saídas digitais do Arduino. De acordo com o nível lógico nessas entradas são definidos os valores das saídas conectadas ao Motor DC. Por exemplo: Se o nível lógico na Entrada1 for 1, e na Entrada2 for 0, a tensão na Saída1 será Vs (Suply Voltage) e na Saída2 será 0 (neutro) e vice-versa. As saídas digitais do Arduino são capazes de fornecer um sinal PWM (Pulse Width Modulation) que possibilita o controle da largura do pulso fornecido periodicamente. Com isso é possível controlar o valor da alimentação entregue ao Motor DC, possibilitando o controle da velocidade de rotação deste. Para controlar a velocidade do Motor DC o ciclo de trabalho do sinal PWM nas saídas digitais do Arduino foi dividido em quatro valores os quais foram denominados de Marchas, em analogia ao uso de marchas em automóveis. As marchas definidas foram: • • • • Marcha I (Marcha 3): O ciclo de trabalho do motor é 100%. O automodelo avançará em sua velocidade máxima. Para o movimento regressivo do automodelo, ou Ré, o controle por marchas não é considerado. O Motor DC recebe uma tensão proporcional ao ciclo de trabalho do PWM em 78%, para que o automodelo não se movimente rápido demais, o que não é necessário neste tipo de movimento. Controle do Servomotor Direcional Ao iniciar o Sistema do Automodelo o Arduino posiciona o Servomotor em um ângulo inicial de 90 graus (referência). O Arduino recebe, via Serial, o ângulo e a direção do giro. O ângulo é recebido como caracteres ASCII e convertido para Integer parar Figura 1 - Esquema do circuito de controle dos motores possibilitar os cálculos. Em seguida é realizado o Marcha N (Marcha neutra): O ciclo de cálculo do ângulo a ser enviado ao Servomotor de trabalho do PWM é 0%. Ou seja, o acordo com a direção, por exemplo: automodelo não se movimenta caso receba - Girar 35 graus para direita: um comando de avanço. - Soma-se 90 mais 35, então 125 graus; Marcha G (Marcha 1): O ciclo de trabalho - Ângulo é enviado ao do PWM é de 56,86%. O suficiente para o Servomotor que se posiona em automodelo avançar lentamente. 125 graus (35 graus a mais da referência); Marcha H (Marcha 2): O ciclo de trabalho - Girar 10 graus para esquerda: do motor é 66,66%. O que faz o - Subtrai-se 10 de 90, então 80 automodelo avançar a uma velocidade graus; razoavelmente rápida. - Ângulo é enviado ao Servomotor que se posiona em 80 graus (10 graus a menos da referência); Recebimento de dados pelo Arduino via Serial (RS232) Para estabelecer a comunicação entre os dispositivos que se comunicam via wifi com o Arduino, foi utilizado o módulo bluetooth EGBT046S. Sua função é passar os comandos enviados pelo Controle via serial (RS232) para o Arduino. Sua principal função e muito importante está em fechar a ponte de comunicação entre os dispositivos. O software recebe os comandos via Serial RS232, ou seja, diretamente do Modulo Bluetooth ligado a porta serial do Arduino. O Software possui um sistema de segurança para impedir que o automodelo permaneça em movimento em caso de perda de comunicação entre os dispositivos. O sistema de segurança funciona como um Watchdog, que incrementa uma variável caso não haja informação chegando pela Serial. Ao chegar informação pela Serial, essa variável é zerada, porém, caso não chegue informação, a variável é incrementada até um determinado limite. Quando o limite é atingido o sistema manda o automodelo parar e a variável é zerada. Software de Controle (Arduino) Software de Controle - Cliente (Android) O software de controle elaborado para Arduino controlar o automodelo foi feito para atuar sobre os motores ao receber determinados comandos. Os comandos são compostos por caracteres ASCII e todos possuem 3 (três) bytes. Comando FRT TRA PAR Exx (xx 00 à 90) Dxx (xx 00 à 90) MCN MCG MCH MCI Observações Faz o automodelo andar para frente na velocidade especificada pelo ultimo comando Myy recebido. Faz o automodelo ir para trás na velocidade máxima. A Marcha não interfere nesse movimento. Faz o automodelo parar caso esteja em movimento para frente ou para trás. Faz o Servomotor que controla a direção do automodelo virar para esquerda na quantidade de graus informado. Faz o Servomotor que controla a direção do automodelo virar para direita na quantidade de graus informado. Seleciona marcha neutra – Automodelo não se move. Seleciona primeira marcha – Automodelo se move em velocidade baixa. Seleciona segunda marcha – Automodelo se move em velocidade média. Seleciona terceira marcha – Automodelo se move em velocidade alta. O Software de comunicação entre os dispositivos móveis foi desenvolvido em Java versão 1.5. O Software possui integradas as funções de Cliente (controle do automodelo) e Servidor (dispositivo móvel acoplado ao automodelo). O controle utiliza o acelerômetro interno do dispositivo móvel a fim de detectar suas variações para determinar para qual lado o usuário está virando o automodelo. O dispositivo utilizado como controle deve ser utilizado em Landscape, ou seja, na horizontal e, na maioria dos dispositivos, com os botões de acesso a funções do dispositivo virados para a direita. Figura 2 - Dispositivo móvel em Landscape mostrando como o controle está disposto. Foi utilizado o eixo Y do acelerômetro do dispositivo para verificar o lado e inclinação com a qual o aparelho está sendo girado. O eixo Y corta o aparelho longitudinalmente na direção do topo à base do aparelho, portanto ideal para a coleta da informação para controlar o automodelo. Figura 3 - Exibindo como o Eixo do acelerômetro está disposto nos dispositivos móveis. A informação capturada do eixo Y é a aceleração que está sendo captada nele, ou seja, se o dispositivo estiver na vertical, uma leitura em Y irá fornecer exatamente a aceleração da gravidade no local, ou seja, um valor em torno de 9,8 (que significa 9,8 m/s²). Figura 4 - Dispositivo na vertical de cabeça para cima – O valor lido em Y é positivo, pois está na mesma direção que a força da gravdiade. Figura 5 - Dispositivo na vertical de cabeça para baixo – Valor lido em Y é negativo, pois está na direção contrária a força da gravidade. Figura 6 - Dispositivo na horizontal – Valor lido em Y é zero, pois o eixo está perpendicular a força da gravidade. A geração dos comandos direcionais é feita da seguinte maneira: 1. Soma os dois primeiros valores coletados do eixo Y e tira a média; 2. Soma os dois próximos valores coletados do eixo Y e tira a média; 3. Subtrai o valor da 1° média pelo valor da 2° média tirando o valor absoluto do resultado; 4. Se o valor absoluto da diferença for maior que 0.5, então envia o valor da 2° média para gerar o comando de direção, pois a variação detectada foi significativa (o controle foi girado/movimentado); 5. Se a variação foi significativa, divide-se o valor da 2° média por 10 (valor próximo ao máximo lido pelo acelerômetro) e multiplica-se o resultado por 60 (grau máximo de giro enviado para o Servomotor); 6. Se o valor da 2° média for negativo então manda girar para a Esquerda no grau calculado, do contrário manda girar para a Direita; 7. Caso a variação não seja significativa, obtém-se os próximo dois valores do acelerômetro e calcula-se a 2° média novamente, e comparando-a com a 1° média até que se detecte uma variação considerável Por exemplo: 1. Valores lidos em Y: -7,3 e -6,8 2. Média My1: -7,05 3. Valores lidos em Y: -5,0 e -4,6 4. Média My2: -4,8 5. Valor absoluto da diferença entre My1 e My2: 2,25 6. Variação de 2,25 maior que 0,5, então divide-se My2 por 10 e multiplica por 60: -28 7. Retira o valor absoluto: 28 8. Concatena a String de direção: E28 No controle é possível selecionar dois modos de controle do automodelo, modo Normal e modo Free Navigation (FV). No modo Normal de controle os comandos direcionais de avanço para frente e para trás são gerados a partir de botões dispostos na tela do controle. No modo Free Navigation os comandos de avanço para frente e para trás são gerados a partir da inclinação, para frente ou para trás, do controle. Isso é possível, pois são feitas leituras do Eixo Z do acelerômetro integrado ao dispositivo de controle. O Eixo Z é disposto transversalmente ao dispositivo e sua leitura é análoga à do eixo Y. O System Core é o núcleo do sistema. Possui duas filas internas de dados – Frame Queue (Fila de Frames de vídeo) e Command Queue (Fila de Comandos). A Frame Queue é a fila responsável por receber os Frames via Ethernet e disponibilizar os Frames para que sejam processados e exibidos ao usuário. A Command Queue é a fila responsável por receber os comandos gerados pelos eventos do acelerômetro e botões de controle e disponibilizar esses comandos para que sejam enviados através da rede Ethernet Wifi. Figura 7 - Diagrama exibindo a integração entre os módulos do Software de Controle A seleção das marchas está disposta a direita no painel do controle. O automodelo possui 4 possíveis marchas (0 à 3), sendo que 0 é marcha neutra (o automodelo não se move caso receba algum comando de avanço) e 3 é a maior marcha (velocidade máxima). O controle do automodelo também exibe, em tempo real, os Frames de vídeos capturados pela câmera do dispositivo Servidor. Os Frames são recebidos através da rede Ethernet Wifi como arrays de bytes no formato JPEG e são convertidos para bitmaps (mapa de bits) para a exibição ao usuário na tela do aparelho. O software do controle, ou Cliente, é dividido nos seguintes módulos: • Socket Gate; o Receiver Worker; o Sender Worker; • System Core; o Frame Queue; o Command Queue; • Frame Viewer; • Accelerometer Listener; • Command Buttons Listener; O Socket Gate é o módulo responsável por criar e manter as tarefas Trabalhadoras de envio e recebimento de dados via rede Ethernet Wifi. A tarefa de envio de dados (Sender Worker) trabalha retirando os dados disponíveis na Command Queue do System Core e enviando-os ao dispositivo Servidor através da rede Ethernet Wifi. A tarefa de recebimento de dados (Receiver Worker) trabalha recebendo os Frames de vídeo enviados pelo Servidor e colocando-os na Frame Queue. O Frame Viewer é o módulo responsável por retirar os Frames de vídeo disponíveis na Frame Queue do System Core, processar e desenha-los no painel de visualização de vídeo do controle. O Accelerometer Listener é o módulo responsável pela captura de dados do acelerômetro e geração dos comandosde controle do automodelo. Após processar os dados e gerar os comandos, esse módulo os coloca na Command Queue do System Core para disponibilizá-los para envio ao Servidor. O Command Buttons Listener é o módulo responsável pela captura dos eventos de pressionar/soltar os botões de comando do controle. Após capturar os eventos, esse módulo os processa gerando os comandos e os insere na Command Queue do System Core para disponibilizá-los para envio ao Servidor. Software de Controle - Servidor (Android) O dispositivo móvel Servidor recebe os comandos de controle do automodelo via rede Ethernet Wifi e os transmite para o Arduino via Bluetooth. • Bluetooth Gate; o Sender Worker; System Core, como no Software do Controle, é o núcleo do sistema e, também, possui as duas filas internas para transição de comandos e Frames de vídeo. Neste caso a Frame Queue é alimentada com os Frames de vídeos capturados pela câmera do dispositivo em tempo real e disponibilizados para envio ao Controle do automodelo. O Módulo Bluetooth EGBT-046S conectado ao Arduino possui apenas a função de Slave (escravo), ou seja, somente recebe dados, não possui capacidade de envio de dados ao Master (Mestre – nesse caso, o dispositivo Server). A Command Queue recebe os comandos enviados pelo Controle e os disponibiliza para envio ao automodelo ou processamento interno. Além de efetuar a ponte entre o dispositivo de controle e o Arduino, o dispositivo Servidor também acessa sua câmera integrada para captura e transmissão dos Frames para o dispositivo de controle em tempo real. Os Frames de vídeo são O Socket Gate é o módulo responsável por criar e manter as tarefas Trabalhadoras de envio e recebimento de dados via rede Ethernet Wifi. A tarefa de envio de dados (Sender Worker) trabalha retirando os Frames de vídeo disponíveis na Frame Queue do System Core o os enviando ao Controle Figura 8 - Diagrama exibindo a integração entre os módulos do Software Servidor capturados no formato NV21 (alta qualidade) e são convertidos para JPEG (baixa qualidade) para serem enviados através da rede Ethernet Wifi. A taxa de captura é de 5 frames por segundo e a resolução da imagem capturada é de 240x160. O software do dispositivo Servidor, ou simplesmente Servidor, acoplado ao automodelo, é divido nos seguintes módulos: • • • • Socket Gate; o Sender Worker; o Receiver Worker; System Core; o Frame Queue; o Command Queue; Camera Viewer; Internal Commad Resolver; do automodelo através rede Ethernet Wifi. A tarefa de recebimento de dados (Receiver Worker) trabalha recebendo os dados através da rede Ethernet Wifi e os inserindo na Command Queue do System Core para disponibilizá-los para envio ao automodelo ou processamento interno. O Camera Viewer é o módulo responsável por capturar os Frames de vídeo da câmera integrada do dispositivo móvel, compacta-los e inseri-los na Frame Queue do System Core para disponibilizá-los para envio ao Controle. Os Frames são capturados diretamente da câmera no formato NV21 e convertidos para o formato JPEG a fim de compacta-los para facilitar o envio através da rede. O Internal Command Resolver é o módulo responsável por receber e processar comandos destinados apenas ao dispositivo Servidor, como por exemplo, acionamento da luz do flash do dispositivo móvel. O Bluetooth Gate é o módulo responsável por efetuar a conexão via Bluetooth com o Módulo EGBT-046S conectado ao Arduino e, também, criar e manter a tarefa de envio dos dados de comandos destinados ao automodelo. A tarefa de envio de comandos (Sender Worker) retira os comandos destinados ao automodelo da Command Queuer do System Core e os envia via Bluetooth ao Arduino para que este controle os motores do automodelo. Como protocolo de comunicação através da rede Ethernet Wifi havia sido adotado o TCP/IP (Transmition Control Protocol / Internet Protocol). O protocolo TCP/IP efetua uma conexão entre um Cliente e um Servidor e todo frame de dados enviados necessitam do recebimento de um frame de Acknoledge (reconhecimento) do destinatário para confirmar o recebimento ao remetente. Como a rede Ethernet Wifi possui vários dispositivos conectados é comum que alguns frames de dados demorem a ser recebidos e confirmados, pois a rede está constantemente ocupada. Devido a essa peculiaridade, ocorriam travamentos no envio dos Frames de vídeo e comandos de controle através da rede. Isso causou uma mudança na abordagem e o protocolo de comunicação através da rede Ethernet foi alterado para UDP (User Datagram Protocol). O UDP utiliza o envio de Datagramas como padrão que são equivalentes aos frames TCP/IP, porém não necessitam de confirmação de recebimento. Numa comunicação UDP não há definição de um Cliente e um Servidor, pois não há necessidade de criar uma conexão entre os dispositivos. A utilização de Datagramas UDP permitiu que os Frames de vídeo e os comandos fossem transmitidos satisfatoriamente sem ocorrência de travamentos. Resultados O testes foram executados de acordo com a planilha de testes TG-01-2012EP_Planilha_Testes, documento com testes unitários gerados para auxiliar na validação dessa etapa, e gravados em vídeo. Nos testes foram utilizados dois access points para simular duas redes Wifi diferentes, uma padrão 802.11g, com cerca de 54MBps (com uma potência consideravelmente baixa) de taxa de transferência e outra padrão 802.11n, com cerca de 300MBps (com uma potência consideravelmente alta). Em ambas as redes, os comandos foram recebidos e interpretados adequadamente e os frames de vídeos trafegaram sem maiores problemas. Na rede Wifi 802.11g foi possível visualizar certa latência. O automodelo demorou alguns instantes para interpretar os comandos e os Frames de vídeo também demoravam alguns instantes até serem exibidos. Isso causou certo desconforto do usuário ao controlar o automodelo, mas, como dito no inicio deste artigo, em redes Wifi é sempre esperada uma certa latência o que torna ligeiramente difícil o controle do automodelo em alta velocidade. Já na rede Wifi 802.11n a latência era irrisória. O automodelo apresentou uma ótima resposta e os Frames de vídeo trafegaram quase que instantaneamente. O usuário sentiu-se muito confortável ao controla-lo em velocidades mais elevadas. O alcance da rede também foi superior (cerca de 30 metros na rede 802.11n, contra 20 metros na rede 802.11g). E mesmo com certa distância entre o automodelo e o acces point, não houve morosidade que atrapalhasse o controle. Discussão e Conclusões O projeto foi implementado aproveitandose dos recursos de conexão a redes Wifi, acesso ao acelerômetro integrado e comunicação via Bluetooth, disponíveis pela maioria dos dispositivos com sistema operacional Android, assim como foi proposto no inicio deste artigo. Também foi utilizado o recurso de concorrência (ou pseudo paralelismo) disponibilizado pela linguagem de programação Java, o qual permite a execução de tarefas simultaneamente. O que permitiu a separação do sistema em tarefas mais simples e especificas. O tempo de resposta em uma rede Wifi 802.11n foi satisfatório, tendo tanto o envio de comandos quanto a transmissão de imagens ocorrido rapidamente. Utilizando o mesmo conceito de comunicação entre dispositivos Android é possível efetuar a comunicação através da rede de internet GPRS das operadoras de telefonia celular. Porém devido ao desempenho dessa rede (baixíssima velocidade) seria necessário alterar a abordagem de controle, dando mais autonomia ao dispositivo acoplado ao automodelo para que este tome decisões em casos de perda de sinal e gaps na comunicação. No geral o projeto atendeu os requisitos especificados tornando possível a integração de Smartphones com uma placa Eletrônica microcontrolada, o que permitiu o controle de motores elétricos através do acelerômetro integrado ao Smartphone de controle sem alteração de hardware nos dispositivos móveis e ainda valendose de seus recursos de comunicação via redes Ethernet Wifi e Bluetooth. Agradecimentos Agradecemos ao nosso Professor e Orientador, Renato Giacomini. Que nos apoiou e nos auxiliou no desenvolvimento desse projeto desde o começo, em 2011, quando nossas ideias ainda eram obscuras e incertas. Agradecemos ao Professor Alexandre Brincalepe que, junto com o professor Renato, no guiou no começo para a escolha e um bom e tangível projeto. Agradecemos ao Professor Nuncio Perrella, que sem a apresentação de seus conceitos sobre Tempo Real, Concorrência e Sistemas Operacionais seria muito difícil buscar as linhas de raciocino que originaram este projeto. Agradecemos a toda equipe dos laboratórios da Universidade São Judas Tadeu, em especial ao Renato Falango, que nos auxiliou muito na manutenção mecânica do automodelo sempre com muita paciência e dedicação. Referências Bibliográficas 1.Android Developers – Application Fundamentals, http://developer.android.com/guide/topics/fundame ntals.html (acessado em 01/12/2011). 2.Android Developers – Hello, World Tutorial, http://developer.android.com/resources/tutorials/hel lo-world.html (acessado em 05/12/2011). 3.Android Developers – Notepad Tutorial, http://developer.android.com/resources/tutorials/not epad/index.html (acessado em 16/12/2011). 4.Elec Freaks - Communication Between Android and Arduino With Bluetooth (1), http://www.elecfreaks.com/677.html (acessado em 20/12/2012). 5.Elec Freaks - Communication Between Android and Arduino With Bluetooth (2), http://www.elecfreaks.com/829.html (acessado em 20/12/2012). 6.Vídeo – Experiência Arduino + Bluetooth + Android – parte 1/3, http://www.youtube.com/watch?v=IwnofqvGKow (acessado em 22/12/2012). 7.Video – Experiência Arduino + Bluetooth + Android – parte 2/3, http://www.youtube.com/watch?v=R6o1UlC-ztg (acessao em 22/12/2012). 8.Video – Experiência Arduino + Bluetooth + Android – parte 3/3, http://www.youtube.com/watch?v=hWUSloIi6gg (acessado em 22/12/2012). 9.The Box - Control Small DC Motors - Workshop Motors 1, http://www.thebox.myzen.co.uk/Workshop/Motors _1.html (acessado em 05/01/2012). 10.SZYM - Ad-hoc Wifi in Android, http://szym.net/2010/12/adhoc-wifi-in-android/ (acessado em 23/01/2012). 11.Android Developers – WifiDirectDemo – Wifi Direct Demo, http://developer.android.com/resources/samples/Wi FiDirectDemo/index.html (acessado em 23/01/2012). 12.TechRepublic – A quick tutorial on coding Android’s accelerometer, http://www.techrepublic.com/blog/app-builder/aquick-tutorial-on-coding-androidsaccelerometer/472 (30/01/2012). 13.m3-stream – Android video streaming and encoder – Source Code, http://code.google.com/p/m3stream/source/browse/#svn%2Ftrunk%2Fsrc%2For g%2Fm3 (acessado em 01/02/2012). 14.Ipcamera-for-android, Enabling your Android phone to an IP-Camera, http://code.google.com/p/ipcamera-for-android/ (acessado em 02/02/2012). 15.Stackoverflow – Image Processing on Android, http://stackoverflow.com/questions/2043019/image -processing-on-android (acessado em 05/02/2012). 16.Android Developers – Lunar Lander (Source Code), http://developer.android.com/resources/samples/Lu narLander/src/com/example/android/lunarlander/Lu narView.html (acessado em 15/02/2012). 17.Lecheta, Ricardo R. Google Android – Aprenda a Criar Aplicações para Dispositivos Móveis com o Android Sdk – Segunda Ed 2010 – Editora Novatec – ISBN: 9788575222447 18.Elgo – Lock Screen Orientation in Android, http://eigo.co.uk/NewsArticle.aspx?NewsArticleID=103 (acessado em 22/02/2012). 19.Arduino - Learning Examples | Foundations | Hacking | Links http://arduino.cc/en/Tutorial/HomePage (acessado em 23/02/2012). 20.Makebits – Ligar motores DC com uma Ponte H ao arduino, http://makebits.net/ligar-motores-dccom-uma-ponte-h-ao-arduino/ (acessado em 01/03/2012). 21.MARGOLIS, Michael (2011). Arduino Cookbook – Recipes to Begin, Expand, and Enhance Your Projects – Editora O'Reilly Media - ISBN: 978-0-596-80247-9 22.Mmaciel – Controlando motor DC com Ponte H (L293D) com arduino via porta serial, http://www.mmaciel.com.br/2011/02/27/controland o-motor-dc-ponte-h-l293d-arduinoporta-serial/ (acessado em 03/03/2012). 23.Eletromaniacos – Leitura Serial de Entrada Analógica com Arduino, http://www.eletromaniacos.com/modules.php?name =News&file=article&sid=157 (acessado em 05/03/2012). 24.Android Issues – Issue 5427: can’t initiate SPP Communication without SDP (Problemas com Bluetooth), http://code.google.com/p/android/issues/detail?id=5 427 (acessado em 20/03/2012). 25.Stackoverflow – How to prevent Android Bluetooth RFCOMM connection from dying immediately affeter .connect()?, http://stackoverflow.com/questions/2660968/howto-prevent-android-bluetooth-rfcomm-connectionfrom-dying-immediately-after (acessado em 22/03/2012). 26.Stackoverflow – How to send an int through UDP in Java, http://stackoverflow.com/questions/5236620/howto-send-an-int-through-udp-in-java (acessado em 26/03/2012). 27.Javafree.org – Programando em sockets com Java – parte 02, http://javafree.uol.com.br/artigo/2910/Programando -em-sockets-com-java-parte-02.html (acessado em 27/03/2012). 28.Datasheet Ponte H L293D. SGS-Thompson Microelectronics. Dados Biográficos do (s) autor (es) Henrique Martins Prado 17 de julho de 1989 – São Paulo – SP Segundo Grau: Colégio Técnico Lavoisier. Trabalha na Scopus Tecnologia Ltda., atuando como técnico de laboratório e Campo. Exerce atividades focadas em manutenção de hardware, configurações e monitoramento de sistemas financeiros do Banco Bradesco. Participou de projetos de implementação de sistemas bancários padronizados em todo território nacional e projetos focados em upgrades de equipamentos como atualizações de firmware e upgrades de hadwares em clientes como Lexmark, Telefônica, Bradesco Seguros, Porto Seguro, CIEE, Hipercard, Dell e Microlog. Leandro Piqueira 23 de outubro de 1988 – São Paulo – SP Segundo Grau: Colégio Técnico Lavoisier. Trabalha na T-Systems do Brasil Ltda como Analista de Sistemas de Automação Industrial desenvolvendo softwares para integração de dispositivos de chão de fábricas como PLCs (Programmable Logic Controllers), com Sistemas Corporativos. Participou de projetos como a transformação da fábrica de carros da Mercedes Benz de Juiz de Fora para fábrica de caminhões e outros projetos de linhas de produção de indústrias como Magneti Marelli, Benteler, Goodyear, Ambev entre outras.