Acessando Remotamente a ASUS Tinker Board

Introdução
Você já pensou se é possível realizar o controle de pinos GPIOs da ASUS Tinker Board através de outro computador? A resposta é sim. Neste tutorial utilizaremos o protocolo de rede SSH (Secure Shell) para acionar e desligar terminais GPIO da Tinker Board através do emulador de terminal Putty.
Lista de Materiais

Lista completa de produtos
comprar
ASUS Tinker Board S

Fonte Chaveada 5V 3A com Conector micro USB

Cabo HDMI x HDMI 2m

Protoboard 400 Pontos

WorkPlate 400 - Preta

LED 5mm Vermelho (10 unidades)

Resistor 300Ω - Pacote com 10 unidades

Jumper Premium 10cm Macho-Fêmea - 40 Unidades
Estabelecendo a Conexão com Outro Computador
Para acessar remotamente a Tinker Board é necessário conectar a placa através de um cabo de rede ao seu roteador, assim como o seu computador também deve estar conectado no mesmo. Com a placa conectada e ligada, abra o terminal de comandos "LXTerminal" (neste tutorial estamos utilizando o sistema operacional Debian, oficial da ASUS) para que possamos determinar o endereço IP de sua placa. Com o terminal aberto, envie o comando ip addr
. Esse comando irá retornar uma série de informações, como pode ser visto na imagem abaixo.

De acordo com a imagem acima, o IP da placa é 192.168.0.154
, porém esse valor de IP deve ser diferente na sua rede.
Com o IP da placa descoberto, agora iremos estabelecer conexão com a placa através do computador. Para isso utilizaremos o programa Putty, portanto é necessário realizar o download e a instalação deste programa.
Após o processo de instalação do Putty, e com o programa aberto, é possível observar uma janela como na imagem abaixo.

Agora, para acessarmos remotamente a Tinker Board, basta digitar corretamente o endereço de IP obtido pelo comando ip addr
no campo "Host Name (or IP Address)". Recomendamos que salve a configuração do endereço de IP de sua placa para que não seja necessário realizar todo o processo anterior novamente. Para isso, basta digitar um nome de sua preferência no campo "Saved Sessions", e então, com o endereço de IP configurado corretamente, clicar no botão "Save", como na imagem abaixo.

Com as configurações salvas, agora basta abrir a comunicação entre os dispositivos conectados, neste caso o seu computador e a Tinker Board. Ao pressionar o botão "Open", é aberta uma nova janela de confirmação de conexão, então confirme a confiança. Após a confirmação, uma nova janela de atenção é exibida com a mensagem que a conexão foi feita corretamente, e basta fechá-la para que a janela de comandos seja aberta, como na imagem abaixo.

Para realizar o login, basta digitar "linaro" para tanto o usuário, quanto a senha. Esses usuário e senha são padrões para os dispositivos com este sistema operacional, porém, caso você tenha alterado anteriormente o login e senha de seu sistema, é necessário utilizar os valores atuais. Vale lembrar que, diferentemente do login, a senha não é impressa na tela de comandos, portanto digite com cuidado para não ter de repetir o processo. Após realizado o login, você terá uma tela como na imagem abaixo.

Com o login efetuado e com o terminal aberto, agora iremos utilizar os locais de acesso das portas GPIOs da placa para acender e apagar LEDs através de comandos.
Acionando e Desligando LEDs
Circuito
Para realizar o experimento de acender e apagar o LED através de comandos enviados pelo Putty, monte o circuito a seguir.

Software
Para descobrir o endereço de arquivo necessário para acionar e desligar um LED através de um porta GPIO, utilizamos o comando sudo gpio readall #need GPIO_C_Library
. Esse comando retorna um relatório com todas as portas GPIOs, assim como seus estados atuais (1 ou 0), suas direções (entrada ou saída), seus endereços físicos e os locais de arquivos da CPU. O relatório retornado pelo comando pode ser visto na imagem abaixo.

Infelizmente, nem todas as portas GPIOs podem ser acessadas da maneira que iremos ver nesse tutorial. Na verdade, apenas uma não pode, a porta CPU 17.
Para acessar as portas GPIOs através dos locais de arquivos, é necessário ter acesso de superusuário. Para ter acesso de superusuário, basta enviar o comando sudo su
. Após executar esse comando, é possível observar que o cabeçalho de comandos foi alterado, como na imagem abaixo.

Agora que o acesso de superusuário está garantido pelo sistema operacional, podemos acessar os locais de arquivos responsáveis por determinar o valor e a direção do pino GPIO desejado. Neste caso utilizamos, como exemplo, o pino físico 40 com endereço de CPU 188. Para isso necessitamos exportar a porta que será utilizada através do comando echo 188 > /sys/class/gpio/export
, como pode ser visto com a imagem abaixo.

Após exportar a porta 188, precisamos configurar essa mesma porta como uma saída, para que ela possa ligar um LED. O comando utilizado para isso é echo out > /sys/class/gpio/gpio188/direction
, como é possível observar na imagem abaixo.

Agora, para acender o LED, é necessário alterar o valor da porta que estamos utilizando através do comando echo 1 > /sys/class/gpio/gpio188/value
, como pode ser visto na imagem abaixo.

Após enviar o comando, é possível observar que o LED do circuito físico montado com a Tinker Board está aceso.
Depois de ligar o LED, é recomendado desligá-lo, configurar o pino utilizado como uma entrada e, além disso, desfazer a exportação da porta 188 da pasta acessada. Para isso, utilizamos os comandos contrários dos utilizados anteriormente, como pode ser visto na imagem abaixo.

Isso irá garantir que, para projetos futuros, as configurações utilizadas para acender um simples LED não irão influenciar na execução de sensores ou atuadores conectados à essa mesma porta GPIO.
Indo Além

Assim como a BlackBoard UNO, a Tinker Board, por incrível que pareça, também possui um LED interno em seu circuito. Ele também pode ser acessado através deste mesmo processo realizado para alterar o valor de um terminal GPIO. Porém, diferentemente das portas GPIO, para acender e apagar esse LED interno são utilizados locais de arquivos diferentes.
Para acender o LED indicado na imagem ao lado, utilize o comando echo 1 > /sys/class/leds/led1-led/brightness
. Isso fará com que o LED laranja fique aceso.
Não se esqueça de, depois de observar o LED built-in aceso, desacioná-lo, para não correr o risco de obter um comportamento inesperado da placa. Para fazer isso, utilize o comando echo 0 > /sys/class/leds/led1-led/brightness
.