ArduinoMIPS

Arduino Industrial 101 – MIPS e ATmega32u4

arduino industrial 101

Pra mim é difícil não ficar empolgado, sou apaixonado por MIPS. Mas esse Arduino Industrial 101, ah, que tesouro!

Características do Arduino Industrial 101

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.

Especificações do MIPS

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)

Especificações do ATmega

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.

Factory reset

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.

Intercomunicação

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.

Arduino Ciao



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:

arduino industrial 101 - ciao

Podemos também conectar dispositivos periféricos como teclados, webcams, pendrives etc.

Na IDE do Arduino

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.

Pinout

A disposição dos pinos e a soldagem dos slots segue a ordem:

arduino industrial 101 - pinout

Vamos subir o nível mais um pouco, mas agora o coração vai começar a chacoalhar a camiseta.

Interagindo com o sistema

Temos lá no sketch o setup()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:

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?

Onde comprar?

Não é muito fácil achar e sério, você não vai achar uma loja virtual com um preço menor que no Baú da Eletrônica (clique aqui).

Vá apreciando e se quiser esperar por convencimento para adquirí-la, aguarde os próximos artigos relacionados!

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!