Arduino Project Hub
Project tutorial

Simple and Cheap Phone Controlled Fireworks Igniter © GPL3+

This is a beginner project in which we'll be lighting fireworks using our bluetooth enabled phone. Simplicity and cheapness are the taglines

  • 11 respects

Components and supplies

11113 01
SparkFun Arduino Pro Mini 328 - 5V/16MHz
HC-05 bluetooth
12002 04
Breadboard (generic)
Male/Male Jumper Wires
826 04
Male/Female Jumper Wires
Rg relay a
RobotGeek Relay
3 AAA enclosed battery case
2S LiPo battery 300-1000 mah (XT-60 connector)
0.25 mm Nichrome wire
XT-60 LiPo connector
Heat Shrink Tubing
A plastic box with detachable lid
Openbuilds wire cable by foot
OpenBuilds Wire Cable - By the Foot
Terminal strip block

Necessary tools and machines

Wire stripper
Wire cutter
Soldering flux
09507 01
Soldering iron (generic)
Usb to TTL adapter

About this project

What is this and how does it work?

This is a beginner project in which we'll be lighting fireworks using our bluetooth enabled phone.

The phone will trigger the firing event, the listening bluetooth module (HC-05) will communicate that to an arduino, and the arduino itself will trigger a relay. The relay will be connected to a LiPo battery and will drive current through a ribbon of nichrome wire wired around the firewok / match. The nichrome will heat quickly and become red and hot triggering the firework.

That didn't sound that complicated right ?

First of all, i need to explain why i've made this project. There are quite a few fireworks projects out there, why is this different. So i think it's advantages are:

* low cost, the total parts with the battery included are under 20$ (you can see a list below) if you don't have any parts

* simplicity: the project will be made with little soldering on a breadboard and the components might then be reused easily. I estimate only an hour on work on the project

* a high level of details on this tutorial

* can be extended to multiple ignition only if necessary (i'll explain how) but for starters it's just a single igniter

Other advantages but not so unique are:

* safety (you can operate it from a distance), the innocent firework there might not be dangerous but it can be adapted for more dangerous ones with only a match!

* fun, well there is only fun to create something with your hands, and you are free to adapt the project as you wish if it seems to simple (i'll give you some ideas at the end)

That being said let's get started!


Making the power connection

We need to make the LiPo connector wiring to the relay and to to the nichrome wire.

First we'll wire the LiPo connector, we're using soldering flux to solder a 2 conductor cable (about 10 cm).

Using a cutter and a wire stripper strip about 3 mm of cable on one side and 5 mm on the other side. Cut the heat shrink tube 2 x 6 mm and insert it on the 3 mm uninsulated side. Solder the cable on the LiPo connector as shown in the pictures, Then position the heat shrink tube to cover the exposed metal and using a lighter carefully heat the tube so it locks into position.

On the other side the positive wire of the 2 conductor cable goes into the relay (middle slot).

Another longer 2 conductor cable must be prepared, this should 30 cm or longer to safely trigger the firework. Strip the wire 5 mm on both sides, and then insert in in two terminal strip blocks (see the pictures). This cable will trigger the firework /match. At one side we'll insert the nichrome wire later. At the other side we'll connect it to the relay (+ terminal) and respectively to directly to the LiPo (- terminal). You'll need to identify the relay NO (normally open) position, this is mark on the relay with an unclosed loop, by contrast the NC (normally closed position) will be marked with a closed loop, so should be easy to spot. Using a 4 cm stripped on both sides(also 5 mm) wire connect the NO (+) on the relay to one of the terminal blocks of the 30 cm cable. The (-) terminal of the LiPo wire will be connected on the other terminal block.

This is a lot of talk but actually is pretty simple, please see the pictures and it will be more clear.

Preparing the battery holder

We need to prepare the 3 AAA battery holder it will be plugged in the breadboard so i recommend soldering a two male pins (like these) so it fits neatly into the breadboard. We'll also need to cut 2 x 5 mm heat shrink tube, and after soldering the male pins we'll use the lighter to insulate the bare metal.

The breadboard

Now the breadboard should be prepared, first insert the microcontroller, then the bluetooth module.

Using male-male breadboard connector, connect the bluetooth and the relay (+) and (-) terminals then connect D12 (from the microcontroller) to the HC-05 Tx terminal. Also connect D6 (from the microcontroller) to the relay IN pin. The power supply (3 AAA) terminal will be connected to the raw and ground pins.

Final details

* Using a cutter make a hole in the plastic box lead. Insert all the components in the plastic box, the 30 cm wire with the nicrome at one side will slip through this hole.

* Cut 12 cm of nichrome wire. Wrap the firework or match a few times around, and then connect it to the terminal strip blocks. I've measured the current needed to drive the nichrome hot and it's about 6 amps, below the relay 10 A rating.

Using it and final thoughts

To use the device you'll need a serial bluetooth enabled device and that can be:

- an android / iphone smartphone or tablet

- a laptop with bluetooth module

- a raspberry pi with bluetooth built in

In my demo i've chosen an andoid app called Bluetooth Controller. This app let's you customize buttons that will send serial data. I've created two buttons called On and On2 that will send "5" and respectively "6" over the serial. But of course any serial bluetooth app will do fine.

Ok, first connect the LiPo battery, then set the On switch on the 3 x AAA battery holder, close the lid to the box, set the firework in place with the nichrome wire, set back and press the On2 button on the android app (because we connected the pin nr 6 to the relay).

I've also set a On switch with the "5" value assigned, i'll leave the implementation of multiple relays / firewors for the user. Basically you'll need a bigger box, and multiple connected relays, with wires.

To drive fireworks with fuses if they don't work directly (wrapping the fuse with the nichrome wire) you can try with a match. Wrap the wire across a match head, and tie the match head to the fuse or glue it. This should do the trick.

I hope you enjoyed this tutorial, and i'm waiting for feedback!


The circuit schematic


The code that should be uploaded th the pro miniArduino
The code establishes a software serial connection (for HC-05) bluetooth module.

Then in the loop it listens to the serial connection for incoming communication (from the phone or tablet).

When something is received it will be checked for validity in the isPinNrValid function ( it should a pin number from 3 to 9), and then it toggles the pin on for "igniteTime". Ignite time is a constant initially defined by me for 2500 ms, you can change that to whatever you like, i've found out that my fireworks would ignite successfully given that interval.
#include <SoftwareSerial.h>

SoftwareSerial bluetooth(12, 13); // RX, TX
const int igniteTime = 2500;

void setup()

void loop()
    if (bluetooth.available() > 0) {
        char received =;
        if (isPinNrValid(received)) {

bool isPinNrValid(char pin)
    return pin >= '3' and pin <= '9';

void togglePin(char pinNr)
   Serial.print("Toggle pin:");Serial.println(pinNr);
   String pin;
   pin += (char) pinNr;
   int number = pin.toInt();
   pinMode(number, OUTPUT);
   digitalWrite(number, HIGH); 
   digitalWrite(number, LOW); 


Similar projects you might like

Arduino 101 - Intel Curie Pattern Matching Dress

Project tutorial by Kitty Yeung

  • 21 respects

Arduino Morse Code Machine

Project tutorial by Vlada Krsmanovic

  • 12 respects

Arduino Laser Tripwire

Project tutorial by Ian Cumming

  • 20 respects

PlatformIO for Visual Studio Code

by formulahendry

  • 7 respects

Smart Home Sensor Node

Project tutorial by vincent wong

  • 6 respects

ESP8266 + L298N Motor Drive + Smartphone

by luciorocha

  • 8 respects
Add projectSign up / Login