Volver al PortafolioHardware & Reverse Engineering
Cliente: Milodón ProduccionesProyecto Activo

Modernización del Sistema de Pago en Máquina Expendedora Obsoleta

Actualización integral del sistema de control y procesamiento de pagos en una máquina expendedora industrial legada, equipada con una pantalla integrada alimentada por un SoC Rockchip RK3288 (Android) y una placa madre controladora electromecánica Wuyi V1.4.

Target SoCRockchip RK3288
MainboardWuyi V1.4 MCU
POS GatewayTransbank PAX IM30
InterfaceUSB Host + UART JNI
Fase 01 / Reverse Engineering

Ingeniería Inversa y Reconstrucción de Protocolo

La máquina operaba originalmente mediante una aplicación propietaria china de protocolo cerrado (Ventor) sin documentación técnica disponible.

  • Extracción y DecompilaciónExtracción del paquete APK del sistema operativo y decompilación del código fuente (Smali/Java), identificando las llamadas JNI a la librería android_serialport_api.SerialPort.
  • Análisis de Logs Históricos (Bujan, China)Descubrimiento del formato de comandos tras analizar un servidor de registros (logserver) del año 2013 de una unidad en operación en Bujan. Un evento de falla por motor trabado expuso la estructura explícita de tramas requerida por la placa base.
uart_inspector.vt100 — /dev/ttyS3 @ 19200 bps
Wuyi V1.4 State Machine
// Secuencia de Control Reconstruida para evitar bloqueos por NACK
01:SEND[ONLINE]→ Sincronización inicial de canal UART
02:SEND(CLEAR)→ Limpieza de memoria intermedia previa a transmisión
03:EXEC(ADDR:0T[MOTOR_ID]...)→ Comando explícito de giro de espiral electromecánica
04:SEND(CLEAR)→ Reinicio de búfer de recepción en microcontrolador Wuyi
STATUS: DISPATCH_SUCCESS [MOTOR_ROTATION_COMPLETE]
Prueba de Campo / Accionamiento de Motor
Rediseño del Subsitio de Cobro

Fallo MDB vs Solución USB POS

Descartado

Incompatibilidad Bus MDB Legado

Se intentó implementar un canal Cashless mediante el bus MDB (PayScan + Nayax AMIT 3.0). La interfaz Wuyi V1.4 presentó incompatibilidades de señalización e identificación bajo MDB NAMA Level 3.

  • • Timeouts en ciclo de polling
  • • Handshake inestable en microcontrolador
  • • Inviabilidad transaccional directa
Implementación Final

Transbank PAX IM30 via USB Directo

Eliminación de la dependencia MDB. Se integró un terminal POS PAX IM30 por cable USB Host directamente a la pantalla Android (Rockchip RK3288) consumiendo la API nativa de Transbank POS Integrado.

  • Débito, Crédito y Contactless autónomo
  • Flujo async: TOUCH → POS USB → APPROVED → UART DISPATCH
  • Alta estabilidad sin timeouts de bus
Orquestación de Software

Milodón VMC & Cloud Stack

Android Native App + Web Dashboard

Control Local (Milodón VMC)

Aplicación nativa Android desarrollada en Kotlin a medida. Gestiona la interfaz táctil, procesa los eventos del POS IM30 por USB Host y gatilla la transmisión en serie UART hacia la placa Wuyi a 19200 bps.

Sincronización Cloud / Panel Web

Transmisión en tiempo real a Firebase Firestore. Conectado a un panel de administración web remoto desarrollado en Astro, React y Tailwind CSS para cambio de precios, monitoreo de stock y comandos de diagnóstico.

Estado de Registro Visual: En espera de la aplicación del ploteado corporativo del cliente sobre la estructura física de la máquina para la publicación de la galería de fotos y video final.

// Ficha_Técnica_y_Stack.json

// Hardware Target
  • • SoC Rockchip RK3288 (Android OS)
  • • Placa Controladora Electromecánica Wuyi V1.4
  • • Terminal POS Transbank PAX IM30
// Lenguaje & Frameworks
  • • Kotlin / Android SDK
  • • ViewBinding Architecture
  • • Native SerialPort JNI
// Protocolos e Interfaces
  • • USB Host API (CDC-ACM / OTG)
  • • Transbank POS Integrado API
  • • Native UART (/dev/ttyS3 @ 19200 bps)
// Infraestructura Cloud / Web
  • • Firebase Firestore Realtime DB
  • • Astro Framework + React
  • • Tailwind CSS Engine