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á, tô devendo o TCC ainda. 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 e aplicá-la no meu Projeto de Conclusão de Curso. 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.

Fig 1. Kit necessário

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);
  • Fonte de 5v/2A~3A com cabo Micro USB ;
  • Cabo Ethernet;
  • Cabo HDMI; (Opcional)
  • Tela com entrada HDMI, usei um monitor LG Flatron E2260; (Opcional)

Caso você não queira usar um monitor, pode usar a dica de acesso remoto a tela da sua placa que escrevi no post abaixo.


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

Caso não tenha uma conta no Google, crie uma.

Com uma conta criada, entre no Android Things Console nesse link: https://partner.android.com/things/console/u/0/

Fig 2. Console Android Things

Crie um novo produto em “Create a Product”

Fig 3. Criando um novo produto iOT
  1. Escolha um nome qualquer para o seu produto;
  2. Escolha a plataforma que será utilizada, no nosso caso, a Raspiberry Pi 3. SOM significa System on Model;
  3. Indique se seu produto usuará a API do Google Play Services ou não;
  4. Selecione a partição que será alocada para o seu app, se baseando no tamanho máximo que seu APK pode chegar no final do projeto, entre um intervalo de 32 MB a 512 MB. OEM significa Original Equipment Manufacturer;
  5. Adicione uma breve descrição do seu produto;
  6. Finalmente clique em Create.

Após o projeto criado, você deverá ver uma tela semelhante a esta:

Fig 4. Projeto criado

Observe que há 3 divisões. A primeira de Models, que são os modelos contendo as versões de compilação usados no seu produto que você configurou, ele gera uma automaticamente após criado um projeto. A segunda divisão contém as informações do projeto que você acabou de criar. A terceira define quem tem acesso a esse projeto, você poderá adicionar pessoas para trabalharem com você.

Agora vamos editar o nome do Model que foi gerado automaticamente para ficar melhor organizado. Edite para indicar a versão do ATOS que iremos usar, que é a versão 0.7. Você também pode criar um novo, mas vamos aproveitar o que foi gerado automaticamente.

Fig 5. Nomeando um Model

Feito isso, clique nesse Model e você deverá ver a seguinte tela:

Fig 6. Configuração de um Model

Para nosso Hello World, não se preocupe em criar um novo Bundle agora, detalharei isso melhor em outro post. Apenas utilize o Empty bundle criado por padrão e clique em NEXT. Então você será direcionado para a fase seguinte, a de escolher a compilação do ATOS que usaremos.

Fig 7. Seleção da versão do ATOS

Após selecionada a versão 0.7.0 (ou mais atual), clique em NEXT.

Fig 8. Nomeando configuração de compilação

Ecolha um nome para sua configuração e clique em CREATE BUILD.

Você verá que uma lista foi criada com suas Compilações do ATOS.

Fig 9. Lista de compilações criadas

Faça o download e agora você terá uma compilação do ATOS para instalar na sua placa.

Descompacte o zip e grave a imagem no seu cartão microSD. É importante lembrar que ele precisa estar formatado em FAT32. Eu uso MacOS High 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.

Fig 10. Raspberry Pi

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.

Fig 11. Carregando ATOS

A seguir, a tela inicial, após o boot.

Fig 12. Tela Inicial

Nessa versão 0.7, inseriram uma interatividade muito melhor. Agora você pode conectar à rede WiFi pela própria interface (antes tinha que ser via código) e também pode atualizar o ATOS pela própria interface.

Veja que em seção Network 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.

Fig 13. Criando um novo projeto

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

Fig 14. Configuração do novo projeto

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

Fig 15. Selecionanto a plataforma

Não mude nada nessa etapa e somente clique em Next. (Para versões do Android Studio acima do 3.0, já está incluso a plataforma Android Things e você pode selecionar ela).

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 {
compileOnly 'com.google.android.things:androidthings:+'
}

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.