Arduino Yún - configurando portas remotamente pela web

Vimos aqui alguns detalhes sobre o Arduino Yún e como deixá-lo configurado para estar em uma mesma rede de um PC. Hoje veremos como controlar suas portas pelo browser de um PC, tudo via rede wireless.
Conforme descrito na postagem anterior, o Arduino Yún possui um processador AR9331 que gerencia um Client/Server. Desta forma podemos servir uma webpage, acessá-la e atualizá-la pelo skecth do Arduino.
Ele já possui através da biblioteca Bridge, acesso via browser para habilitar/desabilitar e ligar/desligar portas através de links conforme abaixo:
• http://myArduinoYun.local/arduino/digital/13 : calls digitalRead(13);
• http://myArduinoYun.local/arduino/digital/13/1 : calls digitalWrite(13,1);
• http://myArduinoYun.local/arduino/analog/9/123 : analogWrite(9,123);
• http://myArduinoYun.local/arduino/analog/2 : analogRead(2);
• http://myArduinoYun.local/arduino/mode/13/input : pinMode(13, INPUT);
• http://myArduinoYun.local/arduino/mode/13/output : pinMode(13, OUTPUT);
Lembrando que os comandos somente irão funcionar se a senha do REST API ACCESS estiver desabilitada, em OPEN:

Em cima do exemplo Bridge fiz uma pagina bem simples trabalhando junto com os links de comandos mostrados acima.
A diferença pelo exemplo Bridge, é que primeiro precisamos inicializar o client HTML com os comandos abaixo dentro do sketch:
client.println("Status: 200");
client.println("Content-type: text/html");
client.println();

Depois com o comando client.print() conseguimos gerar textos e hyperlinks em HTML, porém sempre dentro dos () e " ". Exemplo:
Para escrevermos Arduino basta colocar no sketch:
client.print("Arduino");
Já para colocar um hyperlink para o Google usamos:
client.print("<a href='www.google.com.br'>Google<a>");
Assim montamos a webpage em cima do que já temos no sketch, onde toda vez que acessamos um link, como por exemplo:
http://myArduinoYun.local/arduino/digital/13/1
No meu caso como não alterei o nome arduino, ficou:
http://arduino.local/arduino/digital/13/1
Ele irá chamar a função digitalCommand(), para ligar a saída da porta 13 e já irá criar a pagina designada no sketch.

Se observarmos o exemplo Bridge, temos três funções:
digitalCommand()
analogCommand()
modeCommand()
Cada uma trabalha toda vez que acessamos o link de acordo com parte dele, exemplo:
http://myArduinoYun.local/arduino/digital/
http://myArduinoYun.local/arduino/analog/
http://myArduinoYun.local/arduino/mode/
No meu sketch coloquei a pagina apenas para as funções digitalCommand() e analogCommand().
Uma limitação neste caso é que estouramos fácil a memória do ATMega, não conseguindo acrescentar muita coisa na pagina.
Aqui um video de como ficou:

Aqui o código Bridge já modificado:
Para quem deseja criar sua própria pagina, mais completa e acessá-la de outro endereço, você pode colocá-la no cartão SD e acessá-la por um link do tipo http://myArduinoYun.local/sd/MinhaPaginaDeTeste. Explicarei como fazer em outra postagem, baseado no exemplo Temperature Web Panel .

Comentários