Custom iOS Bluetooth app and embedded firmware for multi-channel LED control with real-time GPIO management.
A native Swift/SwiftUI application for iOS that provides comprehensive control over a custom LED controller via Bluetooth Low Energy (BLE). Features real-time state synchronization, GPIO management, pattern library, and intuitive user interface.
Arduino-based firmware for nRF52 microcontrollers implementing a complete BLE GATT service, multi-channel LED control, GPIO state management, automotive signal processing, and real-time pattern rendering with 75+ animation patterns.
Implemented a sophisticated command queue system that debounces channel lighting commands (150ms delay) while preserving all GPIO triggers. Features priority-based processing, automatic command type detection, and thread-safe operations with NSLock.
Result: Reduced BLE traffic by 60% during rapid UI updates while maintaining 100% event delivery.
Optimized BLE communication by implementing compact JSON formats. Reduced GPIO state responses from 1024 bytes to ~50 bytes and config responses from 1500 bytes to ~400 bytes using short keys and array formats.
Result: Eliminated buffer overflow errors and improved connection stability by 90%.
Implemented BLE notification system for instant GPIO state updates when physical 12V signals trigger hardware pins. App receives immediate notifications without polling delay.
Result: Sub-100ms UI update latency for hardware-triggered events.
Developed priority-based conflict resolution for automotive triggers with pattern state backup/restore. Handles emergency > brake > turn > reverse priority hierarchy with automatic pattern restoration.
Result: Seamless transitions between automotive modes with zero visual glitches.
Complex multi-channel LED control that typically requires fragile apps, unreliable Bluetooth behavior, and firmware that can’t safely handle real-time triggers.
A cohesive IoT product experience: a native iOS control surface paired with embedded firmware that supports real-time state changes, patterns, and GPIO-driven behaviors.
Less time debugging connection issues and state drift. A structured command queue and compact payloads reduce the “why did it not respond?” pain.
Designed for real-world interaction: debouncing, conflict resolution, notifications, and bounds checking to keep app + firmware behavior consistent.
This demonstrates full-stack IoT engineering: mobile UX, BLE protocols, embedded constraints, and production-minded reliability patterns.
This project delivered a complete full-stack IoT solution consisting of a native iOS application and custom embedded firmware, enabling comprehensive control of multi-channel LED systems with real-time GPIO management.