Manual
do
Maker
.
com
Pra mim é difícil não ficar empolgado, sou apaixonado por MIPS. Mas esse Arduino Industrial 101, ah, que tesouro!
Essa placa, com tamanho um pouco além da metade de um cartão de crédito, roda um sistema operacional Linux chamado Linino e é baseado no OpenWRT. Falar de MIPS, já se deduz que tem WiFi. Pra quem não sabe, MIPS é a arquitetura dos processadores utilizados em roteadores domésticos, assim como nos carros autônomos da Tesla. A board possui pinagem para Ethernet, como é de se esperar e alguns pinos de GPIO que podem ser utilizados como PWM. Até aqui, nada muito impressionante, hum? Então continue a leitura.
Processador: Atheros AR9331 Arquitetura: MIPS Voltagem Operacional: 3,3V Memória Flash: 16 MB RAM: 64 MB DDR2 Velocidade de Clock: 400 MHz WiFi: 802.11 b/g/n 2.4 GHz Ethernet: 802.3 10/100 Mbit/s (sem conector) USB: 2.0 Host (sem conector)
Microcontrolador: ATmega32u4 Arquitetura: AVR Voltagem Operacional: 5V Memória Flash: 32 KB SRAM: 2,5 KB Velocidade de Clock: 16 MHz Pinos E/S analógicos: 12 (4 disponíveis na pinagem) EEPROM: 1KB Corrente CC por pino E/S: 40mA
Se não conhece, o ATmega32u4 é a mesma MCU do Arduino Leonardo. Ele possui 2 seriais e pode atuar como mouse e teclado. É bem interessante, aproveitei esse recurso para fazer o (des)corretor ortográfico com o USB Host Shield, desse artigo.
O consumo dele é de fazer rir, ambos os processadores funcionando alimentados pela USB. Tem 7 saídas PWM, 20 GPIO e cabe no bolso.
Pode mexer no sistema sem medo. Depois que tudo estiver concluído e você quiser recomeçar o processo, basta segurar o botão USER1 por 30 segundos e o sistema será reinicializado para as configurações de fábrica, gravado na flash.
Aqui começa a ficar mais interessante. A comunicação serial entre os processadores é direta, e dá pra fazer algumas coisas muito diferentes, como vou explicar nesse ou em outro artigo relacionado.
Obviamente os outros recursos estão dispostos, como os barramentos I2C e SPI. O tradicional LED do pino13 e entradas analógicas dão mais poder ao processador MIPS. Na board se encontram 4 botões; um para o reset de cada processdor, USER1, para resetar a WLAN, ou por mais de 5 segundos (e menos que 10) para restaurar a configuração padrão do WiFi. O botão USER2 está conectado ao GPIO GP23 da MIPS e livre para propósito geral. Mais detalhes a respeito serão vistos, primeiro continuemos a apresentação.
Como citado, uma das portas seriais do ATmega32u4 está conectada ao MIPS e a outra, livre para uso pela porta USB, como tradicionalmente é feito no Arduino Leonardo. Vamos subir o nível mais um pouco.
O Arduino Ciao (se lê "tchau", mas significa "olá" em Italiano) é um recurso fantástico que permite a intercomunicação intuitiva com processamento periférico. Esse recurso foi desenvolvido para servir de ponte transparente entre o ATmega e o MIPS da board, permitindo uma série de protocolos e serviços de terceiros (estou me contendo pra não esparramar todas as informações de uma vez). Com ele podemos facilmente interagir com protocolos como XMPP, HTTP, WebSocket e aplicações como Jabber, WeChat, Twitter, Facebook etc.
Teremos outros artigos relacionados a essa board, não dá pra jogar tudo de uma vez em um só artigo, mas ainda sobre o Ciao, essa bridge funciona assim:
Podemos também conectar dispositivos periféricos como teclados, webcams, pendrives etc.
Para programá-lo, basta selecionar Arduino Industrial 101 no menu Ferramentas > Board.
Para habilitar a comunicação entre a MCU e a CPU, vá em Sketch > Incluir biblioteca > Gerenciar bibliotecas e instale a biblioteca Ciao.
A disposição dos pinos e a soldagem dos slots segue a ordem:
Vamos subir o nível mais um pouco, mas agora o coração vai começar a chacoalhar a camiseta.
Temos lá no sketch o setup() e loop(). Já sabemos programar para controlar os pinos digitais e analógicos, usar barramentos seriais e tudo o mais. Mas como interagir com o sistema operacional da MIPS para, por exemplo, pegar o uso de CPU? - Eu pergunto, eu respondo. Com a lib Ciao, fazemos uma chamada parecida com o system() do C, ou mais parecido ainda com o QProcess do Qt. Uma simples função que escreve e retorna o resultado no tipo CiaoData, que depois pode ser manipulado de forma muito simples. Muito, muito simples:
#include <Ciao.h>
#define ARGS_SEP_CODE String(char(21))
String ShellCommand = "grep";
String ShellArguments = "'cpu ' /proc/stat | awk '{usage=($2+$4)*100/($2+$4+$5)} END {print usage}'";
void setup() {
//init Ciao
Ciao.begin();
Serial.begin(9600);
}
void loop() {
//Run commands in Linino OS to get the CPU Usage
CiaoData data = Ciao.write("shell",ShellCommand, ShellArguments);
if(!data.isEmpty()){
//Get data back
String usage = data.get(2);
Serial.println(usage);
}
delay(10000);
}
Ainda pode parecer pouco, mas se você manja de shell Linux, seu Arduino virou um Linux. Você pode usar expressões regulares e todas as ferramentas do shell para manipular dados, ou seja, através de um sketch podemos atribuir todo o processamento ao MIPS, utilizando ferramentas que jamais seriam possíveis nativamente no Arduino (por limitações de recursos). Só com isso já consigo imaginar uns 10 artigos pra essa board, o que é péssimo, porque agora já percebi que viciei só de olhar. Suporte um pouco mais antes de clicar no link mais abaixo; a lib oferece um suporte facilitado a MQTT e leitura e escrita de arquivos. Mas eu não sei dizer exatamene onde essa board é mais forte. Através do sketch podemos dar ordem para a MIPS compilar um programa, acessar um arquivo descritor do Linux, carregar módulos e tudo o mais; o Arduino virou um Linux! Eu falei da biblioteca Bridge? Ouch, tem muito a discorrer sobre essa board ainda. Façamos o seguinte, no próximo artigo teremos um bom tutorial prático e um video dos resultados, que tal?
Infelizmente essa incrível placa saiu de linha, mas se encontrar para compra, vale a experiência. Estou feliz com a minha, mesmo após 5 anos do primeiro contato!
Vá apreciando e se quiser esperar por convencimento para adquirí-la, aguarde os próximos artigos relacionados!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.