Control remot de S4A amb App Inventor

Control remot de S4A amb App Inventor

Tot i què S4A no carrega cap programa a l’Arduino i només permet la comunicació entre dispositius connectats en xarxa local, podem controlar l’execució d’un programa en S4A des del mòbil, inclús des d’una pàgina web. Aquesta és la nostra proposta per encendre i apagar un LED:

El procés és simple un cop descobert i consta de 3 fases:
1. Creació del programa S4A amb instruccions associades a la recepció de missatges
2. Activació dels sensors remots en S4A
3. Creació d’una aplicació amb App Inventor des de la qual enviar els missatges a l’S4A

El programa S4A
Les instruccions a executar des de l’app han d’estar associades a la recepció de missatges. Aquest és el nostre programa de prova, amb dues funcions per encendre o apagar un LED connectat al pin 10 d’Arduino en funció de l’estat d’un sensor. Així, el LED s’encendrà o s’apagarà quan el programa rebi el missatge llumON o llumOFF, sigui des del mateix S4A o des de l’app.
appS4A01

Activació dels sensors remots
El protocol de sensors remots és una funció que permet l’interacció entre Scratch i altres programes. Aquesta comunicació es fa a través del port 42001 de l’ordinador via TCP/IP, el protocol de comunicació per Internet, i s’activa des del menu Editar / Host de Xarxa de S4A, que a més ens mostra l’adreça IP de l’ordinador.
SR02

Sintaxi de l’enviament de missatges
De la mateixa manera que amb el bloc Envia a tots de Scratch fem que s’executi el codi dins la funció Al rebre, podem definir URLs que continguin la instrucció d’enviament d’aquest mateix missatge.
Així, l’execució serà la mateixa si enviem el missatge des del mateix programa, des d’un navegador d’Internet o des d’una app mòbil.
Missatges

http:// indica que es tracta d’una URL
192.168.1.12 és l’adreça IP de l’ordinador amb el programa S4A funcionant
42001 és el port de comunicació
broadcast és la funció d’enviament de missatges
llumON: el valor de la funció broadcast és el nom del missatge a enviar, que ha de coincidir amb el del programa en S4A

L’aplicació amb App Inventor
Aquests són els components mínims que necessitem per encendre i apagar el LED:
appS4A01

UserInterface/ListPicker
És un botó que en ser clicat mostrarà una llista amb els noms dels dispositius amb els que ens pugui interessar connectar el mòbil per executar l’app.
Al pannel Blocks de l’App Inventor definim com elements de la ListPicker els noms dels dispositius, dins d’una llista.
appS4A03

Un cop haguem seleccionat el dispositiu, caldrà assignar-li la seva adreça IP (la podem obtenir des de l’S4A). Nosaltres hem creat una variable que hem anomenat IP, i l’hem inicialitzat a zero. El valor d’aquesta variable serà la IP del dispositiu seleccionat.
appS4A04

Enviament de missatges mitjançant botons
El BotoEncen, en ser clicat, ha d’enviar el missatge: http://IP:42001/broadcast=llumON.
Per fer l’acció de l’enviament hem utilitzat un component de conectivitat ViewViewer, que pot executar accions html en un frame, sense necessitat d’obrir el navegador i perdre la pantalla de l’app.
A la programació del botó només cal definir la crida al WebWiewer en clicar-lo, així com la URL: el missatge a enviar. Com que aquest missatge conté dades de diferent naturalessa (text + variable IP) cal un bloc de text Join per treballar amb tots ells a l’hora.

appS4A05

La programació del BotoApaga és exactament la mateixa que la del BotoEncen. L’únic que canvia és el nom del missatge a enviar, en aquest cas: llumOFF.

A partir d’aquí, amb una mica d’imaginació es pot complicar i perfeccionar l’app amb més botons, enllaços, diferents pantalles, etiquetes informatives, …
Aquestes són les pantalles de la nostra, inspirada en la proposada per l’ex-alumne Tecno-Lògic J. Santiago al seu Treball de Recerca en Domòtica amb Arduino controlat per Scratch for Arduino, i gràcies a l’ajuda de Victor Casado, membre de l’equip de desenvolupament de S4A.
Clicant sobre la imatge podeu descarregar l’arxiu .aia de l’aplicació
DomoS4A