ScratchGPIO: control de prototipos con Scratch

ScratchGPIO es un proyecto de software libre desarrollado por Simon Walters (Cymplecy) que consiste en un añadido a Scratch que lo capacita para manejar los puertos GPIO de la Raspberry Pi. Lógicamente, no es compatible con la versión de Scratch de navegador, por razones obvias: un PC o un Mac no tienen puertos GPIO.

Este proyecto me gusta mucho porque Scratch supone una alternativa muy asequible a Python en función de la experiencia programando y la capacidad de abstracción de la persona que intente programar una placa a través de los puertos. Por ejemplo, si lo que queréis es introducir en estos temas a un niño de corta edad (8 a 12 años), probablemente se incline más por usar Scratch que Python. En este sentido, ScratchGPIO abre la puerta de la electrónica y de la programación a una audiencia mucho más amplia, en edad, que Python.

Actualmente en la versión 7, es compatible con los modelos 1 y 2 de la Raspberry Pi, y es muy fácil de instalar. En este artículo y en el vídeo que lo acompaña lo instalaremos y haremos una prueba rápida con el prototipo del artículo anterior.

Qué necesitas

Conecta todo como se explica en el artículo de la semana pasada y enciende la Raspberry Pi.

Instalar ScratchGPIO

Para instalar ScratchGPIO, abre un terminal y escribe lo siguiente:

wget http://bit.ly/1wxrqdp -O instalarScratchGPIO7.sh
chmod +x instalarScratchGPIO7.sh
sudo ./instalarScratchGPIO7.sh

Lo que estamos haciendo con esas sentencias de terminal es lo siguiente:

  • Descargamos de Github la última versión del programa de instalación.
  • Le damos permisos de ejecución
  • Lo ejecutamos con permisos de superusuario.

El resultado debería ser que aparecen dos nuevos iconos en el escritorio, etiquetados como ScratchGPIO 7 y ScratchGPIO 7Plus. ScratchGPIO 7 sirve para programar una placa de prototipos, mientras que ScratchGPIO 7Plus está pensado para usar con placas ya prefabricadas, como alguna que veremos en breve.

Resultado de instalar ScratchGPIO7
Resultado de instalar ScratchGPIO 7

A día de hoy, el enlace acortado de la primera línea (la de wget ), “http://bit.ly/1wxrqdp”, enlaza con la versión 7 de ScratchGPIO en Github. Sin embargo, a medida que pase el tiempo, irán saliendo versiones y este artículo, aunque lo revisaré e iré actualizando, puede que quede algo atrasado. Consulta siempre en la página de instalación la versión y el enlace que tienes que poner en el comando wget .

Probar ScratchGPIO con el prototipo del LED

Una vez instalado, ya toca probarlo. He grabado un vídeo que publiqué en el canal de YouTube hace unos días a este respecto:

Del vídeo, lo más importante es que la numeración de los puertos es secuencial, no BCM. De hecho, se veía en el vídeo al consultar la parte de sensores para localizar los pines configurados como entrada, por defecto.

Pines detectados como sensor en ScratchGPIO
Pines detectados como sensor en ScratchGPIO: la numeración es sencuencial.

Esto no supone un problema: en nuestro prototipo, para poder colocar un valor alto en el GPIO 6 como salida, tendremos que consultar la imagen de correspondencia y convertir de BCM (GPIO 6) a numeración secuencial, de entre 1 y 40:

Conexiones GPIO de la Raspberry Pi 2, modelo B, con esquema BCM. La imagen es de www.raspberrypi-spy.co.uk
Conexiones GPIO de la Raspberry Pi 2, modelo B, con esquema BCM. La imagen es de www.raspberrypi-spy.co.uk

Consultando la imagen anterior, está claro: el GPIO 6 es el pin 31.

Otra cosa importante es la sintaxis que tienen que tener los mensajes para que ScratchGPIO los reconozca:

  • pin
  • un número entre el 1 y el 40, para la RaspberryPi 2, entre el 1 y el 26 para la Raspberry Pi 1.
  • Un valor:
    • high u on, indistintamente, colocan un valor alto en el pin correspondiente, y si estaba configurado como entrada, lo configura automáticamente como salida.
    • low u off, indistintamente, colocan un valor bajo en el pin correspondiente, y de nuevo: si estaba configurado como entrada, lo configura automáticamente como salida.

Ejemplo: pin6on, pin7low

Es decir, pin31high configuraría el pin 31 como salida y colocaría 3,3V en el pin nº 31 en numeración secuencial, es decir, en el GPIO 6 en numeración BCM. Si quisiéramos configurar un pin como entrada deberíamos escribir un mensaje formado como sigue:

  • config
  • un número entre el 1 y el 40, para la RaspberryPi 2, entre el 1 y el 26 para la Raspberry Pi 1.
  • in

Ejemplo: config31in.

Esto es todo por esta semana. Como comentaba al final del vídeo, siempre que haga algo con un prototipo intentaré poner siempre dos programas equivalentes en el artículo: uno con Python y otro con Scratch; en estos últimos aprovecharé para ir introduciendo más elementos del lenguaje y más mensajes proporcionados por ScratchGPIO. Espero que os guste la idea.

Recordad que podéis dejarme comentarios o dudas en los comentarios de este artículo, o a través del formulario de contacto o de la dirección de correo que allí se encuentra.

Un comentario en “ScratchGPIO: control de prototipos con Scratch

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *