Onion Omega – Um avanço com OpenWRT

Onion Omega
Onion Omega

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
Board de desenvolvimento

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.

Passo 1 e passo 2
Passo 1 e passo 2

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

Conexão e ligamento
Conexão e ligamento

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:

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

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

Setup do WiFi
Setup do WiFi

Após conectado à Internet (graças ao cartel das telecomunicações, em risco de quota de dados), faça o upgrade para o último firmware, chamando o comando

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.

Onion Omega - Pinouts
Onion Omega – Pinouts

A pinagem no dock fica maravilhosamente distribuida:

Dock Pinout
Dock Pinout

Detalhes técnicos

O consumo varia conforme cada dock, conforme a tabela.

Dock Consumo em Idle Consumo em carga Pico de consumo
Dock de expansão 120mA 150mA 180mA
Mini Dock 170mA 200mA 220mA
Dock Arduino 110mA 140mA 180mA

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:

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

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

Características elétricas

Copiando da tabela oficial:

Limites de tensão
Limites de tensão

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!

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Próximo post a caminho!

Agregador de Links - Loucuras da Net

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Um comentário em “Onion Omega – Um avanço com OpenWRT

Deixe uma resposta