
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.
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.
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.
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:
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.
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.
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.
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ó
Moltes gràcies! Ja ho he provat amb les llums i funciona perfecte:) però tinc un dubte, si jo vui regular la llum desde el app inventor amb un slider haig de fer alguna cosa diferent? ho he provat tal como ho fica aquí i no em funciona
Perdona que hagi trigat en contestar, jo també tinc un Treball de Recerca a entregar molt aviat …
No tinc temps d’investigar el que demanes, però mira’t aquest vídeo, a veure s’ t’inspira: amb un slider controlem la potència dels motors d’un robot NXT.
http://youtu.be/3kQpkwKF0rU