# Un fork de Python mejora las desconexiones de Sphero BOLT

Sphero BOLT puede controlarse con una biblioteca comunitaria de Python que detecta cortes Bluetooth. El código está disponible, pero la versión aún no se ha lanzado.

- URL canónica: https://robotica.es/hogar/sphero-bolt-python-desconexiones-bluetooth/
- Versión Markdown: https://robotica.es/hogar/sphero-bolt-python-desconexiones-bluetooth.md
- Publicado: 2026-10-06
- Última actualización editorial: 2026-10-06
- Autoría: Redacción Robotica.es
- Categoría: Hogar y Consumo
- Etiquetas: Sphero, BOLT, Python, Bluetooth, robótica educativa
- Idioma: es-ES

**Al programar un Sphero BOLT desde Python, ahora se puede detectar de forma explícita una conexión Bluetooth perdida**, gracias a una modificación comunitaria de la biblioteca `spherov2`. El fork, una variante del proyecto original mantenida por Siddharth Vaghela, permite detectar el corte y hacer fallar las órdenes pendientes, en lugar de dejar al programa esperando. Sirve para quienes experimentan con el robot desde un ordenador; no exige sustituir la esfera ni modifica su firmware.

El autor [presentó el trabajo el 5 de octubre en la comunidad de Sphero [en]](https://www.reddit.com/r/Sphero/comments/1wydjyk/spherov2_update/). Las modificaciones principales están en el repositorio desde el 22 de septiembre. Se trata de código disponible para instalar, aunque su [historial identifica **0.13.0 como «unreleased»**, todavía sin lanzamiento [en]](https://github.com/artineering/spherov2.py/blob/b39640306b0f379ba106c33d188ebf2f7b244ae2/CHANGELOG.md). No es una actualización oficial de Sphero.

Nuestra [guía del BOLT original](https://robotica.es/hogar/sphero-bolt-robot-educativo/) explica sus sensores y su matriz de luces. Este cambio afecta a otra parte de la actividad: qué puede hacer el código del ordenador cuando deja de recibir respuestas del robot.

## Dos fallos que ahora se pueden distinguir

Una orden puede quedarse sin respuesta aunque el enlace siga conectado. El fork utiliza `TimeoutError` para ese caso y añade al mensaje información sobre el robot y el paquete afectado. Si se corta el enlace, emplea otra excepción, `ToyDisconnectedError`. Separarlas ayuda a localizar el problema al depurar una práctica.

La [implementación de la conexión [en]](https://github.com/artineering/spherov2.py/blob/b39640306b0f379ba106c33d188ebf2f7b244ae2/spherov2/toy/__init__.py) permite además registrar una función mediante `add_disconnect_listener()`. Esa función se ejecuta al detectar la desconexión. Un proyecto podría utilizarla para mostrar un aviso o cancelar las siguientes instrucciones, sin esperar a que cada orden agote su tiempo de respuesta.

**Detectar el corte no equivale a reconectar automáticamente ni a garantizar la parada física del robot.** La notificación llega al programa del ordenador. Con el enlace caído, ese programa no puede dar por recibida una nueva orden de parada. Por eso, una primera actividad debería comenzar con luces y lectura de datos, antes de introducir desplazamientos.

El historial también recoge una recuperación del flujo de paquetes tras notificaciones corruptas o incompletas. Son cambios del transporte de datos: no añaden nuevos sensores a BOLT ni convierten su control remoto en navegación autónoma.

## El paquete de PyPI todavía es otro

La [ficha de `spherov2` en PyPI [en]](https://pypi.org/project/spherov2/) mantiene la versión **0.12.1** y enlaza el proyecto original. Ejecutar `pip install spherov2` no identifica por sí solo el fork de Vaghela. Para probar exactamente el código descrito, conviene usar un entorno virtual separado, tener Git instalado y fijar la revisión del repositorio:

```bash
python -m pip install "git+https://github.com/artineering/spherov2.py@b39640306b0f379ba106c33d188ebf2f7b244ae2"
```

El [proyecto [en]](https://github.com/artineering/spherov2.py) requiere Python 3.9 o posterior, declara la dependencia Bluetooth `bleak` y utiliza licencia MIT. El ordenador necesita Bluetooth de baja energía. La [documentación de Bleak [en]](https://bleak.readthedocs.io/en/latest/) concreta sistemas y requisitos propios: la compatibilidad depende también del sistema operativo y de su servicio Bluetooth, no solo de la versión de Python.

Antes de buscar el robot, hay que liberarlo de la conexión con otra aplicación y comprobar que está cargado y despierto. El escáner del fork permite seleccionar el modelo BOLT o su nombre concreto. Esto evita conectar con la primera esfera encontrada cuando hay varias en el aula. BOLT+ no aparece en la lista de modelos del proyecto; no debe darse por compatible por compartir marca.

El repositorio incluye pruebas con un adaptador simulado. Comprueban lógica del software sin hardware, pero no acreditan el comportamiento de cada ordenador con un BOLT físico. La mejora descrita procede del código y de su documentación, sin una prueba propia del robot.

## Para aprender Python también existe Sphero Edu

La ruta oficial sigue disponible: [Sphero Edu permite programar BOLT con bloques, JavaScript y Python [en]](https://help.sphero.com/sphero-support/bolt-features). Para una primera sesión con [robots educativos](https://robotica.es/robots-educativos/), evita tener que gestionar bibliotecas, entornos y errores Bluetooth por separado. El fork interesa cuando se quiere integrar la esfera en un programa propio del ordenador y controlar esa comunicación.

BOLT es un producto comercial ya montado. La [tienda europea de RobotShop ofrece la unidad K002ROWFFP por 217,80 €](https://eu.robotshop.com/es/products/robot-de-codificacion-sphero-bolt), con impuestos incluidos según la ficha, base de carga inductiva y cable USB. España aparece entre los destinos del calculador de envío; los portes se calculan al tramitar la compra. La página no concreta una entrega inmediata. Quien ya tiene un BOLT puede explorar el cambio de software con su equipo actual, conservando una copia del programa y la revisión utilizada para poder repetir la actividad.

## Fuentes

- [Siddharth Vaghela — presentación del fork el 5 de octubre [en]](https://www.reddit.com/r/Sphero/comments/1wydjyk/spherov2_update/)
- [Artineering — código, modelos y requisitos de spherov2.py [en]](https://github.com/artineering/spherov2.py)
- [Artineering — historial de cambios y estado de 0.13.0 [en]](https://github.com/artineering/spherov2.py/blob/b39640306b0f379ba106c33d188ebf2f7b244ae2/CHANGELOG.md)
- [Artineering — detección de desconexiones y órdenes pendientes [en]](https://github.com/artineering/spherov2.py/blob/b39640306b0f379ba106c33d188ebf2f7b244ae2/spherov2/toy/__init__.py)
- [PyPI — versión publicada de spherov2 y proyecto original [en]](https://pypi.org/project/spherov2/)
- [Bleak — requisitos del transporte Bluetooth por sistema operativo [en]](https://bleak.readthedocs.io/en/latest/)
- [Sphero — funciones de BOLT y programación oficial con Python [en]](https://help.sphero.com/sphero-support/bolt-features)
- [RobotShop Europa — BOLT K002ROWFFP, oferta y destinos de envío](https://eu.robotshop.com/es/products/robot-de-codificacion-sphero-bolt)
- [Imagen: Sphero — fotografía oficial de BOLT y su matriz LED [en]](https://cdn.shopify.com/s/files/1/0306/6419/6141/products/BOLT-Matrix_GALLERY.png?v=1678384678)
