Felipe Flores Descargar CV
  • ESP32-C3
  • BNO08x
  • BLE
  • Android

Gemelo Digital

Un ESP32-C3 y un sensor BNO08x transmiten la orientación por Bluetooth Low Energy a una app Android que la reproduce en un modelo 3D de Cubone.

Ver en YouTube
Demostración original de Cubone: figura física junto a su representación 3D en una pantalla

Objetivo del proyecto

Sincronizar la inclinación y el giro de un dispositivo físico con la orientación de un modelo 3D, utilizando un sensor inercial y una conexión Bluetooth Low Energy.

Arquitectura o funcionamiento

El BNO08x entrega la orientación al ESP32-C3 por I²C. El microcontrolador la transmite por BLE a la app Android, que adapta los ejes al montaje físico y actualiza el modelo de Cubone mediante un visor nativo con SceneView y Filament. La OLED muestra el estado del sensor y de la conexión.

Flujo de funcionamiento

Al conectar por Bluetooth, la app recibe la orientación como cuaterniones y mueve el modelo, incluso sin calibración previa. El asistente opcional registra tres posturas —neutra, inclinada hacia adelante e inclinada hacia la derecha— para adaptar los ejes al montaje real. La calibración se guarda y el control Cero permite establecer una referencia de orientación. El firmware solicita reportes del sensor cada 20 ms y limita las notificaciones BLE a una cada 40 ms; estos intervalos son valores configurados en el código.

Desarrollo e implementación

El proyecto evolucionó desde una visualización web hacia una app Android con escena 3D nativa. El firmware gestiona el sensor, la pantalla y la transmisión BLE; la app integra recepción, calibración, interpolación de orientación y controles del visor. El modelo GLB se genera a partir de una malla OBJ y su textura. La imagen y el video de esta ficha corresponden a la demostración original del proyecto.

Desafíos técnicos

La implementación contempla cambios de orientación del montaje físico, recuperación de reportes del sensor y reintentos de conexión BLE. La app conserva la escena y la conexión al girar la pantalla. Como el Game Rotation Vector utilizado no aporta un rumbo absoluto, cada conexión establece una referencia inicial para el giro.

Resultados

El repositorio publica el firmware BLE y una app Android instalable con visor 3D, calibración opcional, retorno a cero, zoom y vista ampliada. Incluye pruebas automatizadas de orientación y de interfaz con datos de sensor simulados, entre ellas la conservación de la referencia y los controles al girar la pantalla.

Hardware utilizado

  • ESP32-C3
  • Sensor de orientación BNO08x conectado por I²C
  • Pantalla OLED SSD1306 integrada de 72 × 40 píxeles
  • Tablet o dispositivo compatible con Android 7.0 o superior y Bluetooth Low Energy

Software y tecnologías

  • Firmware Arduino en C++
  • Bibliotecas SparkFun BNO08x y U8g2
  • App Android desarrollada en Java y Kotlin
  • SceneView y Filament para el visor 3D nativo
  • Modelo de Cubone en formato GLB
  • Android Studio y Gradle

Contacto

¿Tienes una idea o desafío tecnológico?

Estoy disponible para colaborar en proyectos, docencia, investigación y desarrollo tecnológico.

ffelipev2@gmail.com

Santiago, Chile