iOS/iPadOS app for controlling synchronized wireless LED lighting systems via Bluetooth Low Energy (BLE).
This native iOS application provides wireless control for a mesh network of synchronized LED lights. It connects via BLE to an ESP32 hub which coordinates multiple ESP8266-based light nodes synchronized via ESP-NOW. The system achieves sub-millisecond synchronization across all connected lights.
- BLE Control - Wireless communication with ESP32 lighting hub
- Mode Selection - Switch between different lighting animations
- Power Management - Adjust brightness and power levels
- Real-time Control - Instant response with <1ms sync across mesh
- Multiple Animations - Various lighting effects and patterns
- User-friendly UI - Clean, intuitive interface for light control
The app is part of a three-component system:
[iOS App] ←BLE→ [ESP32 Hub] ←ESP-NOW→ [ESP8266 Lights]
(This repo) (Lights_ESP32) (Synchronized Mesh)
- iOS App (this repository) - User interface and BLE client
- ESP32 Hub - BLE server and ESP-NOW coordinator
- ESP8266 Lights - Synchronized light nodes
- iOS 14.0+ or iPadOS 14.0+
- Xcode 12.0+ for building from source
- ESP32 lighting hub with firmware from Lights_ESP32
- BLE capability on iOS device
-
Clone the repository: ```bash git clone https://github.com/kochcodes/Lights_ios.git cd Lights_ios ```
-
Open the project in Xcode: ```bash open Lights.xcodeproj ```
-
Select your development team in project settings
-
Build and run on your iOS device or simulator
- Ensure ESP32 hub is powered and running the Lights_ESP32 firmware
- Launch the app on your iOS device
- Enable Bluetooth if prompted
- Scan for devices - The ESP32 hub should appear
- Connect to the hub
- Mode Selection: Tap different animation modes to change lighting effects
- Power Control: Use sliders to adjust brightness
- Edge Control: Manage individual light segments
- Sync Status: View real-time connection and synchronization status
The app supports multiple lighting animations:
- Solid colors
- Fading effects
- Rainbow patterns
- Custom animations
- And more...
Control individual "edges" (light segments) independently while maintaining synchronization across the entire mesh network. The mesh handles synchronization automatically via ESP-NOW.
The app uses Core Bluetooth framework to:
- Discover ESP32 devices
- Establish BLE connections
- Send control commands
- Receive status updates
``` Lights_ios/ ├── Lights/ # Main app code │ ├── ViewControllers/ # UI controllers │ ├── Models/ # Data models │ ├── BLE/ # Bluetooth handling │ └── Assets.xcassets/ # Images and resources ├── Lights.xcodeproj/ # Xcode project └── docs/ # Screenshots and documentation ```
- Open `Lights.xcodeproj` in Xcode
- Select target device
- Build and run (Cmd+R)
The app uses:
- Core Bluetooth for BLE communication
- UIKit for user interface
- MVC pattern for code organization
- SwiftUI components (where applicable)
- Ensure Bluetooth is enabled on iOS device
- Verify ESP32 is powered and advertising
- Check that no other device is connected to the ESP32
- Confirm ESP8266 lights are on the same network
- Verify ESP-NOW mesh is properly configured
- Check ESP32 hub firmware is up to date
- Check Xcode console for error messages
- Verify iOS version compatibility
- Ensure proper permissions are granted
- Lights_ESP32 - ESP32 BLE hub firmware
- ESP8266MultiDeviceSyncLight - ESP8266 synchronized light nodes
Open source - check repository for license details.
`ios` `swift` `ble` `bluetooth` `home-automation` `led-control` `esp32` `lighting` `mesh-network` `core-bluetooth`