Até pouco tempo atrás, para se ter o Arduino conectado à internet era preciso ter em conjunto um Shield Ethernet como o W5100, ou uma placa com o ENC28J60, capazes de processar a pilha TCP/IP e facilitar o serviço de rede para o nosso camaradinha. Isso quando não se pensava em usar W-iFi, recorrendo a soluções como o WizFi210 e modos bem ortodoxos de configuração.
Atendendo a uma nova e real tendência, a fundação Arduino projetou e liberou o novo Arduino Yún em uma placa que agrega o já conhecido ATmega32u4, presente no Arduino Leonardo, juntamente com o SoC Atheros AR9331, comum a muitos roteadores. E tudo isso reunido nas mesmas dimensões do tradicional Arduino Uno (Confira artigo de Fabio Souza sobre Arduino Uno).

Figura 1: Imagens com perspectiva superior e inferior do Arduino Yún
A título de curiosidade, Yún significa “nuvem” em chinês. Ou seja, essa é a plataforma voltada para a Internet das Coisas com foco em operação na nuvem da fundação Arduino.
E fazendo jus à nuvem, o Arduino Yún possui conectividades com rede Ethernet e rede Wi-Fi, entrada para cartão de memória de modo a expandir o armazenamento de arquivos do dispositivo, possuindo também suporte a USB Host, tornando possível utilizar em conjunto dispositivos como câmeras USB, modems 3G, pendrives e outros.
A interação entre os dois mundos ATmega 32u4 e Atheros AR9331 é possível através de uma ponte de comunicação serial, usando os sinais Tx/Rx de ambos, por meio da qual ocorre o fluxo de comandos entre ambas as partes, dependendo do programa sketch gravado no Arduino.
E essa ponte não trata apenas do canal de comunicação, mas de toda uma nova biblioteca que permite a interação entre os dois mundos em programas sketchs do Arduino, de modo a acessar conjuntamente GPIOs do ATmega e dados do cartão de memória pelo Atheros, por exemplo. Em um outro post, serão abordados detalhes das novas bibliotecas do Arduino Yún.

Figura 2: Descrição da união entre os mundos Arduino e Linux por meio da Ponte (Bridge)
Na divisão de responsabilidades, temos o seguinte perfil:
ATmega32u4
- Controle dos GPIOs e entradas Analógicas;
- Interface USB para programação e USB Host também, dado que é o ATmega 32u4;
- Faz a interface para programação de sketchs Arduino;
- Em suma, trabalho de baixo nível.
Athernos AR 9331
- Interface Wi-Fi;
- Interface Ethernet;
- Interface com cartão de memória microSD;
- Intertace com USB Host;
- Em suma, trabalho de alto nível
A placa Arduino Yún possui diversos conectores e botões auxiliares, além dos periféricos já mencionados. Pode-se destacar a presença de um botão que faz reset as configurações WiFi, localizado próximo do conector USB Host, como também um botão de reset para o AR9331, que reinicia o sistema Linux Linino embutido, localizado próximo ao conector de cartão de memória, e há também o botão de reset para o ATmega32u4, localizado ao lado do conector RJ45. Além disso, ele possui um conector para antena WiFi, caso o usuário queira usar uma antena externa, e conectores para “PoE” – Power over Ethernet, que permitem o Arduino Yún ser energizado pela rede cabeada, caso essa rede tenha suporte a PoE. Todas as conexões podem ser vistas em detalhes na imagem a seguir, que exibe o Arduino Yún, seus periféricos, componentes e sinais associados.

Figura 3: Imagem com destaque para todos os componentes do Arduino Yún
Como dito anteriormente, o microcontrolador ATmega32u4 é o mesmo presente na placa Arduino Leonardo, já apresentada no Embarcados pelo Fábio Souza. O grande destaque desse microcontrolador é a presença de USB nativo, que é um “plus” ao Arduino Yún, permitindo-lhe funcionar como teclado e mouse, por exemplo, agora capazes de um eventual controle remoto, dada as funcionalidades de rede também incorporadas.
Já o SoC Atheros AR9331 é o mesmo presente em alguns roteadores WiFi, e em diversas placas Linux voltadas para a Internet das Coisas, como já comentado nos meus artigos. É um SoC de arquitetura MIPS, de baixo consumo e baixo custo.
Abaixo, seguem características técnicas da dupla, ATmega32u4 e Atheros AR9331:
|
Microcontrolador Arduino AVR | |
|
Microcontrolador |
ATmega32u4 |
|
Tensão de Operação |
5V |
|
Tensão de Entrada |
5V |
|
Pinos digitais de E/S |
20 |
|
Canais PWM |
7 |
|
Canais de Entrada Analógica |
12 |
|
Corrente CC por Pino |
40 mA |
|
Corrente CC 3.3V por Pino |
50 mA |
|
Memória Flash |
32 KB (dos quais KB são usados pelo bootloader) |
|
Memória SRAM |
2.5 KB |
|
Memória EEPROM |
1 KB |
|
Frequência de Operação |
16 MHz |
|
Processador Linux | |
|
Processador |
Atheros AR9331 |
|
Arquitetura |
MIPS @400MHz |
|
Tensão de Operação |
3.3V |
|
Barramento Ethernet |
IEEE 802.3 10/100Mbit/s |
|
WiFi |
IEEE 802.11b/g/n |
|
Conexão USB Tipo-A |
2.0 Host |
|
Leitor de Cartão |
Micro-SD apenas |
|
Memória RAM |
64 MB DDR2 |
|
Memória Flash |
16 MB |
O sistema utilizado no SoC AR9331 é o Linino, versão modificada do OpenWRT para os propósitos do projeto Yún. De cara, já é possível acessar o terminal de comando do Linino por meio de SSH, bastando conhecer o IP da placa na rede. Ao conectar no sistema, o usuário é recebido pela tela de saudação, como mostrado adiante.

Figura 4: Tela de inicialização do OpenWRT Linino do Yún.
Dentre algumas das suas características, está a presença de Python de fábrica, e a capacidade de lidar com uma API REST, em que, resumidamente, torna o Arduino Yún capaz de interagir com aplicações web por meio de URLs customizadas, capazes de controlar suas GPIOs e fazer até mesmo leitura dos conversores analógico-digitais. Um exemplo bem simples é mostrado abaixo, onde por meio de REST o pino digital 13 é definido como saída.

Figura 5: Exemplo de uso do recurso REST para definir um pino digital como saída.
Analogamente aos roteadores, o Arduino Yún também possui um painel virtual de configuração pela rede. Este painel pode ser acessado ao se conectar ao Yún por meio de conexão Wi-Fi direta, quando este opera como Access Point, ou quando o Yún é conectado a rede cabeada e seu IP é conhecido. Uma curiosidade, quando a conexão é realizada via Wi-Fi ao Yún como Access Point, o mesmo pode ser referenciado como “arduino.local”, como no exemplo abaixo de painel de controle.

Figura 6: Exemplo de tela de configuração do Arduino Yún.
Apesar de sua pouca memória interna, Flash de 16 MB, é possível expandir o armazenamento do sistema Linux Linino pelo cartão de memória microSD, de modo a instalar mais programas e bibliotecas, e também armazenar mais arquivos, como logs de aplicações, etc. A própria fundação Arduino fornece em seu site um guia para fazer o processo em.
Todo o código fonte do Linino está disponível no GitHub, podendo ser acessado no seguinte link.
Em breve teremos mais posts tratando as bibliotecas do Arduino Yún e exemplos de sua utilização.





