Hello World com Raspberry Pi 3 usando Android Things

Muitos não sabem, mas minha formação é em Mecatrônica pelo Instituto Federal do Ceará. Fiquei muito animado com o lançamento do Android Things e a possibilidade de juntar o meu trabalho com o que estudei na faculdade e resolvi investir meu tempo nessa novidade do Google. Nesse post, irei mostrar a vocês como começar a brincar com a Raspberry Pi usando ATOS (meu apelido carinhoso para Android Things OS), que nada mais é do que uma versão do Android adaptada para placas.

Kit

O que você precisa?

  • Raspberry Pi 3 Model B (não, a versão 1 e 2 não funcionam);
  • MicroSD de no mínimo 8Gb Classe 10 (classes inferiores a placa não consegue dar o boot);
  • Cabo HDMI;
  • Tela com entrada HDMI, usei um monitor LG Flatron E2260;
  • Fonte de 5v/3A com cabo Micro USB ;
  • Cabo Ethernet;

Tem tudo isso em mãos? Vamos começar…

Baixe a última versão disponível da imagem do ATOS nesse link: https://developer.android.com/things/preview/download.html

A versão que eu usei, foi essa: https://dl.google.com/dl/androidthings/rpi3/devpreview/1/androidthings_rpi3_devpreview_1.zip

Descompacte o zip e grave a imagem no seu cartão microSD. É importante lembrar que ele precisa estar formatado em FAT32. Eu uso MacOS Sierra, então foram necessários os seguintes passos:

  • Abra o Menu Apple, naquela maçã lá no canto superior-esquerdo do seu monitor e selecione “Sobre este Mac”;
  • Clique em “Relatório do Sistema…”, e em “Hardware”, clique em “USB”;
  • Veja onde tem “Card Reader” o nome BSD do seu cartão SD, é algo do tipo “diskn”, onde n deve ser um número, no meu caso era disk1;
  • Abra o “Utilitário de Disco” e desmonte a partição do seu cartão SD;
  • Abra o terminal e digite a seguinte linha de comando:
sudo dd bs=1m if=CAMINHO_DA_SUA_IMAGEM.img of=/dev/rdiskN;

Note que em em of, você precisa trocar o N pelo número que você viu no nome BSD anteriormente. Em if, você precisa colocar o caminho de onde você descompactou sua imagem, eu descompactei em Downloads mesmo, então meu comando ficou assim:

sudo dd bs=1m if=Downloads/iot_rpi3.img of=/dev/rdisk1.

Caso esse comando não funcione, substitua rdiskN por diskN (não esquecendo de trocar o N pelo o seu número BSD).

Agora coloque o seu microSD na Raspberry Pi 3.

Se você não usa MacOS, pode ver como criar a imagem do ATOS no cartão microSD nos links a seguir:

Se você não conseguir criar a imagem no cartão, deixa um comentário que tento ajudar.

Ligue sua placa.

Na entrada 3, conecte o cabo HDMI do seu monitor. Na entrada 2, conecte o cabo Ethernet. Na entrada 1, coloque o cabo micro USB (note que a placa necessita de uma amperagem de no mínimo 2A, o ideal é que seja 3A, numa fonte de 5V). Perceba que deixei a fonte por último para evitar ficar pegando na placa com carga e evitar danificá-la. Ela não é tão fácil de danificar, porém, é bom ter cuidado, leia o manual que vem com a Raspberry que tem boas recomendações, é curto e tem em português.

Você já deve estar vendo esta tela de apresentação do Android Things.

Carregando…
Tela inicial

Na parte inferior aparece o seu IP, você poderá fazer a conexão do Android Studio com a placa através desse IP, veremos isso mais a frente.


Agora estamos prontos para começar o Hello World.

Abra o seu Android Studio (caso não tenha, faça o download aqui) e crie um novo projeto.

Criando um novo projeto

Configure o seu projeto como preferir. Veja as imagens das minhas configurações a seguir:

Escolhi o nome HelloWorld_iot para a minha aplicação, escolha o seu.

Não mude nada nessa etapa e somente clique em Next.

Selecione Empty Activity e clique em Next.

Não mude nada aqui e apenas clique em Finish.

Espere o seu Android Studio terminar de carregar seu projeto. O arquivo activity_main.xml já tem um TextView com um Hello World por default. Agora só precisamos configurar o arquivo AndroidManifest.xml para configurá-lo como uma aplicação IoT.

No AndroidManifest.xml, a única coisa que você precisa adicionar, é o seguinte trecho de código dentro da tag da sua activity:

<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.IOT_LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

Pronto! Seu Hello World está pronto.


Agora vamos compilar na placa?

Para enviar sua apk para a placa, você vai conectar seu Android Studio com a placa via rede com o adb.

  • Localize ( + espaço no Mac) a pasta platform-tools que contém o adb;
  • Abra o terminal e entre nessa pasta via comando:
cd CAMINHO_DA_SUA_PASTA/sdk/platform-tools/

Exemplo:

cd /Documents/Developer/Android/sdk/platform-tools/
  • Agora execute o comando de conexão:
./adb connect Android.local;

No Windows, não precisa colocar o “./” no início do comando.

Isso localiza o IP da sua Raspberry, caso haja só uma placa em rede. Caso haja mais de um dispositivo com ATOS na rede, conecte com o IP específico (aquele que a gente viu anteriormente na tela de apresentação do ATOS):

 ./adb connect <ip_do_raspberry>;

Com isso sua conexão deve ser estabelecida.

Você também pode conectar via Wi-Fi usando o seguinte comando:

$ adb shell am startservice \
-n com.google.wifisetup/.WifiSetupService \
-a WifiSetupService.Connect \
-e ssid <NOME_DA_REDE> \
-e passphrase <SENHA>

Volte para o Android Studio e clique em Run (o play) e selecione a opção “Unknown Iot_rpi3” e clique em OK.

Seleção da placa

É isso.

Você fez seu Hello World na Raspberry Pi 3 usando Android Things OS. O resultado será algo como mostra a imagem a seguir.

Hello World concluído

No seu, o Hello World aparecerá menor, aqui eu aumentei pra ficar mais visível na foto. Agora é só ir brincando com o layout que você deseja.

O Google fornece um repositório com um template de exemplo, caso queira dar uma olhada, clique aqui.

Algo mais?

Quando formos realmente interagir com a placa, ter acesso ao GPIO (General Purpose Input/Output), que são as portas programáveis de entrada e saída de dados da Raspberry, precisaremos adicionar a lib do ATOS nas dependências do Gradle.

dependencies {
provided ‘com.google.android.things:androidthings:0.1-devpreview’
}

Continua…

Nos próximos posts, vamos interagir com leds e botões, então já providencia uma protoboard, uns leds e uns botões. Até mais.