Manual

do

Maker

.

com

Onion Omega - Um avanço com OpenWRT

Onion Omega - Um avanço com OpenWRT

Onion Omega

Onion Omega? Sim, não é Framboesa, não é Banana, não é laranja e não é também uma ARM, mas trata-se de uma cebola da arquitetura MIPS.

É provável que de algum modo, esta board diminuta não lhe atraia. Também é provável que você não tenha experimentado ainda essa arquitetura como hobista ou profissional, mas não há dúvidas de que você já interagiu com algum hardware MIPS, em casa, na empresa, no shopping center e até mesmo na rua, pois trata-se do hardware contido nos roteadores wireless. Surpreso? Bem, eu gosto bastante desse tipo de hardware porque obviamente a primeira característica é a disponibilidade de WiFi com todo o poder de um roteador wireless - Ou, dependendo do roteador, essa board se torna superior. Digo isso porque é bastante comum roteadores com 300MHz de clock - Mas não ache isso pouco, tudo depende da aplicação. Antes de seguir, vamos às especificações dessa belezinha.

Especificações da Onion Omega

Essa maravilha "cor-de-uva" roda um Linux OpenWRT e possui um processador de 400MHz com 64MB de RAM DDR2. Parece tão pouquinho, não? - Mas espere - o ESP8266 (RISC) tem 80MHz de clock, oferece WiFi, um monte de GPIO e roda um RTOS (Real Time Operating System). Estou batendo nessa tecla porque cada arquitetura tem suas características e para um MIPS 400MHz é um clock acima da média.

Essa board tem uma memória flash de 16MB, onde fica o sistema operacional; nada de cartão, assim são projetadas essas boards. Em relação ao WiFi, ela oferece banda b/g/n e uma deliciosa linha de 15 pinos de GPIO disponível! Olhe o tamanho dessa maravilha; ganha do ESP8266 em clock e memória, certo? Mas calma, são arquiteturas diferentes, não faça essa comparação. Se quiser fazer alguma comparação, sugiro que leia esse post onde escrevi sobre a Carambola - uma outra board MIPS bastante interessante que também adquiri há algum tempo.

Em relação às linguagens, bem, você pode programar em Python, Node.JS, PHP, Ruby, Lua, bla,bla,bla...C.

Ela conta com USB host, 2 portas ethernet e uma interface JTAG. Com isso, você pode fazer um controlador mais elaborado para a borda de sua rede doméstica, substituindo o roteador e fazendo a interface entre o mundo e sua rede IoT. Isso significa que você pode não só reduzir os custos, mas também simplificar a estrutura (não é post patrocinado, eu gosto mesmo de MIPS).

Docks

Você pode utilizá-la na protoboard e pronto, mas se quiser, a Onion Omega oferece também uma dock de desenvolvimento e acredite, ela é espetacular.

Espero adquirir também alguns docks empilháveis, como ethernet, relé e display OLED. De qualquer modo, dá pra usar esses recursos externamente.

Board de desenvolvimento

Essa belezinha ao lado é a board de desenvolvimento. Aqui de frente está o slot para conectar a Onion Omega. O slot à esquerda se trata do GPIO. O bom de essa board de desenvolvimento é a facilidade de acessar alguns dos recursos que ela oferece, como a porta USB, alimentação, push button, botão ON/OFF e a comodidade de desenvolver sem precisar esparramar fios pela protoboard. Mais uma vez, vou mostrar em detalhes, não se preocupe. Agora, sente-se na cadeira pra ouvir essa; existe uma dock shield para usar shields do Arduino! Isso é fantástico, pois amplia as possibilidades se você já for um usuário de Arduino, de modo que você poderá implementar novos projetos sobre Linux utilizando alguns shields de Arduino que porventura você tenha.

Primeiros passos

Vou aproveitar as imagens do "get started", assim me dedico a escrever. Não vale um video para agora porque não tenho uma aplicação, apenas adquiri a board para minha coleção ('adquiri' por livre escolha, mas fui presenteado por um amigo meu de Portugal, Jorge Monteiro), então não comprei docks extras, apenas as duas peças que tirei foto sobre meu teclado.

Primeiramente, você desempacota o dock e o processador, encaixando-o sobre o dock. Repare na imagem 2 informações importantes em relação ao encaixe; o canto direito de ambas é chanfrado, sendo que essa posição deverá casar. Ainda, o desenho na dock mostra a antena encimada e também a direção do chanfro, não tem erro para conectá-la.

onionOmega2-271x300.webp

Feito isso, basta ligá-lo ao computador, então chavear para ON.

Aguarda-se então o LED ambar parar de piscar, indicando que o boot foi concluido. O LED ambar está sobre a board do processador. A board de desenvolvimento também possui um LED, porém esse é RGB, que você poderá utilizar para iniciar a brincadeira e até mesmo um projeto que envolva tal controle.

Após o boot concluído, conecte ao dispositivo através da conexão WiFi. Ele provavelmente estará com um nome igual ou similar a "Omega-042F", mas de algum modo você o identificará. Agora você já deverá estar apto a conectar-se a ele pelo browser, utilizando a URL http://omega-ABCD.local, onde ABCD correspondem aos caracteres encontrados no nome da conexão que você utilizou para conectar-se ao dispositivo. Alternativamente, o endereço 192.168.3.1 pode ser utilizado (e sinceramente, prefiro utilizar o IP). Abrir-se-á a janela de setup com assistente, cuja janela apresentará um login. O usuário e senha, como segue:

Username: root
password: onioneer

Você pode fazer a conexão serial também. O dispositivo estará identificado como /dev/ttyUSB0 ou algo similar. Para tal acesso, simplesmente utilize seu programa preferido, seja minicom, kterm, GTKTerm, screen, etc. Eu utilizo o GTKTerm, que também tenho utilizado para a maioria das comunicações seriais com Arduino, ESP8266, MSP432, etc.

Após conectado ao terminal, você poderá fazer com que a Onion se conecte à sua rede WiFi, caso seja o intento. Para isso, chame por linha de comando o programa

wifisetup

Um menu simplório se abrirá para te orientar no processo.

Após conectado à Internet, faça o upgrade para o último firmware, chamando o comando

oupgrade

O que pode ser mais simples, não é mesmo?

Pinouts

A pinagem dessa belezinha pode ser vista na imagem a seguir; duas saídas seriais, uma saída USB, diferentes tensões disponíveis no GPIO.

onionOmega-pinouts-296x300.webp

A pinagem no dock fica maravilhosamente distribuída.

Detalhes técnicos

O consumo varia conforme cada dock, conforme a tabela.

DockConsumo em IdleConsumo em cargaPico de consumo
Dock de expansão120mA150mA180mA
Mini Dock170mA200mA220mA
Dock Arduino110mA140mA180mA

Botão de reset

No chanfro da dock tem um botão de reset; um toque para reset ou, segurar 10 segundos para voltar ao firmware de fábrica, apagando todo e qualquer dado configurado pelo usuário (sim, é um factory reset).

Peculiariedade do controle do LED

Existem algumas pequenas diferenças do padrão de manipulação do GPIO para o LED, por exemplo. O LED do Omega utiliza o GPIO27 e pode ser controlado em /sys/class/leds/onion:amber:system/trigger

Os modos disponíveis podem ser vistos com um 'cat', de forma que não é necessário decorar seus recursos:

root@Omega-0100:~#  cat /sys/class/leds/onion\:amber\:system/trigger
none timer [default-on] netdev transient gpio heartbeat morse oneshot usbdev

O modo em uso fica protegido por colchetes. Para mudar o modo, bastar fazer um echo do modo desejado para dentro do mesmo arquivo.

echo MODE > /sys/class/leds/onion\:amber\:system/trigger

Os 18 pinos de GPIO tem nível lógico de 3.3V.

Características elétricas

Copiando da tabela oficial:

onion_omega-tensao-300x155.webp

O máximo de corrente oferecida é de 24mA, mas não está descrito se é por pino ou o consumo total. A resistência de pull up/down é de 200kOhms.

Por fim, as interfaces seriais disponíveis estarão idntificadas no Linux como /dev/ttyATH[0-1]. QUando utilizado no dock Arduino - pasmem - mas não haverá terminal serial disponível.

A velocidade padrão é de 115200 kbauds/s

Recursos, suporte, documentação, bibliotecas, projetos

Um grande problema ao adquirir algumas placas pode ser a questão de documentação, projetos, exemplos, etc. Mas com a Onion Omega você não terá esse problema, já que você contará com uma estrutura de documentação vasta, com exemplo e projetos.

Das bibliotecas, você encontra I²C, SPI e Python GPIO. Com isso você já conecta diversos barramentos diferentes utilizados em shields Arduino. Os docks de expansão também tem bibliotecas prontas, logo, você não terá nenhum trabalho para por tudo pra funcionar. Se eu adquirir alguns módulos, escrevo os tutoriais. Por falar em tutoriais, na parte de tutoriais tem inclusive exemplos de cross-compilation, para que você possa escrever seus programas em C e rodar em MIPS. De resto, leitura de sensores, armazenamento, slot de expansão BLE para transformar seu Onion Omega em um beacon (veja meu post sobre beacons) e uma quantidade considerável de diversão estão disponíveis de forma a fazê-lo divertir-se invés de estressar-se.

Na parte de projetos tem alguns modestos exemplos, mas não deixa de ser interessante a introdução. Tem por exemplo, como configurar o Onion Omega para servir streaming de áudio. Espero em breve fazer posts práticos e com videos, não perca! Ainda, sugiro a leitura desse outro artigo com o módulo relé dessa board.

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.