Capítulo 37: Webserial y FPGAs - Obijuan/videoblog GitHub Wiki

Vídeo

  • Fecha: 2020/Abril/11

Haz click en la imagen para ver el vídeo en Youtube

Click to see the youtube video

Contenido

Acceso al mundo físico desde el navegador

Gracias a la API Experimental de WebSeial podemos acceder a dispositivos externos al ordenador desde el navegador a través del puerto serie. Esto permite que nos comuniquemos muy fácilmente con nuestros circuitos de las FPGAs, o microprocesadores en placas como Arduino

Ejemplo 1: Abriendo y cerrando una pinza

Tenemos el siguiente escenario montado: La placa con FPGA Alhambra II conectada directamente a una pinza robótica accionada por un servo

Le cargamos un circuito para abrir y cerrar la pinza cuando se aprieta el pulsador SW1 de la placa. En el ejemplo 5 del tutorial 18 están los detalles de este circuito

Ahora queremos controlar la pinza desde el ordenador, a través del puerto serie, además de a través del pulsador. Añadimos al circuito un switch virtual. Es un bloque recibe un comando por el puerto serie y saca un cero o uno, como si fuese un pulsador cualquiera

El circuito está en este fichero: 01-Ejemplo-1-Pinza.ice

Desde un terminal serie podemos accionar ahora la pinza, sin más que enviar el comando "a" más el estado del bit ("0","1") más un carácter de final de línea "\n". Así, los dos comandos posibles son "a1\n" y "a0\n

Primer acceso al PANEL WEB

Ahora lo probamos desde una aplicación Javascript que están en una web. Nos conectamos a esta URL: PANEL DE PRUEBAS

La API del Webserial de momento está en fase experimental y no está soportada todavía en todos los navegadores. Yo lo estoy usando con Chromium, que es libre y multiplataforma. Tambien funciona en Chrome, Edge y Ópera

Al ser experimental NO está activado por defecto. Será lo primero que hagamos. Al conectarnos la primera vez nos aparecerá un mensaje de aviso diciendo que nuestro navegador NO soporta WEB Serial:

Activarlo es muy sencillo, sólo hay que poner en la barra de navegación esta URL:

chrome://flags/#enable-experimental-web-platform-features

Nos fijamos en la primera opción: Experimental Web Platform Features, que por defecto estará desabilitada (Disabled)

La activamos (Enabled). En la parte inferior nos aparecerá una nueva opción indicando que relancemos el navegador para que se active la nueva opción

Se nos abrirá de nuevo el navegador, en la misma página de configuración. Ahora nos volvemos a conectar a la URL del PANEL. Y nos aparecerá este panel, sin el mensaje en rojo anterior:

Control de la pinza desde el panel WEB

Para acceder al puerto serie, primero tenemos que abrirlo pinchando en Connect. Esto es obligatorio siempre, porque por motivos de seguridad, el navegador no deja acceder al puerto serie a los programas en javascript, sin nuestro consentimiento

Se nos abre una ventana con los nombres de los dispositivos serie que podemos abrir. Estos nombres cambiarán de un sistema operativo a otro. En Linux, si lo que tienes es conectada una placa Alhambra II, debemos abrir el dispositivo TTYUSB1. Lo seleccionamos y pinchamos en Connect

Ya estamos conectados. Si apretamos el switch rojo con el ratón, veremos cómo la pinza se cierra y se abre

Una vez que hayamos termiando de probarlo, es IMPORTANTE desconetarse del puerto serie, para poder usarlo desde otra aplicación. Para ello sólo hay que pinchar en Disconnect y el panel vuelve al estado inicial

Ejemplo 2: Terminal serie web

Además de crear nuestros paneles para acceder al hardware, también podemos usar un terminal WEB desde el navegador, cuyo funcionamiento es similar a los terminales serie clásicos

Para probarlo vamos a cargar primero en la Alhambra II un circuito que tiene el procesador J1 ejecutando un intérprete del lenguaje FORTH. El fichero a cargar es este: j1a-cpu-dev.ice

Podéis encontrar más información sobre este proyecto en este enlace: Proyecto J1a-Icestudio

Ahora abrimos el terminal WEB, desde esta URL: Terminal WEB

Para usarlo tenemos que conectarnos primero, pinchando en Conectar y seleccionando el puerto serie. Una vez hecho esto ya podemos escribir comandos en el terminal. Por ejemplo pulsamos ENTER varias veces. El intérprete de FORTH nos devolverá el mensaje "OK"

Podemos probar unos cuandos comandos sencillos de Forth, como por ejemplo realizar una suma:

1 2 + .

o mostrar todas las palabras implementadas en este Forth:

words

o encender todos los LEDs, con este comando:

$ff leds

Conclusiones

La API webserial es muy prometedora. Va a permitir hacer aplicaciones WEB que tengan acceso al mundo físico: microprocesadores, FPGAs, impresoras 3D, robots, etc... Todo de una forma muy sencilla para el usuario, sin tener que instalar nada. Simplemente conectándose a una URL

Enlaces

Autor

Licencia