The simulator was created because I watched a company spend quite a bit on money on training users with live fire extinguishers. I noted that the training had to be held outside to dissipate the CO2 release (weather) and there was a good size cost to re-filling the extinguishers each and every year. I thought that there should be a way to save that money, and to not rely on good weather to accomplish this effort. While there are several commercially available products, since I do workshops on Arduino microprocessors at my local makerspace, why not find a way to use that knowledge and maybe some CNC and 3D printing to make something?
A simple overview is that this uses a real (empty) fire extinguisher with a flashlight in place of the cone at the end of the hose. The flashlight will hit photocells on a simulated PVC "fire", and once swept across each sensor three (3) times a buzzer and flashing LED will indicate a completed effort. A user/trainee must simulate the real use by taking out the safety pin, closing the handle and sweeping the flashlight at the base of the simulated fire.
This code should be fairly easy to follow. I start by declaring the variables that I used to count "light hits"; variables for measuring the light bias - or relative ambient light around the flames. As the counter is added to, I test to see if the count reaches my threshold number (12) and then send you to a function that will ring the buzzer and light the LED.
I have commented the code, and also put in quite a few "Serial.print" and "Serial.println" to help you debug with the serial monitor as well.
My first thought was to use a laser pointer, but decided I would use a very bright flashlight and photocells to make this work, so you get a bigger swatch of light that goes to the photocells.
You could use an alternate item in place of the real fire extinguisher and build from scratch, but I wanted for this to seem fairly realistic.
I stated the effort by obtaining an out of date fire extinguisher from our safety team. We made sure it was empty, don't do this work to a fully charged unit!
I removed the output tube of the unit, and then examined the handles and the safety pin, then figured out where I could put in a switch.
This part of the effort required drilling out the valve section to thread the wiring through. You could wire around this area, but I felt like the wires could more easily be broken during use if you went that route. I wanted to make a product that would last through several years of use.
I was able to use two different size drill bits to drill though from the front of the valve to the back, enough to place two small wires through. Make these long enough to go from the end of the valve all the way through the tubing to the flashlight of your choosing. I left mine extra long until I knew I had enough to reach into the end of a flashlight, and on the other end enough slack to comfortably reach a switch that we will mount under the top handle. On the particular unit I was provided, there was a perfect place to fit a switch mount. So I went into a free design tool called TinkerCad and created a switch mount that would slide into the back of the fire extinguisher and then I could drill to mount a roller type switch. I've included a picture and the STL file of the unit I created.
Keep in mind if you design one, make sure after the mount and switch are in place you want to make sure the switch and mount do not stop the handle compression, or else it will not feel like the real thing when you are putting pressure on the handle to let the CO2 out. I was able to get full movement, for a better simulation feel.
I used a micro-switch with a roller on it, I think this will last longer, and give better service life than just a lever-switch version would.
I laid out the switch and clamped it to my 3D print, then drilled out two mounting holes. You could also modify the.stl file to 3d print this mount with holes in it.
Next I measured the radius tip of the extinguisher. Some extinguishers may have a cone instead of a small tip. Mine had a tip. I then measured the back section of the flashlight to get the radius of that as well. I went back to TinkerCad and created a design that would bind the flashlight and the tip of the extinguisher and make it easy to service.
I have attached the STL for that effort, you simply print two to make the clamp. The flashlight came from Harbor Freight.
Next I removed the back cap covering the batteries on the flashlight, and cut out the pushbutton. I printed a plug to fill in this space and attached the wiring to the battery and the case. The plug had a hole printed in, so that I could put a 4-40 screw through the hole. The screw head contacts the battery terminal when you screw the base back on, and then I soldered the other end and clamped with two 4-40 nuts to make the circuit up to the switch in the handle. The other wire is tapped and attached to the side of the flashlight case to complete the circuit. Now, you can test by squeezing the handle and closing the switch, your flashlight will come on to verify the operation.
This circuit is fairly easy to follow. I have included my Fritzing diagram for ease of following along. If you don't use Fritzing, I highly recommend this free tool, as it makes it easy to document, and if you want to make an actual PC board, it can generate the proper files to send off for this service.
The theory of operation for this device is that we have four (4) photo cells distributed at the bottom of the simulated fire. The photocells receive a constant background light amount, which is registered each time the photocell is polled by the Arduino. There is a "biasing" photocell that is behind the simulated fire. This is used to pick up the ambient light in the area around the simulator. This then is used in the programming to make sure stray light is not setting off the photocells. When you move the flashlight from one photocell to another, then register the higher intensity light. each photocell must be "hit" three times before it is considered a good "sweep" of the fire. This counting is done by the Arduino program. Once the three count for each photocell is reached, a buzzer will ring and an tower LED will flash to show that the operator has completed the task. The software them cycles all the counters back to zero to start again.
I used a standard breadboard to build and test the circuit. I then used a solder style prototyping board to transfer the wiring to. You need to ensure that all your grounds are connected to a common location. I drive both the buzzer, LED and the UNO board from 12 volts to simplify the circuit. It could be run off a battery as well, but I used an old laptop power supply. Here is a breadboard view of the circuit. Most of the work is done within the software code.
All of the Photocells have a connection to the +5 rail, and then to ground via a resistor. They are tapped at the connection point between the photocell leg and the resistor, and go back to the analog inputs on the Arduino.
The relay is setup to be energized by the Arduino pin, and deliver 12 volts to the LED light and buzzer when the program logic finds that each photocell has been "hit" by light three times. This is a variable that you can change if you want it to take less or more passes of the fire extinguisher.
I have included the Fritizing file so that you can look at all of the wiring and breadboard connections.
I obtained a picture off the internet, and used Vectric Vcarve's tracing function to create a file to cut on my CNC router. I have included the.gif and.dxf files versions, but you can do similar with any picture and inkscape if you would like. If you have Vectric Vcarve, I have included the.crv file.
I used a sheet of 1/4" PVC to cut these flames from, available from most box stores.
I used spray paint (yellow, orange, red and black) to create the look. I sprayed yellow, then highlighted with the orange and red spray paint. Finally I stood back and just shot the black from a distance to finalize the painting effort.
I created all of the pieces on my home-built 3D printer. You should be able to recreate these to suit your needs, but I have included all the STL files that you can print if you use the same dimensions I used.
The slot in the bottom stands fits the flames very well, and hold up the assembly well. I think they will wear well, but if they loosen up a small bit of hot glue can firm them back up.
The back stand is optional, I wanted the LED/Buzzer tower to be at the top of the unit, but you could easily mount it off to one side just as well.
The Arduino base came from Thingiverse here:
The top is just a simple box I made with TinkerCad,.stl is attached. You might want to modify, I cut the slot for the wiring out manually.
The plug for the back of the flashlight is simple,.stl is attached. Depending on where you get your flashlight, this will likely have to change.
SImilarly, the flashlight holder is another TinkerCad design that matches the output tube and the flashlight body. I've include the.stl files, but unless you have the eaxct same units, you will have to redesign this. Make two of these!
1. PVC Panel 1/4', available from most box stores;
2. Fire extinguisher, check with your employer or local company for an old unit that is no longer used;
3. Prototyping board - I got mine from Amazon, the are in the "Super starter Kit" by elegoo;
4. Tower LED red alert with buzzer - Adafruit product 2994;
5. (5) Five photocells - Adafruit product 161
No preview (download only).