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 [1]).

 

Figura 1: Imagens com perspectiva superior [2] e inferior [3] 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) [4]

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 [7]

Como dito anteriormente, o  microcontrolador ATmega32u4 é o mesmo presente na placa Arduino Leonardo, já apresentada no Embarcados pelo Fábio Souza [9]. 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 [10] e [11]. É 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. [5]

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. [7]

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.

http://www.open-electronics.org/wp-content/uploads/2013/11/Fig_002.jpg

Figura 6: Exemplo de tela de configuração do Arduino Yún. [8]

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 [4].

Todo o código fonte do Linino está disponível no GitHub, podendo ser acessado no seguinte link: [12]

Em breve teremos mais posts tratando as bibliotecas do Arduino Yún e exemplos de sua utilização.

Referências

 [1] – Arduino Uno – Fabio Souza

 [2] – Arduino Yún – http://arduino.cc/en/uploads/Main/ArduinoYunFront_2_450px.jpg[2] – Arduino Yún – http://arduino.cc/en/uploads/Main/ArduinoYunBack_2_450px.jpg

[3] – Arduino Yún – http://arduino.cc/en/uploads/Main/BridgeInShort.png

[4] – Arduino Yún – http://arduino.cc/en/Tutorial/ExpandingYunDiskSpace

[5] – CodyBonney – http://codybonney.com/connecting-to-the-arduino-yun-via-ssh/

[6] – DevianArt – http://fc07.deviantart.net/fs71/f/2013/290/a/e/yun_by_pighixxx-d6qvbq4.png

[7] – OpenElectronics – http://www.open-electronics.org/wp-content/uploads/2014/03/Fig_002.png

[8] – OpenElectronics – http://www.open-electronics.org/wp-content/uploads/2013/11/Fig_002.jpg

[9] – Embarcados – http://www.embarcados.com.br/arduino-leonardo/

[10] – Embarcados – http://www.embarcados.com.br/novas-plataformas-e-modulos-iot-parte/

[11] – Embarcados – http://www.embarcados.com.br/novas-plataformas-e-modulos-iot-2/

[12] – Linino – https://github.com/arduino/linino

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather