ArduinoMIPS

Usando o Linux da Arduino Industrial pelo ATmega32u4

arduino industrial 101

Dando sequência à série de artigos sobre esse Arduino, vamos ver agora como aproveitar os recursos do Linux da Arduino Industrial dentro do sketch do Arduino. No artigo anterior mostrei como acessar o sistema operacional por ssh porque precisava também saber quais ferramentas de sistema estão disponíveis no Linino (o Linux do Arduino Industrial 101). Agora vou mostrar algumas das facilidades que a plataforma oferece.

Programar o sketch no CodeBlocks

Vamos juntar dois prazeres? Programar uma board dessas já quebra a rotina, mas programar no CodeBlocks e ter o recurso de auto-complete é melhor ainda! Se vocẽ ainda não viu como configurar o CodeBlocks para programar seu Arduino, sugiro que dê uma lida nesse outro artigo.

Como eu citei anteriormente, pode haver dúvida em relação ao nome da placa. Antes de criar o projeto, foi necessário saber como que a Arduino Industrial 101 é identificada pelo PlatformIO. Para isso, digitei um comandinho:

Linux da Arduino Industrial

Se você der uma olhadinha no artigo anterior, vai reparar que esse nome está disposto na interface do Arduino Industrial 101. O nome da board é chiwawa. Tendo identificado a board, posso dizer seguramente os comandos para criarmos o projeto:

Linux da Arduino Industrial

Agora é só abrir a IDE CodeBlocks e abrir o arquivo platformio.cbp. Como descrito nesse artigo, os arquivos do projeto devem ficar dentro do diretório src. Não podemos nos esquecer de fazer o include do header Arduino.h para poder compilar e também para contarmos com o recurso de auto-completação.

Instalar dependências no Linux da Arduino Industrial

Para fazermos essa interação do ATmega32u4 com a MIPS, devemos previamente instalar alguns pacotes. Se ainda não sabe como fazer o login por ssh em sua Arduino Industrial 101, dê uma lida nesse artigo. Agora estou utilizando a Bridge.h para esse tutorial, mas pretendo mostrar algumas coisas com  a Ciao.h também.

Faça login por ssh e digite os comandos:

Experimento



Vamos verificar o status de uma página. Se tudo estiver ok, o header de uma página normalmente devolve o código HTTP 302 Found. Para esse teste, vamos utilizar a página da Uol.

Primeiro, conectei ao Linino por ssh. É bom que se saiba um pouco de shell script para fazer essa tarefa, senão você acaba caindo em outro problema, mas com um pouco de pesquisa no google você consegue fazer praticamente qualquer coisa. E é capaz de você não querer fazer mais nada diretamente em C. Dessa vez vou explicar em detalhes para entender o conjunto de comandos no shell e nos próximos artigos só coloco o comando.

Fazer download da página inicial

A informação que quero está bem na página inicial, em algum lugar. Primeiro fiz o download bruto pra analisar o retorno. Para fazer esse download, usei a ferramenta chamada curl:

A consulta ao host (feita diretamente no Linux da Arduino Industrial para testar) devolve a informação nesse formato:

Linux da Arduino Industrial

Antes de mostrar o comando, preciso falar de um conceito de shell script. A saída de um comando é a entrada de outro. A saída de um comando é passada para outro comando através de pipe (“|”).

Ex.:

Linux da Arduino Industrial

Executei o comando echo, que retornou meu nome. Então executei novamente utilizando o pipe para o comando cut, que recebeu parâmetros para pegar só a segunda parte. Depois executei esse último comando novamente acrescido do comando tr após o pipe, para transformar em maiúsculo. É assim que funciona a manipulação de dados digitando diretamente no shell.

Você pode estar se perguntando: ” O que isso tem a ver com Arduino”? – Eu digo que agora, com o Arduino Industrial 101, tem tudo a ver. Nós vamos usar isso em nosso sketch.

Só uma nota importante: O Linux da Arduino Industrial é baseado no OpenWRT, que por sua vez utiliza o busybox, que contempla toda a base de comandos da raíz do sistema. Por isso, sempre que for compor comandos, execute na shell desse sistema, porque os comandos tem comportamento diferente de um sistema compilado para x86.

Filtrar o campo de status

E antes que apareça um gênio do shell script pra dizer que faz melhor, eu digo que eu também faço. Digitei as primeiras coisas que vieram na cabeça pra agilizar o resultado, não planejei nada, mas se você aprender shell script, vai ver que dá pra melhorar.

Para filtrar o campo desejado, juntei os comandos curl, egrep e sed.

A linha que utilizaremos será essa:

Nesse comando, o curl recolhe o header completo. Essa saída é passada para o comando grep, que seleciona somente a linha que contém o código, seja ele qual for. A saída da expressão regular com o comando grep é a entrada para o comando sed, que remove as tags HTML da linha utilizando uma expressão regular também, e assim temos apenas 302 Found como resultado:

Linux da Arduino Industrial

Agora precisamos capturar a resposta e exibir na serial. Aqui fazemos algo simples, mas poderiamos fazer outras coisas; tocar um buzzer, acender um LED, fazer uma comunicação com um servidor remoto, etc. Inclusive, poderiamos acessar o servidor web remoto e reiniciar o serviço HTTP caso encontrassemos erros (se o site estivesse sob nosso controle, claro).

Sketch para comunicação com o Linux da Arduino Industrial

E o sketch fica com pouquíssimas linhas, sem nenhuma complicação:

O resultado:

Linux da Arduino Industrial

 

Tem muito mais coisas que pretendo mostrar, esse simples artigo é só pra ir formando a ideia, mas teremos coisas muito mais elaboradas!

Onde comprar o Arduino Industrial 101

Pelo preço e pela loja, recomendo a compra no Baú da Eletrônica (clique aqui), que tem uma série de outras coisas interessantes no site, como você pode comprovar ao visitar.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

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

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!