Android Things — Primeiros passos

Luís Leão
Android Dev BR
Published in
7 min readFeb 1, 2017

O começo

Eu costumava levantar algumas questões nas palestras que abordava o tema de Internet das Coisas e que são as principais dores dos desenvolvedores: começando pelo processo de configuração inicial do dispositivo, até atualizações “over the air” do hardware e mecanismos de segurança e privacidade.

Características de um bom hardware IoT e que o Brillo entregava.

Foi nessa mesma época que o Google criou os projetos Brillo e Weave. Um com foco na plataforma de hardware e outro na integração e comunicação entre os dispositivos. Apesar de ainda fechados, eles respondiam essas questões de todos os desenvolvedores de software que começaram a trabalhar com hardware e sistemas embarcados (como Arduino, RaspberryPi, BeagleBone, entre outros). Além disso, enquanto a plataforma Brillo criava a base de hardware, incluindo updates “over the air” e propriedade/segurança do dispositivo, o Weave focava na parte de comunicação e representatividade de estado virtual/físico. Quem atua hoje desenvolvendo esses tipos de protocolos, sabe quão complicado e custoso é manter um sistema realtime que faça isso.

Funcionalidades que eram disponibilizadas pelo Weave.

Foi em Dezembro/2016 que o Google lançou o Android Things e descontinuou o Brillo. A partir de agora, qualquer desenvolvedor munido do hardware apropriado (Intel Edison, Raspberry Pi 3 e NXP Pico) poderia gravar o sistema operacional Android e começar a desenvolver para hardwares embarcados utilizando o Android Studio.

Me lembro que o processo de configuração de um dispositivo com o Brillo era muito complicado, possibilitando seu uso a um pequeno grupo de desenvolvedores. Inclusive, você precisava compilar o sistema operacional e gravar o bootloader. Com o Android Things, uma vez que você gravou um bootloader padrão, ao conectar com o Android Studio ele seria identificado da mesma forma quando você conecta seu celular com o modo de desenvolvedor ativado.

Se você pretende desenvolver para o AT (assim que vou chamar o Android Things a partir de agora), basta saber Java e conhecer um pouco de eletrônica e alguns protocolos, que são abordados de forma didática na própria documentação do AT sobre hardware. Tem um outro artigo em inglês muito legal sobre eletrônica básica.

Hardware para iniciantes ;)

Outro grande trunfo da plataforma é a Biblioteca Compartilhada de Drivers. Isso significa que qualquer dev que queria contribuir com algum código para acesso a dispositivos e com objetivo de facilitar o acesso a eles. Assim, teremos uma camada de alto-nível para acesso a dispositivos, sem se preocupar com os protocolos e comunicações entre eles.

Qual a diferença entre o Intel Edison e o RaspberryPi

Basicamente só muda a forma de gravar o bootloader. Enquanto o RasPi é um mini-computador que você precisa gravar o disco de boot em um cartão de memória SD, o Intel Edison tem um sistema próprio para gravar a imagem. Se você utilizar o RaspberryPi terá como extra, além da saída HDMI, os barramentos de display e de câmera, mais portas USB e saída de áudio.

RaspberryPi

  • Qualquer ferramenta para gravar imagens vai lhe ajudar a começar;
  • Você precisa conectar o ADB através da rede na primeira vez (o boot não finaliza sem a conexão de rede). Portando é necessário ter uma conexão ethernet (roteador ou switch) ligado ao RasPi;
  • Possui interface gráfica de saída. Dá pra montar um quiosque ;)

Intel Edison

  • Use o Platform Flash Tool Lite para gravar o firmware;
  • Uma das portas micro-USB funciona com o ADB diretamente. Não é necessário configurar o Wifi;
  • Não possui interface gráfica, portanto qualquer saída/aviso precisa ser implementado com algo externo (leds, displays LCD, etc.);

Em ambos os casos, uma vez conectado você pode configurar o wifi e redirecionar o ADB por ele!

Software para gravar o Bootloader no Edison

Como adquirir o hardware?

Hoje no Brasil o jeito mais fácil para adquirir tanto o RaspberryPi 3 quanto o Intel Edison é utilizar o FilipeFlop. Lembre-se de comprar uma boa fonte (micro-usb 2A para o Raspi ou 12V 1.5A para o Edison).

Pontos interessantes do Android Things

Quem desenvolve hardware embarcado hoje lida com uma série de protocolos de comunicação. Muito além de ligar e desligar portas, você precisa desses protocolos para interfacear com os mais variados dispositivos. Desde controlar uma comunicação serial que vai modificar o status de uma controladora DMX (daquelas que mudam a iluminação de shows) até receber dados de um sensor de temperatura ou imprimir cupons na impressora térmica. Você não precisa conhecer os protocolos, mas saber o que é utilizado pelos dispositivos/circuitos. A programação é alto-nível e você não vai precisar escovar bits :P

Quais são os passos para fazer um app no Android Things?

  • Gravar o bootloader no dispositivo
  • Conectar o dispositivo no Android Studio via ADB
  • Desenhar a integração do hardware
  • Adicionar as bibliotecas necessárias e desenvolver o app
  • Publicar o app (ou “firmware”) no dispositivo

Gravar o Bootloader/Firmware no Edison

Vou abordar apenas o processo de configuração do Intel Edison, pois o artigo do Bruno Zaranza já explica como realizar o processo no Raspi ;)

Download e Configuração das ferramentas

Você precisa baixar as seguintes ferramentas:

Diferentemente do Raspi, você grava na memória do Edison o SO através da Flash Tool Lite e em seguida instala o software do seu app específico. Para realizar o primeiro procedimento, você precisa de um cabo micro-USB.

Na imagem do AT encontra-se um arquivo chamado FlashEdison.json. Ele deve ser selecionado através do botão “Browse…”. Escolha a opção de configuração “Non_OS”.

Tela de gravação do bootloader

Prepare o Edison

Dependendo de qual formato de board você tiver vai mudar a porta USB que utilizará.

Formatos de board com Intel Edison

No Arduino Breakout, conforme a imagem acima do lado esquerdo, utilize a porta USB mais próxima da conexão de energia. Não é necessário incluir uma fonte de energia neste momento ok? O Swith do lado esquerdo deve estar virado PARA BAIXO também (mais próximo das portas micro-USB). Para ativar o modo de upload, mantenha o botão FW pressionado enquanto liga o cabo micro-USB nele.

Botão de Firmware. Mantenha pressionado enquanto liga o cabo USB.

Se você utilizar o Sparkfun Block, a porta micro-USB que vai utilizar é a inferior (na mesma linha do barramento que conecta o microprocessador. Neste caso não há o botão FW e o funcionamento do dispositivo é parecido com o OTG.

Após gravar o bootloader (ou firmware), o fastboot vai inicializar automaticamente. Para conferir se está tudo certo execute o comando a seguir:

$ fastboot devices
1b2f21d4e1fe0129 fastboot

Se seu dispositivo não aparecer no modo fastbook, utilize a ferramenta ADB para ativá-lo e rode o “fastboot devices” quando tiver finalizado.

$ adb reboot bootloader

Rode os comandos abaixo para instalar a imagem do sistema operacional:

$ fastboot \
flash gpt partition-table.img \
flash u-boot u-boot-edison.bin \
flash boot_a boot.img \
flash boot_b boot.img \
flash system_a system.img \
flash system_b system.img \
flash userdata userdata.img \
erase misc \
set_active _a
$ fastboot \
flash gapps_a gapps.img \
flash gapps_b gapps.img
$ fastboot \
flash oem_a oem.img \
flash oem_b oem.img

E agora só fazer o boot no Android Things:

$ fastboot reboot

Tudo certo? Então seu dispositivo deve aparecer no adb:

$ adb devices
List of devices attached
Edisonb74661ad device

Após realizar este processo, além de poder publicar seu app no dispositivo, também é possível configurar o Intel Edison para ativar o ADB pelo WiFi. Veja aqui um tutorial de configuração do ADB via Wifi n o Intel Edison (em inglês). Em breve devo realizar os testes com WiFi e faço um posto específico sobre isso :D

Por enquanto é isso. No próximo artigo abordarei sobre como conectar o dispositivo no Android Studio via ADB.

[]’s
Leão

--

--

Luís Leão
Android Dev BR

Developer Evangelist na Twilio e entusiasta de IoT. Co-organizou o Google Developer Group de São Paulo de 2012 a 2020.