# Robótica

Actualizado Mayo 2024

# Introducción

¿Se puede hacer robótica con Vitalinux (Linux)? Por supuesto que sí.

Normalmente lo que se utiliza es la aplicación online del fabricante, y dependiendo del robot hay que utilizar algún software interface entre la aplicación online y el hardware de la placa conectada por el puerto USB.

También puede ser que haya que dar permisos para utilizar el puerto, tal y como se describe en Preliminares.

# Preliminares

Puedes saltarte éste paso preliminar si usas Vitalinux, migasfree lo hará por ti...

En Lego, mbot, cyberpi, ESP32, Arduino... la comunicación con el mismo se hace a través de un dispositivo de interfaz humana (también llamado HID). Por ejemplo en el caso de Lego WeDo con un cable usb y en el caso de Cyberpi con un emisor inhalámbrico (también usb).

Podemos ver los usb conectados con:

lsusb

En la siguiente captura podemos observar la salida de los comandos indicados antes y después de insertar el cable del robot LEGO. Podemos ver que su IdVendor es 0694 y que su idProduct es 0003.

lsub

Para poder leer y escribir en dicho dispositivo (mandar órdenes al robot o leer datos del mismo), Linux crea un archivo de tipo carácter en /dev, pero podemos observar que sólo tiene permisos root: Vemos dos dispositivos, uno el teclado/ratón y otro que corresponde a la conexión con el robot

centre|thumb|Vemos dos dispositivos, uno el teclado/ratón y otro que corresponde a la conexión con elrobot

Para ello, simplemente tenemos que indicarle a udev que nos cree dicho dispositivo con los permisos necesarios:

Editar un archivo nuevo:

sudo nano /lib/udev/rules.d/99-hidraw.rules

Y en ese fichero ponemos la línea

ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"\

Así sucesivamente con los diferentes robots que queramos conectar.

Nota: Muchos robots de placa electrónica, como el ESP32, Cyberpi, Arduino, etc.. en el listado lsub no aparece el nombre como tal, sino el chip de interface CH340 o UART que traduce el protocolo USB al TTL de la placa. La manera de localizar quien es quien es ejecutar lsub antes y después de conectar el robot

Un fichero que contiene todos, y que iremos actualizando sería este para 99-hidraw.rules :

=============================================

# Solucion generica: para todos los dispositivos de interfaz humana\
# KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"\
# Lego Wedo\
ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0003", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"\
# mBot\
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="ffff", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"\
# Cyberpi mBot2\
ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
# Lego Spike
ATTRS{idVendor}=="0694", ATTRS{idProduct}=="0009", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
# mbot pincho 2.4 UART Windbond
ATTRS{idVendor}=="0416", ATTRS{idProduct}=="ffff", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
# microbit
ATTRS{idVendor}=="0d28", ATTRS{idProduct}=="0204", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"

=================================================

Por último quedaría reiniciar el servicio udev

sudo service udev restart

Si antes de realizar el proceso estaba conectado el robot, tendremos que desconectarlo y volverlo a conectar para que los cambios surtan efecto, quedando algo parecido a ésto:

lsub

# Robots Makeblock

Este software puede utilizarse aparte de para programar mBot, para muchas otras placas, entre ellas Arduino UNO.

En SO Linux como Vitalinux es necesario utilizar la versión online disponible en https://ide.mblock.cc/ (opens new window)

Para ello, antes de nada habrá que seguir una serie de pasos:

  1. Conecta la placa al ordenador
  2. Arranca el mBlock mlink Starter, un programa que tiene que estar funcionando para que el navegador se comunique con la placa. Este programa está disponible en Vitalinux Play.
  3. Arranca un navegador compatible con Chrome y accede a la web (opens new window) . Puede ser Chromium también.

Una vez allí habrá que añadir un dispositivo del tipo de nuestra placa y conectarlo y actualizar el firmware necesario.

Imagen: Software mLink en Vitalinux Play

lsub

Al ejecutarlo, saldrá una ventana de comandos QUE NO TENEMOS QUE CERRAR dejarla minimizada.

Start mlink: Running...
Version: 1.2.0

Una vez minimizada la ventana de mLink ya podemos acceder a la web (opens new window), https://ide.mblock.cc/ (opens new window) y conectar nuestro robot físicamente por el puerto USB :

lsub

ATENCION NO ANTES, PRIMERO MLINK Y LUEGO MBLOCK

# mbot

Con cable USB Se debe añadir una regla en udev para que chrome tenga permiso para acceder a dicha placa, ver Preliminar, pero eso ya te lo hemos hecho nosotros, no te preocupes 😃.

Lo primero es arrancar mlink, y ya podemos arrancar el programa mBlock por la web (opens new window), https://ide.mblock.cc/ (opens new window) y conectar nuestro robot físicamente por el puerto USB, y funciona perfectamente tanto en los modos vivo como el modo cargar.

** Con pincho 2.4G y Bluetooth ** ACTUALMENTE LA VERSIÓN mLink PARA LINUX NO PERMITE USAR ESTOS MODOS DE CONEXIÓN. En Bluetooth el emparejamiento lo tiene que hacer mLink y la versión 1.2.0 de Linux que proporciona el fabricante Makeblock no lo hace. 😒

# mbot2 (Cyberpi)

Se debe añadir una regla en udev para que chrome tenga permiso para acceder a dicha placa, ver Preliminar, pero eso ya te lo hemos hecho nosotros, no te preocupes 😃.

Lo primero es arrancar mlink, y ya podemos arrancar el programa mBlock por la web (opens new window), https://ide.mblock.cc/ (opens new window), podemos utilizar tanto el cable USB como inalámbricamente con el pincho Bluetooth, y trabajar en vivo como cargar.

lsub

# Microbit

Se debe añadir una regla en udev para que chrome tenga permiso para acceder a dicha placa, pero eso ya te lo hemos hecho nosotros, no te preocupes 😃.

Las Placas Microbit se programan desde la página correspondiente https://makecode.microbit.org (opens new window). Hemos probado con Vitalinux que funciona perfectamente, en los dos modos, cargar diréctamente en la placa, como descargar el fichero .hex y copiarlo en la placa.

lsub

Imagen correspondiente al modo de cargar diréctamente en la placa.

La versión de firmware tiene que ser superior a la 0249. En la página https://makecode.microbit.org (opens new window) es muy fácil actualizar el firmware si tu versión es inferior. ¿Cómo puedo saber la versión de la placa? En el fichero DETAILS.TXT. En la figura se ve que esta placa necesita una actualización pues es la versión 0241.

lsub

# Arduino

Esta placa siempre se lleva bien con los sistemas abiertos. No hace falta ningún preliminar.

# Arduino con mBlock

Arrancar el programa mBlock por la web https://ide.mblock.cc (opens new window), NO HACE FALTA EL PROGRAMA MLINK, pues no es un robot exclusivo de Makeblock, por lo tanto cambiamos a conexión directa, conectamos físicamente el Arduino por el usb, en la figura sale en inglés "Switch to direct connection" :

lsub

Al seleccionarlo, deja libre la opción del mlink que descartaremos, y seleccionamos conexión serie :

lsub

Y si ya teniamos conectado el Arduino, nos pide que lo seleccionemos :

lsub

puede ser también que lo ponga de esta forma

lsub

Se conecta y podemos usarlo tanto en modo vivo como en modo carga

# Arduino con ArduinoBlocks

Es una aplicación online que nos permite conectarnos con diferentes placas, especialmente Arduino y la familia de placas de la empresa que lo apoya Innovadidactic. Su url es http://www.arduinoblocks.com/ (opens new window).

Necesita la aplicación Arduinoblocks Connector. Podemos instalarlo desde Vitalinux Play o desde Synaptic (vx-dga-l-arduinoblocks). Sirve para comunicar la aplicación online con la placa arduino que conectemos en nuestro equipo.

lsub

ArduinoBlocks Play

Se nos abrirá automáticamente el navegador con la página abierta de la aplicación online .

ArduinoBlocks register

Una vez dentro de la aplicación, solo habremos de seleccionar el puerto USB en el que tengamos conectada nuestra placa y a funcionar, creamos el programa en bloques y Subir.

ArduinoBlocks demo

# Arduino Cloud e Internet de las Cosas (IoT)

Arduino además de hardware, y el software Arduino IDE para PC, también pone a disposición de las personas que quieran registrarse una Aplicación web con los siguientes servicios:

  • Arduino Cloud
  • IoT Cloud: para trabajar IoT con placas de arduino.
  • Web Editor: igual que el Arduino IDE pero en versión web
  • Manager for Linux

Arduino World

Desde vitalinux siempre recomendamos usar la versión de Escritorio del Arduino IDE para evitar problemas de conectividad y para evitar registrar al alumnado. No obstante, por si alguien quiere trabajar en Arduino Cloud (por ejemplo en los proyectos de IoT es necesario utilizar la aplicación IoT Cloud, que solo está disponible desde la aplicación web) es necesario previamente descargar un software en el equipo llamado Arduino Create Agent.

Hemos habilitado en Vitalinux Play una forma sencilla de instalarlo en un equipo individual. Se instala de igual forma que cualquier otro programa desde el Vitalinux Play, en la flecha de arriba a la derecha.

Arduino Agent Play

Una vez instalado, hay que lanzar la aplicación. Se instala en el menú Sonido y Video, si bien es mucho más fácil usar Albert y empezar a escribir el nombre. Arduino Agent Run

En ese momento nos aparecerá un icono abajo a la derecha, junto al reloj. Desde allí podremos activarlo y pausarlo para cuando lo necesitemos en los proyectos.

Arduino Agent app

Como siempre, si queréis una instalación masiva de forma remota en varios equipos de vuestro centro, podéis canalizarla a través de soporte.

# Arduino con Snap4Arduino

Snap4Arduino es un programa libre, heredero del anterior Scratch For Arduino (S4A) que sirve para programar placas con un lenguaje de bloques de forma sencilla. Posee versión online y offline. La versión offline se puede descargar desde Vitalinux Play. Para poder controlar la placa simplemente tendremos que cargar previamente en ella el StandardFirmata, un firmware disponible en los Ejemplos de la aplicación Arduino IDE. Por lo tanto será necesario en nuestro equipo también habernos descargado el Arduino IDE.

arduino IDE

Una vez cargado ese firmware en la placa, podremos usar Snap4Arduino para controlarla, y lo interesante es que dispone de la opción de ver el funcionamiento en vivo, sin necesidad de subir el programa a la placa.

arduino IDE

# ESP32 de Innovadidáctic

Esta placa, exteriormente parece un Arduino, sus pines son compatibles con los escudos de Arduino, pero tiene conexión Wifi y bluetooth integrada.

ESP32

Te recomendamos el tutorial del Curso de Aularagón https://libros.catedu.es/books/esp32-en-el-aula (opens new window)

Se conecta con Vitalinux con ArduinoBlocks, y el proceso es exáctamente el mismo que Arduino con Arduinoblocks: Se ejecuta antes ArduinoBlocks connector (antes instalarlo, está en Vitalinux Play), se deja miminimizado, se entra en Arduinoblocks http://www.arduinoblocks.com/ (opens new window), se programa en bloques, conectarlo al puerto serie, y subir.

# LEGO

# LEGO Spike

Se debe añadir una regla en udev para que chrome tenga permiso para acceder a dicha placa, ver Preliminar, pero eso ya te lo hemos hecho nosotros, no te preocupes 😃.

Para programar este LEGO SPIKE entramos en la web https://spike.legoeducation.com/ (opens new window) y nos pide elegir Basic o Prime, dependiendo del paquete a usar, los dos usan el mismo HUB

lsub

Y una vez dentro del reto en la ventana de programación pide conectarse al HUB.

lsub

Seguimos las instrucciones utilizando la conexión por cable:

lsub

Y al dar a open nos pide permiso para conectarse al puerto:

lsub

Y ya podemos jugar !!! https://youtu.be/1yJ2oHeeq28 (opens new window)

# LEGO WeDo

Lego WeDo 2.0 (bluetooth) no tiene el software desarrollado para funcionar en Linux, por lo que no podremos usar el software específico desarrollado por Lego para funcionar con sus actividades. Sin embargo puede funcionar con Scratch (web u offline) bajo Linux usando un conector desarrollado por la comunidad: Scratch Link. Se puede instalar en Vitalinux mediante Vitalinux Play o de forma centralizada.

Scratch Link permite conectar hardware para interactuar con los proyectos de Scratch. Web e instrucciones del proyecto para Linux (opens new window) para uso por ejemplo con bluetooth o la placa microbit.

Lego WeDo 1.0 ya no es funcional debido a que la solución que había se basaba en usar Scratch2Offline (no instalable en Vitalinux 3) y en una app para chrome/chromium(s2bot 4 scrat) que igualmente ha dejado de soportado para Chrome/Chromium y que solo funcionaría con Scratch 2.0.

# Equipos BQ

# BitBloq - Web2Board

No es necesario instalar nada en el equipo para trabajar con bitbloq, que es online. Tampoco hace falta para la placa Zum Junior. Se usará el programa web "BitBloq":http://bitbloq.bq.com (opens new window)

  • Lo que es importante es que se haga desde el navegador Chromium o Google Chrome, pudiendo usar la placa sin instalar ningún agente o aplicación.
  • La solución de qssweb2board solo funicona para 64 bits y para Vitalinux 2.0
  • ¿ Y para 32 BITS y Vitalinux 1.0 ?. pues habría que instalar la app de Chrome correspondiente (opens new window) y activar la compilación online en la cuenta de bitbloq.
  • También es posible instalar la versión Offline de Bitbloq, pero desde BQ nos recomiendan siempre usar la versión online (la offline ya está sin continuidad) más actualizada y con más funcionalidades

# Impresoras 3D Witbox Go! de BQ

BQ proporciona el software Zetup para trabajar con dichas impresoras.

Como dicho software se debe descargar e instalar a mano desde la web del fabricante, hemos paquetizado el mismo para poder instalarlo directamente desde Synaptic (o el gestor de paquetes que uses), pero sobre todo para poder instalarlo de forma desatendida en aquellos equipos que nos indiqueis. El paquete se llama: vx-dga-l-zetup-bq y lo puedes encontrar en Vitalinux Play.