Capa Hardware Rust para Gateway

via Freelancer ·

Budget / Salary€5,000–10,000
TypeFreelance project
LocationRemote
Posted2 hours ago
Un workspace de crates Rust sin lógica de negocio — entrega eventos ("tecla pulsada en el puerto 2", "tarjeta leída", "orden BLE recibida") y operaciones ("abre el relé 1", "responde por BLE") — que un binario de aplicación enlazará después:

Esqueleto de ejecución: binario estático, tokio, fichero de configuración único, logs a journald, integración con systemd (sd_notify, watchdog), usuario sin privilegios.
Capa de abstracción de placa con perfiles declarativos para Radxa ROCK Pi S0 (Rockchip RK3308, Armbian) y Raspberry Pi Zero 2 W (Raspbian), y guía para incorporar placas futuras. Identidad estable del equipo.
Driver UART de nuestra placa STM32+ESP32 (protocolo de tramas propio, que especificarás con nuestra ayuda a partir del código actual): eventos de teclado Wiegand y RS-485, lecturas de tarjeta, relés, sensores de puerta, pulsador, paso de comandos al ESP32, aprovisionamiento WiFi en la placa, detección y recuperación de la pérdida del puerto.
Transporte BLE periférico sobre BlueZ (BlueR): servicio GATT compatible bit a bit con nuestra app móvil actual, envoltura JSON, notificaciones, anuncio, ciclo de vida de conexiones. Las órdenes se despachan por un trait que implementa el Lote 2.
Red con NetworkManager por D-Bus: escaneo y aprovisionamiento WiFi (en la placa Linux y en la placa STM), Ethernet, MAC estable, conmutación, detección de conectividad.
Gestión de un túnel SSH inverso (frpc) con supervisión real del proceso hijo.
Mecanismo de actualización de binario con verificación de firma y reversión automática ante fallo de arranque.
Persistencia base SQLite (sqlx, WAL, resistencia a cortes de alimentación). El esquema de datos es del Lote 2.
Herramienta de diagnóstico (CLI) que ejercita todo lo anterior sobre hardware real: es tu vehículo de aceptación y nuestra herramienta de soporte en campo.
Simuladores (placa STM sobre pseudoterminal y transporte BLE simulado) para que el Lote 2 desarrolle sin hardware.
CI con compilación cruzada armhf/arm64, clippy, tests, cargo-deny.
Hitos y pagos (precio cerrado por hito)

Análisis, especificación del protocolo STM, prueba de concepto BLE con nuestra app real y diseño de la API pública — 2–3 semanas. Se contrata primero y por separado. Si la prueba de concepto BLE no es viable, el proyecto se detiene y se paga solo este hito.
Esqueleto de ejecución y plataforma — 3–4 semanas.
Driver de la placa STM32/ESP32 y simulador — 3–4 semanas.
Transporte BLE y API definitiva — 3–5 semanas.
Red, túnel, actualización, aprovisionamiento y herramienta de diagnóstico — 4–5 semanas.
Validación en ambas placas, documentación de la API y traspaso — 3–4 semanas.
Total orientativo: 18–25 semanas a dedicación completa. Cada hito se acepta con una demostración sobre hardware real y una checklist de pruebas acordada de antemano. Tras la entrega, bolsa de horas de soporte al Lote 2 durante su integración.

Stack (cerrado, no negociable)

Rust estable, tokio, BlueR, zbus, serialport, sqlx/SQLite, rustls, tracing, cross o cargo-zigbuild. unsafe prohibido salvo justificación revisada. Solo dependencias con licencia permisiva. Código e identificadores en inglés; documentación en español.

Qué te damos

Kit de hardware enviado a tu domicilio, a devolver al finalizar: 2× ROCK Pi S0, 1× Raspberry Pi Zero 2 W, placa STM32/ESP32, teclado, lector de tarjetas, tarjetas, cerradura y fuente de alimentación.
Bajo NDA: pliego técnico completo, arquitectura objetivo, checklist de aceptación y acceso al código actual (Node.js), que es la referencia normativa del protocolo.
App móvil de producción apuntando a un entorno de pruebas, para validar el BLE.
Conclusiones de un proyecto previo de puesta en marcha de la placa (identidad, Bluetooth, UART), si están disponibles al empezar.
Interlocutor técnico con respuesta en 3 días hábiles.
Imprescindible

Rust en producción con tokio (nos enseñarás código).
Linux embebido en ARM: systemd, D-Bus, compilación cruzada, Debian/Armbian.
Haber implementado un periférico BLE (servidor GATT) sobre BlueZ. Es lo que más nos importa y pediremos evidencia concreta.
Protocolos serie con microcontroladores.
Español fluido escrito y hablado: el pliego, el código actual y toda la comunicación son en español.
Valorado

Rockchip RK3308 o Armbian; NetworkManager por D-Bus; sqlx; firmware STM32/ESP32; experiencia en dispositivos desatendidos en campo.

Cómo aplicar (filtramos por esto)

Empieza tu propuesta con la palabra RELÉ. Después, en menos de 300 palabras:

Un periférico BLE que hayas implementado sobre BlueZ: qué era, con qué librería, qué problemas tuviste.
Un proyecto Rust + tokio en producción en el que hayas trabajado.
Cómo has cross-compilado Rust para ARM con dependencias nativas.
Disponibilidad (horas/semana) y fecha de inicio.
Las propuestas genéricas o que no contesten los cuatro puntos se descartan sin leer el resto.

Proceso

Preselección → firma de NDA → envío del pliego completo → entrevista técnica de una hora → contratación del hito 0. Si el hito 0 sale bien, contratamos el resto a precio cerrado por hito.
c programming linux electronics microcontroller software development sqlite firmware rust embedded systems stm32
Apply on Freelancer →

Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.