Onion Omega2: computador para makers, do tamanho de um selo

Computador do tamanho de um selo pesa 6 gramas, roda Linux, tem WiFi, GPIO e lugar garantido na minha bancada.

O Onion Omega2 é um computador que roda Linux, mede 4,3 x 2,6cm, tem WiFi, 64MB de RAM, 16MB de armazenamento interno, e cabe muito bem no desenvolvimento de protótipos e soluções por makers, incluindo vários pinos GPIO, suporte nativo a PWM, I2C e SPI, e mais.

Um dos aspectos mais interessantes da Onion Omega2 é que o ambiente Linux que vem configurado nele tem um shell bastante completo (baseado no Busybox) e permite, por meio de seu próprio gerenciador de pacotes, instalar linguagens com o Python e PHP, entre outras, multiplicando a utilidade potencial e os recursos à disposição de um simples SSH para o endereço IP da sua plaquinha.

A minúscula e poderosa plaquinha sobre a qual eu escrevi o entusiasmado artigo “Onion Omega2: plaquinha de US$5 com Linux tem WiFi, 15 pinos GPIO”, quando ainda não passava de um projeto no Kickstarter, agora está na minha bancada, graças aos amigos da Usinainfo, que leram o meu artigo original e me convidaram a narrar a experiência básica de uso, que vou reduzir em uma palavra - agradabilíssima.

Para interpretar o que vem a seguir, leve em conta que sou um entusiasta do Linux (fundei o site BR-Linux em 1996, quase 21 anos atrás), e é por isso que neste artigo sobre a exploração inicial eu vou falar bem mais sobre linha de comando do que sobre o belíssimo ambiente web oferecido pelo Omega2 – e pouquíssimo vou detalhar sobre programação ou interfaceamento com outros hardwares.

O Onion Omega2

A versão da placa que eu recebi é a própria Omega2 (existe também a Omega 2 Plus, com mais RAM e armazenamento, e incluindo um slot SD nativo), e eu encomendei também um Expansion Dock, que eu recomendo fortemente.

O Omega2 é minúsculo e leve (menos de 7 gramas!), e tem muito pouco em termo de confortos de interface: 2 fileiras de pinos compatíveis com breadboards, um conector para antena externa (uso opcional) e um led de status. Muito bom, portanto, para ser plugado como componente de um projeto já desenvolvido, mas exige algum esforço de configuração prévia por quem quiser conectar a um computador ou fonte de alimentação via USB, por exemplo – tarefas básicas desde o primeiro uso, na etapa de desenvolvimento.

Expansion Dock: recomendo!

E é aí que entra a demanda pelo Expansion Dock, para quem gosta de conforto ou valoriza seu tempo de configuração: você pluga seu Omega2 ou Omega2 Plus a ele, e ganha acesso imediato a uma porta microUSB para alimentação e/ou comunicação, uma entrada USB para plugar pen drives ao Omega, uma chave on/off, um botão de reset, uma expansão do GPIO à qual você pode plugar jumpers machos para conectar a componentes ou a uma breadboard e, de quebra, um led RGB prontinho para facilitar as experiências iniciais.

A configuração inicial é bem simples, e detalhadamente escrita (em texto e em vídeo) no guia de configuração inicial – e é bom deixar claro: esse guia oficial assume que você está usando a Expansion Dock.

Configuração inicial

Os passos de setup que eu segui foram, em essência: plugar o Omega2 à Expansion Dock, plugá-la a um carregador de celular por meio de um cabo microUSB, aguardar alguns (vários) segundos pelo seu boot, e aí conectar meu computador à rede WiFi do próprio Omega2 (no meu caso, o nome da rede era Omega-E60B).

A partir daí, os passos foram realizados no navegador. Acessei a URL http://omega-e60b.local (substitua e60b pelos 4 últimos dígitos em negrito do endereço MAC que vem impresso na sua placa), que rodou um sistema de configuração provido pelo próprio Omega2, que me guiou pelos passos necessários à atualização do firmware e sua inicialização. A única parte difícil foi aguardar os 4 minutos do upload e setup inicial do firmware, já que eu estava com pressa para experimentar o ambiente ;-)

Após o reboot ao final da configuração, o sistema estava pronto para uso, e a mesma URL mencionada acima passou a dar acesso a um ambiente de execução e teste, o Onion Console:

Como você pode notar, estão presentes ferramentas para manipular os pinos GPIO, interagir (em configurações de hardware específicas que não fazem parte do produto) com displays OLED, relés, webcam e motores, além de um terminal, um editor e uma ferramenta de configuração, a qual foi o meu único interesse imediato, porque permite compartilhar com vocês, com clareza, a configuração de hardware:

Meu foco, entretanto, era a shell do Linux rodando no Omega2, portanto deixei a interface web para experiências futuras.

Linux no Onion Omega2

A distribuição Linux que vem no firmware do Onion Omega2 é o LEDE, baseado no OpenWRT, popular como sistema operacional alternativo para instalar em roteadores e outros equipamentos de rede.

Ela vem pré-instalada com poucos confortos além daqueles oferecidos como parte do Busybox, mas você pode adicionar pacotes com facilidade usando os utilitários do opkg, que é o gerenciador de pacotes do Onion.

Para listar os pacotes instalados, basta digitar opkg list-installed, e para listar os pacotes disponíveis para instalação via internet, o comando é opkg list - você verá uma grande variedade de utilitários, ferramentas de desenvolvimento (C, Perl, PHP, Python, Ruby, etc.), shells, componentes de rede e conectividade, e mais.

Manipulando o hardware a partir da shell

Como é praxe em qualquer artigo introdutório sobre placas de desenvolvimento, temos que fazer algum led piscar – e vamos fazê-lo em vários estilos, todos diretamente a partir da shell acessada via SSH.

Usuários de Linux ou Mac podem acessar seu Omega2 simplesmente abrindo um terminal e digitando ssh root@omega-e60b.local (substitua e60b pelos 4 últimos dígitos em negrito do endereço MAC que vem impresso na sua placa). Usuários de Windows podem precisar instalar um cliente SSH (como o PuTTY) e seguir as instruções dele. Em ambos os casos, a senha inicial é onioneer.

O hardware do Omega2 é bem integrado ao seu sistema operacional, e os componentes estão mapeados como membros do seu sistema de arquivos. O modo de operação do led de status da placa, por exemplo, pode ser consultado ou definido usando o arquivo /sys/class/leds/omega2:amber:system/trigger – por exemplo, quando eu digito o comando cat "/sys/class/leds/omega2:amber:system/trigger" para listar o conteúdo deste arquivo, eu vejo o seguinte:

# cat "/sys/class/leds/omega2:amber:system/trigger"
none timer [default-on] netdev transient mmc0 gpio heartbeat morse oneshot

Note que a resposta é uma linha mostrando todos os modos suportados (none, timer, etc.), e um deles (o default-on, equivalente a estar sempre ligado) está entre colchetes, indicando que é o modo ativo.

Eu posso mudar o modo com facilidade, simplesmente gravando o nome de outro modo (válido) no mesmo arquivo. Para ativar o modo piscante chamado heartbeat, posso digitar simplesmente echo heartbeat > "/sys/class/leds/omega2:amber:system/trigger", e o led começa a piscar ritmadamente.

O modo morse também é interessante, porque ele começa a piscar continuamente, em código morse, as palavras que forem enviadas a outro arquivo do sistema, o "/sys/class/leds/omega2:amber:system/message". A sequência de comandos abaixo coloca o led em modo morse, define qual palavra deve ser transmitida pelas piscadas do led, reduz a velocidade dessas piscadas, define uma outra palavra a ser transmitida, e retorna o led ao modo contínuo:

echo morse > "/sys/class/leds/omega2:amber:system/trigger"
echo "BR-Arduino" > "/sys/class/leds/omega2:amber:system/message"
echo 150 > "/sys/class/leds/omega2:amber:system/delay"
echo "Usinainfo" > "/sys/class/leds/omega2:amber:system/message"
echo default-on > "/sys/class/leds/omega2:amber:system/trigger"

Acender e definir a cor do brilhante led RGB que faz parte da Expansion Dock também é possível a partir da shell, por meio do utilitário expled, que vem pré-instalado. Ele recebe como parâmetro um número hexadecimal (com prefixo 0x), de 6 dígitos, sendo que os 2 primeiros dígitos indicam a intensidade da cor vermelha, os 2 do meio indicam a intensidade da cor verde, e os 2 últimos dígitos indicam a intensidade da cor azul. Da combinação das 3 intensidades surge a cor que o led RGB exibirá, e o valor 00 para as 3 cores apaga o led.

Os comandos a seguir alternam o led RGB entre as cores verde oliva, laranja e azul royal, apagando-o ao final:

expled 0x6B8E23
expled 0xFFA500
expled 0x4169E1
expled 0x000000

Estamos muito longe de esgotar o que pode ser feito via shell para controlar as interfaces de hardware. Por exemplo, eu pluguei um pen drive à porta USB da Expansion Dock, e as pastas e arquivos dele ficaram imediatamente disponíveis para uso no caminho /tmp/mounts/USB-A1 – bastou digitar ls /tmp/mounts/USB-A1 para ver a lista do conteúdo.

Os pinos de GPIO também podem ser acessados diretamente a partir da shell, usando os comandos gpioctl e fast-gpio, ou os arquivos no pseudo-diretório /sys/class/gpio, conforme apresentado no capítulo sobre GPIO da documentação oficial.

Esse e outros exemplos de uso e controle podem ser vistos nas páginas do guia Using the Omega, cuja leitura eu recomendo, tanto para a exploração inicial do Omega2, quanto para seu uso como elemento de rede (há um capítulo dedicado a usá-lo como roteador, por exemplo) ou para o desenvolvimento de softwares e hardwares (há capítulos dedicados às bibliotecas básicas necessárias para C e Python, por exemplo).

Parceria: Usinainfo

Quero agradecer à UsinaInfo, que ofereceu o Omega2 e a Expansion Dock usados neste artigo.

Além de receber material da empresa para os experimentos como parte do acordo de patrocínio, eu já fiz compras de componentes lá, aproveitando a variedade, o estoque bem suprido, as descrições detalhadas e a qualidade do seu sistema de comércio eletrônico. Recomendo sem ressalvas.

Agradeço também pela confiança que ficou expressa nos termos da parceria: a empresa me enviou os componentes necessários ao experimento combinado, mas não fez qualquer exigência sobre a forma e nem buscou exercer controle sobre o que eu fosse escrever. Obrigado, UsinaInfo!

Comentar

Dos leds ao Arduino, ESP8266 e mais

Aprenda eletrônica com as experiências de um geek veterano dos bits e bytes que nunca tinha soldado um led na vida, e resolveu narrar para você o que descobre enquanto explora esse universo – a partir da eletrônica básica, até chegar aos circuitos modernos.

Por Augusto Campos, autor do BR-Linux e Efetividade.net.

Recomendados

Livro recomendado


Artigos já disponíveis

Comunidade Arduino

O BR-Arduino é integrante da comunidade internacional de entusiastas do Arduino, mas não tem relação com os criadores e distribuidores do produto, nem com os detentores das marcas registradas.

Livros recomendados