I've been building a control system for an Industrial Light Tower for a friend. In the beginning all she wanted was a simple dial to control the lights, but she didn't realize who she was talking to. I totally Tim Taylor'd it.
So, to start with, I had to figure out how this light tower operated. Once I finally found the data sheet for it, found that it works on 24vDC (or AC as well, supposedly), I found the lights themselves to be completely modular and could be taken off and placed in any given order without any rewiring. The tower has 9 wires, 2 for Vin, 5 for the lights, and 2 for the light mode (constant of flashing). Just connect a light wire with a mode wire, connect power, and you're good to go.
I started with my Uno, but downsized to a 3.3v Pro Mini to match the rest of the components. For control of the lights, I found the best method was to use optocouplers. Cheap, ease to use, no clicky relay noise. The next question was how to control it. I was originally told to just add a dial or something, but come on, thats no fun. Wifi is where it's at.
Enter the ESP8266. I made a simple web server with serial output to the arduino, giving the user On/Off buttons for each light, as well as a few "programs" such as random, chase, and Knight Rider back and forth light bar. This was ok at first, until I found a few problemss.
A: iOS devices didn't like the ESP web page.
B: Constant lockup/ memory dump/ whatever issues
C: The SSID and password had to be put into the code, so the unit could never be taken anywhere to be shown off.
D: Memory sucks balls on the NodeMCU. My tiny little program barely fit in the LUA environment.
So, after scouring the web, I found this gem. I already knew about the Arduino port for the ESP8266, just hadn't really needed it yet. Not only does the Arduino IDE give you the full 512K, but this program gave me everything I wanted. A GUI to log into any Wifi as needed. And a much better looking web page, which coincidently also now works with iOS. And it's rock solid, handling multiple users if needed.
Now for the fun part. I've always pranked my friend in the past, mostly with stuff like putting musical greeting card things in her keyboards, making her mouse vibrate, etc...
So after an exhaustive search on the what would serve my needs the best/easiest, I settled on the Adafruit Mini FX Sound Board along with a mono amp. I put a counter on the number of incoming serial messages (how many times the light tower is changed from the ESP web page), made a random number trigger with pinout to the sound board, and went ahead and threw on a bunch of annoying sounds. Here are a few examples:
Cartman : Respect my authoritah!
WHO LET THE DOGS OUT!
Rick Roll
Sports Center intro noise
Office Space : What would you say, ya do here?
Lego Movie: Everything is awesome
and, here is a video of the whole thing working.
I will post code and schematic (or fritzing pic) later.