Pular para o conteúdo principal

Como conectar uma placa ADK e um aplicativo Android de forma indolor

Bom dia.

Neste pequeno artigo pretendo mostrar como é fácil e rápido codificar um Arduino com suporte a ADK e um smartphone para ambos se reconhecerem. Em um próximo artigo pretendo mostrar como funciona a troca de dados. Porém, vamos em partes.

Inicialmente precisamos definir o ADK e, nada melhor que pedir ajuda a criadora desta plataforma, o nosso ilustríssimo Google. Na página de desenvolvedores Android encontrei a seguinte definição: The Android Open Accessory Development Kit (ADK) is a reference implementation of an Android Open Accessory, based on the Arduino open source electronics prototyping platform.Ou seja, é um Arduino Mega com um protocolo Android específico.

Neste link encontram-se duas coisas valiosas. A primeira, encontrada no link com o texto "ADK package download", é o código para a placa ADK e o código para o aplicativo Android utilizado no famoso ADK DemoKit, mostrado em 99% das palestras sobre a tecnologia.

Mas, para iniciantes, talvez não seja uma boa idéia estudar este código, pode confundir um pouco as coisas. Então, porque não começar com o código mais simples possível. Uma espécie de esqueleto, o DNA da comuicação ADK-Aplicativo.

Começamos pela parte mais fácil, a do Arduino ADK. Vejam o código:

#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>

AndroidAccessory acc("Fabricante", "Modelo", "Descricao", "Versao", "URI", "Serial");
void setup() {
  Serial.begin(115200);
  acc.powerOn();
}

void loop() {
  if (acc.isConnected()) {
    //fazer algo
  }
  delay(250);
}


Essencialmente temos apenas três linhas além do já tradicional código Arduino, que necessita dos métodos setup e loop. Além dos includes, mas esses serão sempre fixos então não precisam de tanta atenção.

Inicialmente é necessário criar um objeto AndroidAccessory. Os parâmetros passados são como uma identificação do ADK. Os mais importantes são o fabricante, o modelo e a versão. A URI também pode ser de grande utilidade, isso porque, se o Android não encontrar um aplicativo capaz de lidar com aquele ADK, ele pode pegar esta URI e mandar para a Google Play por exemplo.

No setup temos uma chamada ao método powerOn, que muda o estado do ADK para ativo. No método loop é feito um teste lógico para saber se o ADK já está conectado ao smartphone. Caso afirmativo, podemos iniciar a troca de informações entre o ADK e a aplicação Android. Mas isso é assunto para os próximos artigos.

E o código Android, será tão fácil quanto este? Sim.

A primeira mudança é no AndroidManifest.xml. Deve ser informada o uso da biblioteca com.android.future.usb.accessory.

<uses-library android:name="com.android.future.usb.accessory" />

Ainda no mesmo arquivo, vamos acrescentar mais um IntentFilter para a única tela da aplicação, o famoso Hello World.

<activity
            android:name="com.example.firstappadk.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
            </intent-filter>

            <meta-data
                android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
                android:resource="@xml/accessory_filter" />

</activity>

As mudanças ficaram em negrito. O filtro adicional responde a ação android.hardware.usb.action.USB_ATTACHED. Além disso, é necessário um meta-data, com um nome sempre fixo e a identificação de um recurso xml. No exemplo ele foi colocado dentro da pasta res, subpasta xml, arquivo accessory_filter.xml.

E o que encontramos neste XML? Veja abaixo:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-accessory manufacturer="Fabricante" model="Modelo" version="Versao" />
</resources>


Perceba que os dados de fabricante, modelo e versão são os mesmos informados no código do Arduino. Por este motivo uma placa ADK pode ser construída especificamente para um aplicativo. E isso é fantástico, abre infinitas possibilidades de customização, de uso massivo de internet das coisas, internet física e todos estes termos inovadores.

Bem, em relação ao código é só isso. Sim, já acabou.

O leitor pode estar se perguntando, mas como eu sei qual Arduino é um ADK. Neste link você encontra esta listagem. Eu estou usando para testes o ADK da Seeed Studio, mais especificamente o ADK Dash Kit. E smartphones tenho o Galaxy Note 8 e o Motorola Razr I .Uma observação importante. Já testei em outros aparelhos Samsung, como o S3 e S4, e sempre funcionou. O único que me deixou na mão é o Razr I. Minhas suspeitas são em relação ao chip Intel do Razr, os outros que testei tem chips ARM.

Veja o vídeo do código em execução:
Dúvidas? Pergunte nos comentários. E aguarde os próximos posts.

E, último lembrete. A Academia Android da Globalcode tem um módulo que fala só de Arduino, Android e ADK. 

Att.
Ricardo Oglliari

Comentários

Matheus Gomes disse…
Sensacional cara! Inovação na madrugada é show de bola! Espero em breve ter Oportunidade/Projeto para desenvolver uma solução ou aplicação com essa base de ADK... chega a ser lindo pensar em 'Internet das Coisas' e saber que já sei como posso desenvolver!!!!
Arduino Team disse…
Hehehee.

É a mes a sensação que eu tenho. É como fazer parte de uma grande mudança na sociedade.

Quando criar algo quero ver post também hein, heheh

Postagens mais visitadas deste blog

O que é Lógica de programação?

Este é o segundo de uma série de posts voltados aos leitores do blog que estão dando início à carreira de desenvolvimento de software. O assunto de hoje é a lógica de programação. Para ler antes: Entendendo como funciona a programação de computadores: linguagens de programação, lógica, banco de dados A lógica de programação é um pré-requisito para quem quer se tornar um desenvolvedor de software, independente da linguagem de programação que se pretende utilizar. Mas o que é de fato a Lógica de Programação e como saber se eu tenho esse pré-requisito? A lógica de programação nada mais é do que a organização coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa organização, instruções simples do programa, como mudar o valor de uma variável ou desenhar uma imagem na tela do computador, são interconectadas a estruturas lógicas que guiam o fluxo da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar atividad...

TDC ONLINE: SUA PLATAFORMA DE PALESTRAS GRAVADAS DO TDC DISPONÍVEL

Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op...

TDC BUSINESS, chega a São Paulo com novas trilhas de Inteligência Artificial e Inovação

Maior conferência de profissionais de tecnologia do Brasil abordará temas em alta no momento como, por exemplo, Inteligência Artificial, Segurança, Ciência de Dados e Inovação O TDC BUSINESS, a 17° edição do The Developer's Conference na cidade de São Paulo, que acontece entre os dias 19 e 21 de Setembro, reunirá profissionais e especialistas da área para troca de experiência, compartilhamento de conteúdos e networking. Com o tema central: “Tecnologia para negócios transformadores”, o evento será totalmente híbrido, ocorrendo presencialmente no espaço Pro Magno, e com transmissão simultânea e atividades de network pela internet. A expectativa é reunir mais de 14.000 pessoas, somando a participação presencial e online.   Segundo Yara Mascarenhas, Fundadora e Host do Evento, “nosso objetivo com o TDC é inspirar a colaboração entre os profissionais e empresas para construir uma nova realidade para o mercado de TI.  Vamos juntar tecnologia e negócios com as trilhas técnicas...

12 ESQUENTAS TDC ESPERANDO POR VOCÊ

O TDC nasceu do sonho de profissionais que valorizam o compartilhamento de conhecimento, experiências e oportunidades entre as comunidades de desenvolvedores.  Por isso, o crescimento do TDC nunca poderia ficar longe do crescimento das comunidades! Pensando nessa união, criamos um projeto quente: O ESQUENTA TDC ! Visando divulgar os meetups de comunidades que querem transformar e inspirar carreiras, foi co-criado este projeto lindo e cheio de apoio, onde o TDC abraça meetups de diversas comunidades espalhadas pelo Brasil e elas contribuem com a divulgação da edição regente.  O TDC Innovation vai rolar de 14 a 16 de JUNHO, mas até lá vão acontecer muitos encontros incríveis!  Fique por dentro das comunidades que vão participar, quais temas irão abordar e claro as datas e locais para você participar. 💥Esquentas TDC Innovation 2023: 24/05 - Esquenta TDC: Carreira e Desenvolvimento Presencial em Floripa das 19:00 as 21:30 com inscrição AQUI Comunidade: Google Developer...

JSON fácil em Java com GSon !

Ola pessoal ! O formato JSON ( J ava S cript O bject N otation) vem se consagrando cada vez mais na comunicação de dados, principalmente nos dispositivos móveis devido a esse formato ser mais leve que o XML e também mais legível. Uma prova disso são as inúmeras bibliotecas que existem para manipular esse formato, e no caso do Android, o suporte ao JSON é nativo. Mas apesar de ter esse suporte nativo, algumas operações devem ser feitas manualmente e o código acaba ficando um pouco verboso e repetitivo, já que para cada objeto que se deseja transmitir é necessário fazer um método que lê as propriedades do JSON e faz as devidas atribuições no seu objeto Java. Vamos supor o seguinte objeto sendo transmitido em JSON: {   user: {     id: 123456,     name: "Neto Marin",     username: "netomarin",     email: "netomarin@globalcode.com.br"   } } Se você fosse tratar um Webservice que envia esse JSON para o seu aplicativo Android...

JavaOne Brasil, dicas para submissão de palestras

Não quero parecer pretensiosa dando dicas para submissão de palestras para o JavaOne Brasil, mas sim repassar os tantos conselhos e sugestões recebidas pelos vetaranos do JavaOne: Bruno Souza e Leonardo Galvão que revisaram dezenas de submissões para o JavaOne e ajudaram a aprovar tantas palestras, e também misturar um pouco da minha experiência na seleção de palestras nos eventos realizados pela Globalcode e SouJava . 10 anos de JavaOne: http://www.globalcode.com.br/noticias/Globalcode10AnosNoJavaOne Os palestrantes ganham a entrada! A submissão pode ser feita em português! O passo mais importante para ser aprovado como palestrante no JavaOne é sem dúvida nenhuma submeter pelo menos uma palestra. Então, independente de qualquer coisa, participe, arrisque, divulgue.  Mas, se quiser aumentar as suas chances...   1) Leve a sério: peça para amigos fazerem uma leitura crítica do texto, e claro uma boa revisão ortográfica. 2) Submissão de várias palestras ou variações do ...