Radio controlled detonator (transmitter/receiver pair) based on Arduino Nano with ATmega328P.
Functional description
Two communicating devices* (transmitter/receiver or master/slave), once correctly configured, are ready for commands.
After the user arms both devices, and steps away from the receiver to a safe distance, the user can arm the device and press both detonation buttons and wait, if set, for the timer to expire, and thus for the detonation to happen.
*An unbalanced mode with a master and multiple slaves is not possible because the slaves would all respond with an ACK on the same channel.
Refer to the Wiki for more information.
First build of the "Basic" Kit
Note: the key switch has been bypassed by a jumper link, since this model will be powered exclusively from the Arduino's USB port.
The safety layer the key was meant to add is replaced by the ability to unplug the external power, which is impossible in the enclosed "Pro" and "Ultimate" models.
The devices, as stated in the documentation, can be PIN-protected either way, thus ensuring safety of operation.
A 3.3V LDO needed to be added for the high power consumption of the modules (115mA max).
Moreover, an electrolytic capacitor needed to be added close to the 3.3v on the radio module, to accomodate for the current peaks.
Perhaps the most "boring" part of this project. As always, it's just lines of code, organized and commented in such a way that code is easy to read, debug, mantain and update, while also mantaining modularity. It might look a little bloated, but that's just how it is for big complex projects with modularity and ease of human-readability in mind.
All the coding was done using PlatformIO IDE in Visual Studio Code.
This project is released under the BSD v2 License.
The following external libraries are used:
Disclaimers:
- This device is intented for educational use only.
- The makers of this project are not responsible for any damage caused to objects, animals or persons.
- This device is not intended for laymen.
- This documentation could be changed at any time without previous announcement, thus it's the user's duty to check for updates.