{"id":46269937,"url":"https://github.com/trbureiyan/project-bart","last_synced_at":"2026-03-04T03:02:14.912Z","repository":{"id":324976238,"uuid":"1099328466","full_name":"trbureiyan/Project-BART","owner":"trbureiyan","description":"Proyecto de Monitor Biométrico de Alcohol en Tiempo Real (BART) IoT para telemetría biométrica de niveles de alcohol. Implementación en (Arduino) con sensor electroquímico MQ-3 discreto, procesamiento digital de señales y transmisión Bluetooth a interfaz móvil.","archived":false,"fork":false,"pushed_at":"2025-12-01T19:10:25.000Z","size":117,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-04T09:22:11.798Z","etag":null,"topics":["2025","app-inventor","arduino","breathalyzer","college-project","colombia","iot"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trbureiyan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-18T21:25:39.000Z","updated_at":"2025-12-01T19:10:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/trbureiyan/Project-BART","commit_stats":null,"previous_names":["trbureiyan/arduino-project","trbureiyan/project-bart"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/trbureiyan/Project-BART","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trbureiyan%2FProject-BART","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trbureiyan%2FProject-BART/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trbureiyan%2FProject-BART/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trbureiyan%2FProject-BART/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trbureiyan","download_url":"https://codeload.github.com/trbureiyan/Project-BART/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trbureiyan%2FProject-BART/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30070479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T01:03:42.280Z","status":"online","status_checked_at":"2026-03-04T02:00:07.464Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2025","app-inventor","arduino","breathalyzer","college-project","colombia","iot"],"created_at":"2026-03-04T03:02:14.303Z","updated_at":"2026-03-04T03:02:14.897Z","avatar_url":"https://github.com/trbureiyan.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg width=\"64\" height=\"64\" alt=\"BART_Project_Icon\" src=\"https://github.com/user-attachments/assets/5673729d-81f5-48a7-8320-8e33f82a0819\" /\u003e B.A.R.T. (Biometric Alcohol Real-time Tracker)\n\n![Status](https://img.shields.io/badge/Status-Finalizado-success)\n![Platform](https://img.shields.io/badge/PLATFORM-ARDUINO%20UNO-blue)\n![App](https://img.shields.io/badge/APP-MIT%20APP%20INVENTOR-orange)\n![Version](https://img.shields.io/badge/Version-1.0.0-blue)\n\n\u003e **Sistema IoT de telemetría biométrica para la detección y monitoreo de alcohol en tiempo real.**\n\n![BART Device](https://github.com/user-attachments/assets/163b06b7-8476-43b3-b9e7-c2836004b163)\n\u003e Designed by @trbureiyan\n\n---\n\n## 📋 Tabla de Contenidos\n\n- [Descripción del Proyecto](#-descripción-del-proyecto)\n- [Características Principales](#-características-principales)\n- [Arquitectura del Sistema](#️-arquitectura-del-sistema)\n- [Documentación Técnica](#-documentación-técnica)\n- [Autores](#-autores)\n\n---\n\n## 🎯 Descripción del Proyecto\n\n**B.A.R.T.** es un dispositivo *wearable* prototipo diseñado para la prevención de accidentes y el monitoreo de salud en contextos laborales y educativos. A diferencia de los alcoholímetros analógicos tradicionales, BART opera como un **Sistema de Adquisición de Datos (DAQ)** conectado.\n\nEl sistema captura la concentración de alcohol en el aliento mediante un sensor electroquímico MQ-3, procesa la señal digitalmente eliminando ruido ambiental y transmite los datos vía Bluetooth a una aplicación móvil Android, ofreciendo una interfaz visual semántica (tipo semáforo) para la toma de decisiones informadas.\n\n### 🎓 Contexto Académico\n\nProyecto final desarrollado para la asignatura de **Computación Física** en la **Universidad Surcolombiana** (2025), demostrando la aplicación práctica de sistemas embebidos, sensórica química y desarrollo de aplicaciones IoT de bajo costo.\n\n### 🔬 Objetivos del Proyecto\n\n- **Portabilidad:** Funcionamiento autónomo con visualización local mediante barra de 8 LEDs\n- **Conectividad:** Telemetría en tiempo real hacia dispositivos móviles vía Bluetooth Classic\n- **Precisión:** Implementación de algoritmos de autocalibración ambiental y filtrado digital\n- **Accesibilidad:** Solución de bajo costo (\u003c$120,000 COP) para programas de SST en PyMEs\n- **Educación:** Herramienta de sensibilización sobre consumo responsable de alcohol\n\n---\n\n## ✨ Características Principales\n\n### Hardware (Dispositivo Físico)\n\n\u003cimg width=\"500\" height=\"428\" alt=\"BART Core\" src=\"https://github.com/user-attachments/assets/ce8be6cd-e959-49df-a084-712cd50311be\" /\u003e \u003cimg width=\"500\" height=\"428\" alt=\"technical art\" src=\"https://github.com/user-attachments/assets/639f2e0d-cc2e-4939-8d99-f932d614395b\" /\u003e\n\n\n* **🎯 Autocalibración de Punto Cero:** Al iniciar, el sistema muestrea el aire ambiente durante 5 segundos para establecer una línea base dinámica, compensando cambios de humedad, temperatura y altitud\n\n* **🔊 Procesamiento Digital de Señales (DSP):** Implementación de filtros de promedio móvil (oversampling de 10 muestras) para estabilizar la lectura analógica del sensor MQ-3 y reducir ruido\n\n* **🔌 Arquitectura de Puertos Separados:** Uso de `SoftwareSerial` en pines 2/4 para segregar el canal de telemetría (Bluetooth) del canal de depuración (USB), permitiendo debugging simultáneo durante desarrollo\n\n* **💡 Feedback Visual Dinámico:** Sistema de barra de 8 LEDs (3 verdes, 3 amarillos, 2 rojos) con animaciones de estado:\n  - **Knight Rider** durante encendido\n  - **Heartbeat** en primer LED verde para indicar sistema activo\n  - **Flash completo** de confirmación al guardar medición\n\n* **🔋 Alimentación Portátil:** Pack de 6 pilas AA (9V → 5V regulado) con autonomía de ~10 horas de operación continua o varias semanas en uso intermitente\n\n### Software (Aplicación Móvil)\n\n* **📱 Interfaz Semáforo Intuitiva:** Clasificación visual en 3 niveles con recomendaciones claras:\n  - 🟢 **VERDE (Sobrio):** Niveles 1-3 → \"Apto para trabajar\"\n  - 🟡 **AMARILLO (Precaución):** Niveles 4-6 → \"Evaluar con equipo certificado\"\n  - 🔴 **ROJO (Riesgo Alto):** Niveles 7-8 → \"No apto para actividades de riesgo\"\n\n* **📊 Registro Histórico con Timestamps:** Almacenamiento local (TinyDB) de todas las mediciones con fecha, hora y nivel detectado para análisis de tendencias\n\n* **👤 Sistema Multi-Usuario:** Gestión de perfiles mediante Firebase Authentication, permitiendo uso compartido del dispositivo con historial individual\n\n* **📈 Gráficas en Tiempo Real:** Visualización dinámica de la evolución del nivel de alcohol durante la medición\n\n* **🔐 Privacidad por Diseño:** Datos almacenados localmente en el dispositivo móvil sin transmisión a servidores externos (cumplimiento Ley 1581/2012)\n\n### Protocolo de Comunicación\n\n* **📡 Bluetooth SPP (Serial Port Profile):** Canal bidireccional a 9600 baudios\n  - **Arduino → App:** Transmisión de niveles (1, 2, 3) cada 1 segundo con delimitador `\\n`\n  - **App → Arduino:** Comandos de control (`I`: Iniciar, `X`: Detener, `S`: Guardar)\n\n* **🛡️ Tolerancia a Errores:** Validación de integridad de datos en App Inventor con manejo de paquetes corruptos\n\n---\n\n## 🏗️ Arquitectura del Sistema\n\nEl sistema B.A.R.T. implementa una **arquitectura de tres capas** que separa responsabilidades:\n\n```\n┌─────────────────────────────────────────────────────────┐\n│  CAPA 3: INTERFAZ DE USUARIO (Aplicación Móvil)       │\n│  - Visualización semántica (Semáforo)                  │\n│  - Almacenamiento local (TinyDB + Firebase)            │\n│  - Control remoto (Comandos Bluetooth)                 │\n└────────────────┬────────────────────────────────────────┘\n                 │ Bluetooth Classic (HC-05)\n                 │ 9600 bps, SPP Profile\n┌────────────────▼────────────────────────────────────────┐\n│  CAPA 2: PROCESAMIENTO Y CONTROL (Arduino UNO)         │\n│  - Autocalibración dinámica                            │\n│  - Filtrado digital (promedio móvil)                   │\n│  - Mapeo de niveles físicos (0-8) → lógicos (1-3)     │\n│  - Gestión de comandos y actuadores                    │\n└────────────────┬────────────────────────────────────────┘\n                 │ ADC 10-bit (Pin A0)\n                 │ Señal analógica 0-5V\n┌────────────────▼────────────────────────────────────────┐\n│  CAPA 1: SENSÓRICA (Sensor MQ-3)                       │\n│  - Detección de etanol en aire expirado                │\n│  - Elemento SnO₂ calentado a ~350°C                    │\n│  - Rango: 25-500 ppm                                   │\n│  - Salida: Resistencia variable → Voltaje analógico    │\n└─────────────────────────────────────────────────────────┘\n```\n\n\u003cimg width=\"640\" height=\"478\" alt=\"BART with phone\" src=\"https://github.com/user-attachments/assets/2f91883e-f948-4453-b33c-52d4bd75273c\" /\u003e\n\n### Flujo de Datos\n\n1. **Adquisición:** Sensor MQ-3 detecta alcohol → Cambio de resistencia → Divisor de voltaje\n2. **Digitalización:** ADC de Arduino convierte voltaje analógico (Pin A0) → Valor digital 0-1023\n3. **Procesamiento:** Autocalibración + Filtrado + Mapeo → Nivel 1-3\n4. **Transmisión:** Bluetooth HC-05 envía nivel a app cada 1 segundo\n5. **Visualización:** App actualiza semáforo y gráfica en tiempo real\n6. **Persistencia:** Usuario guarda medición → TinyDB local + Firebase (con timestamp)\n\n---\n\n## 🛠️ Componentes Requeridos\n\n\n\n### Software (Stack Tecnológico)\n\n| Componente | Tecnología | Versión | Licencia |\n|------------|------------|---------|----------|\n| **IDE de Desarrollo** | Arduino IDE | 2.3.2 | GPL |\n| **Desarrollo Móvil** | MIT App Inventor 2 | Cloud-based | Apache 2.0 |\n| **Backend (Auth/DB)** | Firebase (Auth + Realtime DB) | Latest | Freemium |\n| **Control de Versiones** | Git + GitHub | Latest | GPL |\n| **Documentación** | Markdown + Excalidraw | - | Open Source |\n\n### Herramientas de Desarrollo\n\n- **Hardware:** Multímetro digital, soldador (opcional), cortafrio de precisión\n- **Software:** \n  - Arduino IDE para firmware\n  - MIT App Inventor (navegador Chrome recomendado)\n  - App Companion para pruebas en dispositivo real\n  - Git para control de versiones\n\n---\n\n## 📥 Instalación y Configuración\n\n### Paso 1: Configuración del Hardware\n\n#### 1.1. Montaje del Circuito en Protoboard\n\nEl MQ-3 de 6 pines discreto tiene dos circuitos independientes:\n- **Heater (H-H):** Pines centrales → Conectar a 5V y GND directamente\n- **Sensor (A-B):** Pines externos → Configurar divisor de voltaje\n\n**Conexiones correctas:**\n```\nPin A (esquina izquierda superior) → 5V Arduino\nPin B (esquina izquierda inferior) → Resistencia 10kΩ → GND\n                                  └→ Pin A0 Arduino\nPines H (4 centrales) → 2 a 5V, 2 a GND (cualquier combinación)\n```\n\n#### 1.2. Conexión del Módulo Bluetooth HC-05\n\n```\nHC-05 VCC  → Arduino 5V\nHC-05 GND  → Arduino GND\nHC-05 TX   → Arduino Pin 2 (RX en software)\nHC-05 RX   → Arduino Pin 4 (TX en software)\n```\n\n#### 1.3. Conexión de Barra de LEDs\n\n```\nLED1 (Verde)    Pin 5  ──[220Ω]── GND\nLED2 (Verde)    Pin 6  ──[220Ω]── GND\nLED3 (Verde)    Pin 7  ──[220Ω]── GND\nLED4 (Amarillo) Pin 8  ──[220Ω]── GND\nLED5 (Amarillo) Pin 9  ──[220Ω]── GND\nLED6 (Amarillo) Pin 10 ──[220Ω]── GND\nLED7 (Rojo)     Pin 11 ──[220Ω]── GND\nLED8 (Rojo)     Pin 12 ──[220Ω]── GND\n```\n\n#### 1.4. Alimentación\n\n```\nPack 6xAA (+) → Arduino VIN\nPack 6xAA (-) → Arduino GND\n```\n\n#### 2. Cargar el Código\n\n1. Conectar Arduino UNO al PC vía USB\n2. **Desconectar el módulo Bluetooth HC-05** temporalmente (conflicto con puerto serial durante carga)\n3. Click en botón **\"Subir\"** (flecha derecha) en Arduino IDE\n4. Esperar mensaje: `\"Subida completada\"`\n5. Reconectar el módulo Bluetooth HC-05\n\n#### 2.1 Verificar Funcionamiento\n\nAl encender el Arduino, deberías ver:\n1. Animación tipo \"Knight Rider\" en los LEDs (barrido izquierda-derecha)\n2. Flash completo de todos los LEDs\n3. Primer LED verde queda encendido permanentemente (heartbeat)\n4. LED integrado Pin 13 parpadea brevemente\n\n### Paso 3: Instalación de la Aplicación Móvil\n\n#### Opción A: Instalar APK Pre-compilada (Recomendado)\n\n1. Descargar la última versión desde [Releases](https://github.com/trbureiyan/Project-BART/releases)\n2. En el smartphone Android, habilitar instalación de fuentes desconocidas:\n   ```\n   Configuración \u003e Seguridad \u003e Fuentes desconocidas \u003e Activar\n   ```\n3. Abrir el archivo `BART_v1.0.0.apk` descargado\n4. Seguir las instrucciones de instalación\n5. Aceptar permisos de Bluetooth cuando la app lo solicite\n\n#### Opción B: Compilar desde Código Fuente (Desarrolladores)\n\n1. Acceder a [MIT App Inventor](http://ai2.appinventor.mit.edu)\n2. Iniciar sesión con cuenta de Google\n3. Ir a `Proyectos \u003e Importar proyecto (.aia) desde mi computadora`\n4. Seleccionar el archivo `BART_App.aia` del repositorio\n5. Una vez importado, ir a `Generar \u003e Android App (.apk)`\n6. Descargar el APK generado e instalar en el dispositivo\n\n---\n\n## 🚀 Uso del Sistema\n\n\u003cimg width=\"640\" height=\"478\" alt=\"BART leds\" src=\"https://github.com/user-attachments/assets/990607a6-0136-4747-af4c-2764fd8c9bd4\" /\u003e\n\n### Encendido y Calibración Inicial\n\n1. **Conectar el pack de pilas AA** al Arduino (o conectar vía USB)\n2. Esperar **30 segundos** para precalentamiento del sensor MQ-3\n3. Durante este tiempo, el sistema ejecuta:\n   - Calentamiento del elemento SnO₂ a ~350°C\n   - Autocalibración con 20 muestras de aire limpio\n   - Cálculo de línea base promedio\n4. Confirmación visual: Flash completo de LEDs + LED verde permanente\n\n### Conexión Bluetooth\n\n1. **En el smartphone:**\n   - Ir a `Configuración \u003e Bluetooth \u003e Emparejar nuevo dispositivo`\n   - Buscar dispositivo **\"HC-05\"** o **\"BART-BT\"**\n   - Emparejar usando PIN: `1234` o `0000`\n\n2. **En la aplicación B.A.R.T.:**\n   - Abrir app → Iniciar sesión (o registrarse)\n   - En pantalla principal, presionar botón **\"Conectar Bluetooth\"**\n   - Seleccionar \"HC-05\" de la lista de dispositivos emparejados\n   - Verificar mensaje: \"Conectado exitosamente\"\n\n### Realizar una Medición\n\n1. **Iniciar medición:**\n   - Presionar botón **\"Iniciar\"** en la app\n   - El sistema ejecuta nueva calibración de 10 muestras (5 segundos)\n   - El primer LED verde comienza a parpadear (sistema activo)\n\n2. **Soplar en el sensor:**\n   - Acercar la boca a **5-10 cm** de la rejilla superior del dispositivo\n   - Exhalar aire de forma continua durante **3-5 segundos**\n   - Observar la barra de LEDs y el semáforo en la app\n\n3. **Interpretar resultados:**\n   - 🟢 **Verde (Niveles 1-3):** Sobrio - Apto para actividades normales\n   - 🟡 **Amarillo (Niveles 4-6):** Precaución - Evaluar con equipo certificado\n   - 🔴 **Rojo (Niveles 7-8):** Riesgo Alto - No apto para conducir ni operar maquinaria\n\n4. **Guardar medición (opcional):**\n   - Presionar botón **\"Guardar\"** en la app\n   - Confirmar el guardado con flash de LEDs en el dispositivo\n   - El registro queda almacenado con fecha y hora\n\n5. **Detener medición:**\n   - Presionar botón **\"Detener\"** en la app\n   - Los LEDs se apagarán excepto el primero (heartbeat)\n\n### Consultar Historial\n\n1. En la app, ir a la sección **\"Historial\"**\n2. Ver lista de mediciones previas con:\n   - Fecha y hora de la prueba\n   - Nivel detectado (1-3)\n   - Clasificación (Sobrio/Precaución/Riesgo)\n3. Calcular promedio de mediciones con botón **\"Calcular Promedio\"**\n4. Exportar datos (función futura)\n\n### Apagado del Sistema\n\n**Opción A: Apagado suave**\n- Desconectar Bluetooth desde la app\n- El Arduino continúa funcionando (medición local con LEDs)\n- Desconectar el pack de pilas cuando no se use\n\n**Opción B: Apagado completo**\n- Desconectar el pack de pilas del Arduino\n- Cerrar sesión en la app móvil\n\n---\n\n## 📚 Documentación Técnica\n\n### Especificaciones del Sensor MQ-3\n\n- **Principio de operación:** Semiconductor de óxido metálico (SnO₂)\n- **Rango de detección:** 25-500 ppm de etanol\n- **Consumo del heater:** 0.9W (~150 mA a 5V)\n- **Tiempo de respuesta:** \u003c10 segundos\n- **Tiempo de recuperación:** \u003c90 segundos\n- **Sensibilidad:** Rs(aire) / Rs(0.4 mg/L alcohol) ≥ 5\n\n### Algoritmo de Autocalibración\n\n```cpp\n// Pseudocódigo del algoritmo\nint baseAireLimpio = 0;\n\nvoid calibrar() {\n    int suma = 0;\n    for (int i = 0; i \u003c 20; i++) {\n        suma += leerPromedioSensor(10); // 10 submuestras por lectura\n        delay(200); // 200ms entre lecturas\n    }\n    baseAireLimpio = suma / 20; // Promedio de 20 lecturas\n}\n```\n\n### Mapeo de Niveles\n\n**Físico (LEDs) → Lógico (App):**\n```\nNiveles 0-1 (0-2 LEDs)   → App Nivel 1 (Verde)\nNiveles 2-3 (3-4 LEDs)   → App Nivel 1 (Verde)\nNiveles 4-5 (5-6 LEDs)   → App Nivel 2 (Amarillo)\nNiveles 6   (7 LEDs)     → App Nivel 3 (Rojo)\nNiveles 7-8 (8 LEDs)     → App Nivel 3 (Rojo)\n```\n\n### Protocolo Serial Bluetooth\n\n**Formato de mensaje Arduino → App:**\n```\n[NIVEL]\\n\n\nEjemplo: \"2\\n\" (Nivel 2, Amarillo)\n```\n\n**Formato de comando App → Arduino:**\n```\n[COMANDO]\n\nComandos soportados:\n- 'I' o '1': Iniciar medición\n- 'X' o '2': Detener medición\n- 'S': Guardar medición (feedback visual)\n```\n\n---\n\n\n## 👥 Autores\n\nDesarrollado como proyecto final para la asignatura de **Computación Física**.\n\n* **Brayan Toro Bustos** - *Ingeniería de Software*\n* **Pablo Trujillo Artunduaga** - *Ingeniería de Software*\n\n**Institución:** Universidad Surcolombiana\n\n⚠️ DESCARGO DE RESPONSABILIDAD LEGAL\n\nEste dispositivo es un PROTOTIPO EDUCATIVO y NO constituye un instrumento de medición legal según NTC-ISO/IEC 17025.\n\n- NO utilizar como evidencia para despidos laborales\n- NO reemplaza alcoholímetros homologados (ej: Dräger 7510)\n- Uso recomendado: PRE-SCREENING educativo o autocontrol preventivo\n- La decisión final debe basarse en equipos certificados\n\nCumplimiento Resolución 1843/2025: Este dispositivo puede usarse como herramienta COMPLEMENTARIA de sensibilización, pero los resultados positivos deben confirmarse con equipos certificados.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrbureiyan%2Fproject-bart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrbureiyan%2Fproject-bart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrbureiyan%2Fproject-bart/lists"}