A sophisticated rocket launch control system featuring WiFi-based remote control, real-time monitoring, and automated countdown sequences. Built with ESP32 and Arduino UNO for reliable and safe rocket/firework ignition control.
The Stellar Ignition System is a dual-microcontroller rocket launch control system designed for safe and reliable remote ignition of model rockets or fireworks. The system combines an ESP32 for WiFi connectivity and web interface with an Arduino UNO for precise countdown timing and ignition control.
- ESP32: WiFi Access Point, Web Server, Remote Control Interface
- Arduino UNO: Countdown Logic, Buzzer Control, Fuse Ignition
- Web Dashboard: Real-time monitoring and launch control
- Dedicated Access Point: Creates "Launch-Control-AP" network
- Responsive Web Interface: Modern, mobile-friendly dashboard
- Real-time Status Monitoring: Live system updates and telemetry
- Secure Access Control: Password-protected network access
- Multi-device Support: Monitor connected clients
- 3-Phase Countdown: Sophisticated timing sequence
- Audio Feedback: Multi-tone buzzer system
- Fuse Control: PWM-based ignition trigger
- Serial Monitoring: Detailed launch sequence logging
- Arm/Disarm System: Prevents accidental launches
- Confirmation Dialogs: Double-confirmation for launch commands
- Status LEDs: Visual system state indicators
- Timeout Protection: Automatic safety timeouts
- Signal Debouncing: Hardware noise filtering
graph TB
subgraph "Control Station"
A[Mobile Device/Computer] --> B[WiFi Connection]
end
subgraph "ESP32 Module"
B --> C[Access Point]
C --> D[Web Server]
D --> E[Launch Control API]
E --> F[Digital Pin 4]
end
subgraph "Arduino UNO"
F --> G[Pin 7 - Trigger Input]
G --> H[Countdown Logic]
H --> I[Pin 13 - Buzzer]
H --> J[Pin 9 - Fuse Trigger]
end
subgraph "External Hardware"
I --> K[Buzzer/Speaker]
J --> L[Ignition System]
end
style A fill:#4CAF50,stroke:#2E7D32,stroke-width:2px,color:#fff
style B fill:#2196F3,stroke:#1565C0,stroke-width:2px,color:#fff
style C fill:#9C27B0,stroke:#6A1B9A,stroke-width:2px,color:#fff
style D fill:#673AB7,stroke:#4527A0,stroke-width:2px,color:#fff
style E fill:#3F51B5,stroke:#283593,stroke-width:2px,color:#fff
style F fill:#FF9800,stroke:#F57C00,stroke-width:2px,color:#fff
style G fill:#FF5722,stroke:#D84315,stroke-width:2px,color:#fff
style H fill:#FFC107,stroke:#F57F17,stroke-width:2px,color:#000
style I fill:#8BC34A,stroke:#558B2F,stroke-width:2px,color:#fff
style J fill:#CDDC39,stroke:#827717,stroke-width:2px,color:#000
style K fill:#009688,stroke:#00695C,stroke-width:2px,color:#fff
style L fill:#F44336,stroke:#C62828,stroke-width:2px,color:#fff
sequenceDiagram
participant U as User Interface
participant E as ESP32
participant A as Arduino UNO
participant H as Hardware
U->>E: Launch Request
E->>E: Validate System Armed
E->>A: Send Trigger Signal (Pin 4β7)
A->>A: Begin Countdown Sequence
loop Phase 1: Normal Countdown (10-6)
A->>H: Buzzer Tone (800Hz, 500ms)
A->>A: Wait 1 second
end
loop Phase 2: Accelerated (5-1)
A->>H: Buzzer Tone (1200Hz, 300ms)
A->>A: Wait 600ms
end
loop Phase 3: Final Sequence
A->>H: Rapid Beeps (1500Hz, 150ms)
A->>A: Wait 200ms
end
A->>H: LAUNCH! Activate Fuse (3 seconds)
A->>H: Buzzer (2000Hz continuous)
A->>H: PWM Signal (255/255 duty cycle)
A->>A: Sequence Complete
- Model: ESP32 DevKit v1 or similar
- Features: WiFi, 2.4GHz, 240MHz dual-core
- Pins Used:
- Pin 4: Output to Arduino (Trigger)
- Pin 16: Status LED
- Pin 17: System LED
- Model: Arduino UNO R3 or compatible
- Pins Used:
- Pin 7: Input from ESP32 (with internal pull-up)
- Pin 9: PWM output for fuse trigger
- Pin 13: Buzzer output
| Component | Quantity | Purpose |
|---|---|---|
| Buzzer/Speaker | 1 | Audio countdown feedback |
| LEDs | 2 | Status indicators |
| Resistors (220Ξ©) | 2 | LED current limiting |
| Breadboard/PCB | 1 | Circuit assembly |
| Jumper Wires | 10+ | Connections |
| Power Supply | 2 | ESP32 (5V) & Arduino (9V) |
ESP32 DevKit Arduino UNO
βββββββββββββββ βββββββββββββββ
β Pin 4 ββββββββββββββββββ€ Pin 7 β (Trigger Signal)
β Pin 16 βββββ[220Ξ©]ββLED β β (Status LED)
β Pin 17 βββββ[220Ξ©]ββLED β Pin 13 βββββ Buzzer
β GND ββββββββββββββββββ€ GND β
β VCC β β Pin 9 βββββ Fuse Trigger
βββββββββββββββ βββββββββββββββ
const int triggerPin = 4; // Output to Arduino Pin 7
const int statusLED = 16; // System heartbeat LED
const int systemLED = 17; // Armed/Disarmed indicatorconst int buzzerPin = 13; // Buzzer/Speaker output
const int triggerPin = 7; // Input from ESP32 (INPUT_PULLUP)
const int fusePin = 9; // PWM output for fuse ignition- Arduino IDE 1.8+ or Arduino IDE 2.0+
- ESP32 Board Package
- Required Libraries
#include <WiFi.h> // Built-in ESP32 WiFi
#include <WebServer.h> // Built-in ESP32 Web Server
#include <ArduinoJson.h> // JSON handling for API
#include <SPIFFS.h> // File system (optional)// Uses only built-in Arduino libraries
// No external dependencies required-
Install ESP32 Board Package
File β Preferences β Additional Board Manager URLs Add: https://dl.espressif.com/dl/package_esp32_index.json Tools β Board Manager β Search "ESP32" β Install -
Install ArduinoJson Library
Tools β Manage Libraries β Search "ArduinoJson" β Install -
Upload Code
- Flash
SIS-ESP32.inoto ESP32 - Flash
SIS-UNO.inoto Arduino UNO
- Flash
-
Network Configuration
const char* ssid = "Launch-Control-AP"; const char* password = "sis@2025";
SIS-ESP32.ino
βββ Setup & Configuration
β βββ WiFi Access Point Setup
β βββ Web Server Initialization
β βββ Pin Configuration
β βββ System Status Setup
β
βββ Main Loop
β βββ HTTP Request Handling
β βββ Status Updates
β βββ Heartbeat LED Management
β
βββ Web Server Handlers
β βββ handleRoot() - Dashboard HTML
β βββ handleGetStatus() - System Status API
β βββ handleLaunch() - Launch Command API
β βββ handleArmSystem() - Arm System API
β βββ handleDisarmSystem() - Disarm System API
β
βββ Utility Functions
βββ triggerLaunch() - Arduino Communication
βββ updateSystemStatus() - Status Management
βββ formatUptime() - Time Formatting
βββ formatTime() - Timestamp Formatting
SIS-UNO.ino
βββ Setup & Configuration
β βββ Serial Communication (9600 baud)
β βββ Pin Mode Configuration
β βββ Initial Status Display
β
βββ Main Loop
β βββ Trigger Signal Monitoring
β βββ Launch Sequence Activation
β βββ System Standby Mode
β
βββ Launch Sequence Function
βββ Phase 1: Normal Countdown (10-6 seconds)
βββ Phase 2: Accelerated Countdown (5-1 seconds)
βββ Phase 3: Final Rapid Sequence
βββ Ignition Activation (3-second fuse trigger)
- System Status: Armed/Disarmed state with color coding
- Connected Clients: Number of devices connected to AP
- Total Launches: Cumulative launch counter
- System Uptime: Hours:Minutes:Seconds format
- Last Launch: Time since last launch attempt
- Signal Strength: Network quality indicator
- Arm/Disarm Buttons: System safety controls
- Launch Button: Primary ignition trigger
- Confirmation Dialog: Safety confirmation for launches
- Status Indicators: Visual feedback for all operations
- Real-time Logging: Timestamped event tracking
- Color-coded Messages: Info, Warning, Error, Success
- Scrollable History: Last 50 system events
- Automatic Updates: 1-second refresh interval
- Cyberpunk Theme: Dark background with neon accents
- Responsive Design: Mobile and desktop compatible
- Animations: Glowing effects and smooth transitions
- Status Colors: Green (armed), Red (disarmed), Orange (launching)
http://192.168.4.1
Returns current system status
{
"armed": true,
"launching": false,
"clients": 2,
"totalLaunches": 5,
"uptime": "01:23:45",
"lastLaunch": "2m ago",
"signalStrength": "Excellent"
}Initiates launch sequence
// Request: Empty body
// Response:
{
"success": true,
"message": "Launch sequence initiated"
}Arms the launch system
{
"success": true,
"message": "System armed"
}Disarms the launch system
{
"success": true,
"message": "System disarmed"
}{
"success": false,
"message": "System not armed"
}-
Software Safeguards
- Arm/Disarm state validation
- Confirmation dialogs for critical actions
- Launch-in-progress prevention
- Timeout-based automatic resets
-
Hardware Safeguards
- Pull-up resistor configuration for noise immunity
- Signal debouncing in trigger detection
- Separate power supplies for isolation
- Visual status indicators
-
Network Security
- WPA2 password protection
- Local network isolation
- No internet connectivity requirement
- β Verify all connections are secure
- β Confirm safe launch environment
- β Arm system via web interface
- β Double-confirm launch command
- β Monitor countdown sequence
- Power Disconnection: Primary safety method
- System Disarm: Web interface emergency stop
- Physical Isolation: Disconnect ignition wires
-
Hardware Assembly
1. Connect ESP32 Pin 4 to Arduino Pin 7 2. Connect both GND pins together 3. Attach buzzer to Arduino Pin 13 4. Connect ignition system to Arduino Pin 9 5. Install status LEDs on ESP32 Pins 16 & 17 -
Power On Sequence
1. Power Arduino UNO first 2. Power ESP32 second 3. Wait for WiFi AP to initialize (30 seconds) 4. Connect device to "Launch-Control-AP"
-
Web Interface Access
1. Open web browser 2. Navigate to: http://192.168.4.1 3. Wait for dashboard to load 4. Verify system status shows "DISARMED"
-
System Preparation
- Ensure safe launch environment
- Verify all personnel are at safe distance
- Check ignition system connections
-
Arm System
- Click "Arm System" button
- Verify status changes to "ARMED"
- Confirm system LED illuminates
-
Execute Launch
- Click "π INITIATE LAUNCH SEQUENCE"
- Confirm launch in dialog box
- Monitor countdown via Arduino serial output
-
Post-Launch
- System automatically disarms after sequence
- Review system log for any errors
- Reset for next launch if needed
========================================
LAUNCH COUNTDOWN SYSTEM
========================================
System Ready. Waiting for launch signal on pin 7...
Launch signal received!
INITIATING LAUNCH SEQUENCE...
=== PHASE 1: INITIAL COUNTDOWN ===
T-10
T-9
T-8
T-7
T-6
=== PHASE 2: ACCELERATION PHASE ===
T-5
T-4
T-3
T-2
T-1
=== PHASE 3: FINAL SEQUENCE ===
β οΈ β οΈ β οΈ β οΈ β οΈ
LAUNCH!π
*** ACTIVATING FUSE TRIGGER ***
Launch +1 seconds - FUSE ACTIVE
Launch +2 seconds - FUSE ACTIVE
Launch +3 seconds - FUSE ACTIVE
*** FUSE TRIGGER DEACTIVATED ***
=== LAUNCH SEQUENCE COMPLETED ===
System Status: Normal
Launch successful!
========================================
Symptoms: Cannot connect to "Launch-Control-AP"
Solutions:
1. Check ESP32 power supply (5V/1A minimum)
2. Verify WiFi credentials: sis@2025
3. Restart ESP32 and wait 30 seconds
4. Check for interfering 2.4GHz networksSymptoms: Button click doesn't trigger countdown
Solutions:
1. Verify system is ARMED via web interface
2. Check ESP32 Pin 4 to Arduino Pin 7 connection
3. Test with Arduino serial monitor
4. Verify Arduino power supplySymptoms: Countdown starts but no audio
Solutions:
1. Check buzzer polarity and connections
2. Test buzzer with simple tone() command
3. Verify Pin 13 configuration
4. Check for loose connectionsSymptoms: Dashboard doesn't load or shows errors
Solutions:
1. Clear browser cache and cookies
2. Try different web browser
3. Check device IP address (should be 192.168.4.x)
4. Restart ESP32 web server#define DEBUG_MODE 1
void debugPrint(String message) {
if (DEBUG_MODE) {
Serial.println("[DEBUG] " + message);
}
}ESP32 Serial Output:
- WiFi AP initialization
- Client connections/disconnections
- Launch command reception
- System arm/disarm events
Arduino Serial Output:
- Trigger signal detection
- Countdown phase progression
- Fuse activation timing
- Sequence completion statusWe welcome contributions to the Stellar Ignition System! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Test thoroughly with hardware
- Submit a pull request
- π Bug fixes and improvements
- π Documentation enhancements
- β¨ New features and capabilities
- π§ͺ Testing and validation
- π¨ UI/UX improvements
- Follow Arduino IDE formatting
- Comment complex logic
- Test with actual hardware
- Update documentation
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License
Copyright (c) 2025 K Rajtilak
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
K Rajtilak
- GitHub: @rajtilak-2020
- Project Link: Stellar Ignition System