ApexPyro is an ESP32-based fireworks controller with firmware, a browser-based control interface, continuity monitoring, and support for up to 128 firing zones (expandable). The project is intended for builders, operators, and contributors who need a documented starting point for assembling, flashing, validating, and extending the controller.
This project controls pyrotechnic hardware and must be treated as safety-critical.
- Fireworks, igniters, and firing circuits can cause severe injury, death, fire, and property damage.
- ApexPyro is provided as-is, without warranty of any kind.
- You assume all responsibility and liability for compiling, flashing, wiring, testing, and operating this system.
- Use only in legal, controlled environments and follow the regulations that apply in your jurisdiction.
- This repository does not provide pre-compiled binaries; anyone deploying the system is responsible for validating the exact build they run on physical hardware.
- ESP32 firmware built with PlatformIO and the Arduino framework.
- A web UI served from LittleFS for controller setup, show building, and live operation.
- A separated dual-I2C design: one bus for firing relay boards and one bus for continuity and auxiliary control hardware.
- Continuity monitoring for up to 128 zones.
- Safety-oriented controls including master arm, E-Stop handling, role-based control, and configurable operational safeguards.
The current firmware and docs assume an ESP32 DevKitC V4-compatible controller with these major subsystems:
- 1 ESP32 DevKitC V4-compatible board
- Up to 8 PW535 relay boards on the primary firing bus
- 1 auxiliary PW535 relay board for non-firing control outputs
- 3 ADS1115 devices on the auxiliary bus for continuity and battery measurement
- CD74HC4067 multiplexers for zone continuity scanning
- Master arm relay, physical kill switch, and WiFi reset button
For exact GPIO assignments and bus layout, use the wiring guide: ESP32 DevKitC V4 Wiring.
src/: firmware modules such as WiFi, relay management, continuity, storage, WebSocket handling, and show executioninclude/: shared firmware headers and hardware configuration constantsdata/: web UI assets served from LittleFSdocs/: user and hardware reference documentationhardware/: reserved for hardware-specific documentation and future design files
- PlatformIO CLI or PlatformIO in VS Code
- An ESP32 DevKitC V4-compatible target connected over USB
- A validated wiring setup before any live hardware test
pio runpio run --target upload --environment az-delivery-devkit-v4pio run --target uploadfs --environment az-delivery-devkit-v4pio device monitor- ApexPyro Web User Manual
- ESP32 DevKitC V4 Wiring
- 128-Zone Continuity Roadmap
- Security Policy
- Security Architecture
- Hardware Notes
The project roadmap tracks planned product and UX improvements for upcoming iterations. See ROADMAP for the current list.
The project is organized around a few major runtime components:
src/main.cpp: boot sequence, safe initialization order, subsystem wiringsrc/wifi_manager.cpp: AP/STA networking and credential managementsrc/websocket_handler.cpp: browser-to-firmware command and state syncsrc/relay_manager.cpp: master arm state, relay updates, firing controlsrc/continuity.cpp: continuity scanning and ADC samplingsrc/show_runner.cpp: manual and automatic show sequencingsrc/storage.cpp: persisted settings and saved statedata/index.htmlanddata/style.css: operator-facing web UI
See the dedicated contributor guide: CONTRIBUTING.
This project is dual-licensed to separate software and hardware artifacts.
- Software in this repository is licensed under the Apache License 2.0.
- Hardware design files in
hardware/are intended to use the CERN Open Hardware License Version 2 - Weakly Reciprocal.
Because this project controls pyrotechnic hardware, the authors and contributors disclaim liability for injury, death, fire, property damage, or regulatory violations arising from the use, modification, compilation, flashing, wiring, or operation of this project.
