Interfaz de PyBLE corriendo sobre una tablet
Interfaz de PyBLE corriendo sobre una tablet

PyBLE es un entorno de desarrollo de código abierto para MicroPython que se comunica por Bluetooth de baja energía. Corre sobre tablets y iPads, sin cables y sin nube. El usuario escribe el código, lo ejecuta y ve la consola directamente en la pantalla táctil. El proyecto está diseñado para placas de bajo costo como la ESP32-C3 y la ESP32-S3. La especificación del proyecto describe un protocolo llamado PBLE/1, pensado para ser liviano y confiable.

El entorno no es una simple aplicación. Incluye un servicio GATT con UUID base 7079626c, que en ASCII significa pybl. Las características son RX, TX e INFO. El cliente envía comandos y el dispositivo responde. La conexión usa un procedimiento estándar, así que funciona con cualquier tablet moderna.

¿Cómo funciona el protocolo PBLE/1?

La comunicación usa tramas estructuradas. Cada trama tiene una cabecera con versión, tipo, código de operación, identificador y largo. Después viene la carga útil y finalmente un CRC32 para verificar la integridad. La MTU es de 247 bytes. La carga útil máxima por paquete es la MTU menos 3 bytes de cabecera ATT, menos 1 byte de fragmentación. Eso deja 243 bytes utilizables por paquete.

Los mensajes más grandes que la MTU se fragmentan. Una cabecera de fragmentación le indica al receptor cómo rearmar el mensaje. Además, el protocolo permite reanudar transferencias interrumpidas. La transferencia de archivos usa códigos de operación dedicados como FILE_LIST, FILE_STAT, FILE_GET y FILE_PUT. Cada archivo se verifica con CRC32. Si algo falla, la transferencia se retoma desde donde se detuvo.

Tras la conexión, el cliente envía HELLO. El dispositivo responde con DEVICE_INFO. Ahí se negocian versión y capacidades. La versión del protocolo es 0x01. Los identificadores van de 1 a 255. El largo es un uint16 little-endian, de modo que admite hasta 65.535 bytes. El CRC32 es el estándar IEEE.

Ejecutar código y manejar la consola

La ejecución de código usa el código de operación RUN. Se puede enviar un archivo o código fuente en línea. Para detener todo existe STOP. Para reiniciar la máquina virtual de MicroPython está SOFT_REBOOT. La consola se maneja con CONSOLE_DATA y CONSOLE_INPUT. En la práctica, el entorno se convierte en una terminal completa.

La seguridad no queda al azar. El protocolo entrega emparejamiento y cifrado básicos. Solo un escritor está activo a la vez. Tampoco hay telemetría ni recolección de datos personales. El protocolo es limpio y mínimo, apropiado para dispositivos con recursos limitados.

  • MTU 247, carga útil de 243 bytes por paquete
  • UUID base 7079626c, que codifica pybl en ASCII
  • Identificadores de 1 a 255, campo de largo uint16 little-endian
  • CRC32 IEEE para cada trama
  • Etiqueta de máximo 24 bytes en UTF-8
  • Parpadeo IDENTIFY a 5 Hz, con duración de 2 segundos por defecto

¿Por qué le importa esto a un maker?

PyBLE está diseñado para blancos restringidos como la ESP32-C3. El protocolo es lo bastante pequeño como para correr sin problemas. Además está versionado y tiene negociación de capacidades, lo que significa que puede evolucionar sin romper la compatibilidad. Para quien construye, es una forma nueva de trabajar, sin cables USB y sin computador.

Para probar PyBLE hacen falta placas adecuadas. El kit de desarrollo ESP32-C6-Zero es una opción compacta y moderna. Otra alternativa es la Arduino NANO ESP32, con Wi-Fi y Bluetooth en el formato clásico. La placa de desarrollo ESP32 con Wi-Fi, Bluetooth y conector USB tipo C también sirve. Todas soportan MicroPython y traen el Bluetooth de baja energía necesario.

¿Qué cambia frente al flujo con cable USB?

AspectoFlujo tradicionalCon PyBLE
Equipo necesarioComputador con controlador serieTablet o iPad
ConexiónCable USB al puerto de la placaBluetooth LE, sin contacto físico
Acceso a la placaHay que poder enchufarlaPuede quedar montada dentro del chasis
Dependencia de nubeNinguna en local, alta en editores webNinguna, sin telemetría

Esa diferencia pesa en el aula. Una ESP32-C3 se consigue en el mercado chileno por montos del orden de 5.000 a 9.000 pesos, mientras que un computador por alumno es un costo de otra magnitud. Reemplazar el computador por una tablet compartida cambia la ecuación de un taller escolar de robótica, sobre todo cuando el laboratorio no tiene puestos suficientes.

El proyecto todavía es joven, pero la dirección está clara. Un entorno de MicroPython sobre Bluetooth abre escenarios interesantes. Se puede programar una placa montada en un robot sin desarmar nada. Se puede actualizar el firmware desde un iPad en el laboratorio. Y se puede enseñar MicroPython en la sala de clases, con tablets baratas en vez de computadores.

Fuente de la especificación: documentación del protocolo PBLE/1 en GitHub