Wireless fireworks control modules - Any help for a newbie much appreciated!

Hi there everyone!
I hope you are all keeping well.

It's finally happened, Lockdown V3 and Furlough has finally got to me and i'm now planning celebratory halloween and new years fireworks with a technical twist!

This is my very first ever experiment with an arduino and also my first post although i've been browsing the forum for a while now attempting to research!

Firstly I apologise for my extremely noobish questions but i'm really eager to learn and i apologise for my lack of knowledge at the moment. If any of these questions have been asked before I sincerely apologise but I have had a good look for this use case scenario and haven't come across a project trying to achieve the same as I am.

I'm pretty sure this kind of project could probably be compiled using other peoples projects and just piling on code however after reading the beginners section of the forum regarding just trying to combine code I thought i'd ask the help of the experts!

I've been trawling the forums however i've not been able to come across exactly what i'm looking to do. i'm very new to arduino and coding so any help whatsoever is massively appreciated. I'm more than capable hardware side so it's definitely the software that i'm struggling with.

I know that many people have achieved fireworks ignition systems using an arduino and relays and have seen several projects online detailing how they've achieved this however I don't see any that achieve what i'm looking to do.

Background & what I want to create:

I want to create a wireless transmitter from an arduino and an NRF24 that will transmit to up to 3 receivers. each receiver will consist of an NRF24, Arduino Mega and a 16 way relay linked in to 16 electronic igniters.

I've seen projects using cat5 cables etc to transmit to the cues however my intention is that each unit would be fully standalone and wireless, so in theory each of the 3 could be placed in very separate places (line of sight of course) so the wired systems really aren't ideal for what i'd like to do.

I'm not precious at to how to fire the display, i'm more than happy to take a laptop out to the field to hit the button and transmit to each receiver, that's not a problem at all, or else I would love to be able to program the full display sequence on to the transmitter, with an LCD display and start it at the push of a button on the transmitter, with the LCD then telling me which cue is firing and when. both options are perfectly viable for my use case.


Where i've got to so far.

I have an arduino mega, nano 2x NRF24+ tx/RX and a 16 way relay.

I have both the transmitter and receiver interacting with no issues. The relay 'starts the show' and fires each cue in the sequence that i've pre defined upon me pressing a button on the transmitter. The sequence is stored on the receiver at present as this is just how i know to make it work (my concern with this method is scalability when i move to an additional two receivers)

I've been able to get to this very early stage of the project with no issues thus far however i'm a little out of my depth from here on out as i'm not too sure how to achieve several parts of the project.


(what I need help with) The next steps for the project:

1: I would love it if anyone was able to point me in the right direction as to where i'd even begin scaling this to up to 3 receivers. I've a transmitter and receiver talking to eachother with no issues but I don't know where to start with 3 receivers, how do I stop them from stepping on eachother and potentially missing instructions?

2: Is there a way to store the show on the transmitting arduino which would then individually address each command to a preset arduino 1,2 or 3 for example so that I effectively don't need to reflash each receiver per show?
I know how to send a command to the receiver and fire a sequence stored locally but i'm unsure how to do do it the other way around, my thoughts as to why it needs to be the other way around is to to help keep each of the 3 receivers in time, would I be right in thinking this?

3: GUI, does anyone at all have any tips whatsoever for creating a GUI or even making it able to read a spreadsheet of a predefined layout?
effectively I want to just be able to press a button
show start
receiver1 cue 1:FIRE, receiver2 cue1:FIRE, receiver3 cue1:FIRE

  • wait 3 seconds*
    receiver1 cue 2:FIRE, wait 2 seconds - receiver2 cue1:FIRE, wait 2 seconds - receiver3 cue1:FIRE
    etc. etc.

but I want a pretty way to set the times so it doesn't look like you have to be a programmer to do so if this makes sense? lol

4: how do i individually address particular pins on 3 separate boards from one wireless transmitter? I've tried googling the life out of it but i've been drawing blanks on this one!

--
How I would like the system to work:
1: I would love to create some form of GUI that would allow me plan out my display just using timings, so i coudldset a time or delay for each cue from the start point.

2: show starts and fires off

3: if I was to use a standalone transmitter i'd love to incorporate an LCD to tell me either how long the show has been running for, or a countdown timer of how long is left, or even just a display of which particular cue is firing.

4: option2 is to have a computer based GUI to launch the show at the press of a button on screen.

5:down the line a bit i'd love to work on a continuity checker/ armed key switch but it's a long way to halloween 2021!

my reason for wanting to create this:
I have 2 weddings coming up over the next two years, one a family member and one my best friends. I'd love to give them a fireworks display as wedding gifts and i'd love to have it timed. I'm known as being the nuts one who is always creating something, so just buying a firing system wouldn't be on brand for me! lol

Don't worry I am licensed for setting off displays of up to 500 people in my area and will be fully insured for each display! but more than anything this is a fun project for me to pass my time on lockdown whist on furlough!

Any help, advice or pointers whatsoever are all more than appreciated!

Warmest Regards to all
Jack

Hardly anyone is going to read that verbiage.

It’s best you ask for help on individual items you can’t get your head around.

I agree TLDR

It seems that you have the nRF24s communicating with each other.

The rest of the business of successful communication depends on a careful plan for what needs to happen and what messages are required to achieve that. For a very brief skim of your long Post I can't figure that out.

I would also be very VERY concerned that a wireless control system could malfunction and ignite fireworks unexpectedly and dangerously. Some means for the receiver to verify messages seems to be a minimum requirement.

You must also plan for the situation where a wireless message is sent but not received.

...R
Simple nRF24L01+ Tutorial

In a system like this it would be essential that the communications from transmitter to receiver is extremly reliable and robust, there must be a very very very low chance of a receiver operating on rogue packets either from other nearby transmitter systems or from being hacked.

I would suggest that some form of secure encryption of the control packets is needed.

You very definetly need to contact your insurers and ask them if they are happy for you to build and use a DIY control system with assistance of a internet electronics forum. If I was an insurer, I know what my reaction would be.

I would put the project in the non-trivial class.

The only fairly trivial bit is the Arduino controlling relays.

Wireless communication is not trivial. Reliable and secure wireless communication even less so. A message may not be received; someone else in the area may willingly or not send interfering messages - they could just try to communicate with their weather station for all you know, and happen to use the same command that sets off your fireworks!

Sending timed sequences requires a lot of planning: how to transfer the timed sequence reliably onto your master Arduino, and how to play back the sequence reliably.

Then there's of course the issue of setting off the fireworks reliably. One of the most dangerous situations is after all a misfire, which could leave the explosive in a highly unstable state but there's no way to tell what state it is in. Or maybe the relay didn't do anything at all (no command received, relay broken) and nothing happened to the explosive, but how to tell?

It sounds like a fun project to do with basic consumer grade fireworks in your backyard. Not something to make a public show out of, or do at someone else's wedding. For those situations, hire a professional fireworks company. If only because if something goes wrong, at least it's not your responsibility!

First step is to learn the basics.

FUNDAMENTAL FACT: being able to turn an LED off and on means the signal arrived.

The difference between an LED and any other device is what you do with the signal.

There are lots of tutorials on remote switches.

There are more than a few others doing the same thing.

Thanks for the advice everyone.

Just a couple of bits, the insurance thing is all covered so that's not an issue.
Fireworks are not professional grade fireworks they are entirely consumer grade, which I am licensed to use (in my country you must be licensed to purchase or use fireworks and put on a display, i'm fully covered for all of this up to 500 people at the moment)

Potential for signal to be interfered with: you're totally correct on this there's no encryption or anything to stop outside messers from playing with the system. unfortunately it's also the same with the commercial systems such as cobras. my plan is to incorporate an arming switch on the transmitter which may prevent the RX from moving past a particular line of code until activated just as a further barrier of security. But this is something I have not done any real research on just yet as i'm taking a step at a time at the moment!

Reliability of ignition: all ignitors used are commercially manufactured electronic matches designed for this specific purpose, I understand where you are coming from on the failed ignition front but the truth is this happens regularly, after every display even professional ones there's always the issue of fireworks that have failed to ignite, with professional grade fireworks it's much harder to tell if a pyro has gone off or not as they tend to be loaded into mortar tubes so you would physically need some sign that it hasn't launched. thankfully with consumer grade it's much easier to tell if a firework has failed to ignite from a safe distance in most cases (whether it be due to a rocket still being on the ground or a barrage protective seal at the top remaining intact) and if any fail then the standard procedure is to douse them with water.
Thankfully i'm much more of a novice with the arduino than I am with fireworks which is why i'm looking for any help whatsoever with this aspect of the project.

I carried out a test fire the other day with 5 rockets and my system in its current state which thankfully was fully successful.
at the moment in the hope to minimise network traffic through the NRF24's to minimise the chance of packets being lost the way I have them coded is that each receiver is programmed with a section of code which with activate once the signal that has been sent from the transmitter has been received.

so for example
TX1: sends button press signal

RX1: receives signal - activates display code
RX2: receives signal - activates display code
RX3: receives signal - activates display code

so basically each RX gets the signal at more or less the same time, activates the code and i've planned out each delay from there on, so all the cues for igniters attached to each RX are stored locally on the RX with the timing planned out for each igniter from display start all manually calculated from the time of button press. I mean it works as is, and the reason I done it this way was to minimise network traffic and hopefully remove the potential for lost packets. but it leaves me with no way to send info back to the transmitter to display which cue is firing unfortunately which I guess is where i'd like to take it. So I guess the main thing I was looking for help on was a way of making this process much more user friendly and prettier.

I appreciate all of your feedback on this so far and I hope everyone is having a fantastic week!

Jack

Instead of an arming switch that is read by code and stops the program, I'd switch the main power supply to the controller by a special safety switch, something that you take the key out of so it can't be switched on. This can then double as an emergency off - cutting the power in case something goes wrong and you have to immediately terminate the show. This would also have to cut off the power to the igniters, to be sure it is really off. After all if you made a mistake in the programming (or someone managed to hijack your signal), the show may go on even if you don't send the commands.

Besides, of course you should have some kind of start button or switch, which is read from software, that actually starts the show sequence.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.