Introduction: Halloween Evil Eyes - Redux (and the Rest!)
This is a re-working of my first ever Instructable : 'Halloween Evil Eyes'.
Which can be found here;
As we are getting closer to Halloween I thought I would improve the presentation of the initial project and add a few more effects.
These are as follows;
- Mounted the original 3 pairs of Evil Eyes into skull masks,
- added pulsating ultra bright green light chain to illuminate the front bay window of the property (to draw in unsuspecting victims!),
- added motion detection to trigger sound track playback (to provide maximal frightening effect),
- added bi-colour illuminated injection moulded skull,
- synchronised all of the above to movement detection at front of the property.
Mode of operation
In it's quiescent state (ie. no movement) the ultra bright green strip pulsates and the eye sockets in the injection moulded skull are fixed, blue. Once movement is detected at the front of the property via a PIR sensor the green light strip fully illuminates and the 'Evil Eyes' skull masks sequentially illuminate and run their respective animations. A 'scary' sound track is played over a speaker to the unsuspecting victim with the eyes of the injection moulded skull changing from blue to red during the speaking parts of the track.
I have added a YouTube video above showing the quickly lashed up layout (to avoid garnering too much attention before Halloween) and running sequence, with sound. Whooaa, Haaaa Haaaa Haaaa!
The following pages detail the component parts of the system.
The video is best played full screen with sound on max and room lights off in the presence of a friend. ;-)
Step 1: System Overview
As mentioned earlier I made some additions to the original Halloween Evil Eyes Instructable.
The picture above outlines the overall system which is designed to be modular for ease of deployment and retrieval.
The system comprises the following component parts;
- Animated Skull Masks
- Ultra Bright Pulsating Led Strip
- Injection Moulded Skull
- Motion Detection and Audio Playback
- Control Unit
- +5v PSU
All interconnections with the control unit are via coded plugs and sockets such that it is not possible to fit the wrong plug into the wrong socket (not unless you try really hard).
Step 2: Animated Skull Masks
To make the animated skull masks I used the three sets of Evil Eyes from the earlier project and ported the code from an Arduino Uno to an Arduino Pro Mini to reduce the form factor and get the weight down as these masks would need to be window mounted on suction cups. The matrices were interconnected using ribbon cable, again to keep the weight down. The original source code was modified to pause/reset on a trigger signal sent to pin 7 via a 1K5 pull up resistor. The code for which is included below in HalloweenEvilEyes.zip. Details of the circuit diagram are also given above.
This allowed the control unit to remotely synchronise the animations with the detection of motion at the PIR. I mounted the Pro Mini on a piece of veroboard adding a push button to allow for manual testing of the animations/mask and cable positioning etc. without triggering the audio track (as no doubt repeated screams would eventually upset the neighbours).
The masks were constructed from thin cardboard cut with a scalpel to follow the profile of the scull image. The image was adhered to the cardboard using 3M spray mount.
Apertures for the matrices were formed so as to align with the skull sockets and fastened to the mask with 10mm M3 plastic standoffs. These were screwed to the cardboard using countersunk nylon screws so as not to displace the skull image. To stop each matrix from 'flopping' forwards as they were only fixed at the base of each PCB a small piece of garden wire was fed across the left and right locating pieces on top of the PCB and under the molex connector.
Finally a tab was cut out at the top of the skull, pierced and a cotton hanging loop added to allow the skull mask to be hung from a transparent plastic suction cup.
The images above give full details of the construction of the skull masks.
Step 3: Ultra Bright Pulsating Led Strip
The pulsating Led Strip is a parallel load of 5 Ultra Bright Leds. Each of which putting out 12.5cd.
I mounted them on veroboard housed in small potting boxes linked with two core black bell wire so as not to stand out.
I acquired the Leds from Farnell : CREE Ultra bright 12.5cd Leds 24p ea
Pics of the Led strip and Cct diagram are included above.
Step 4: Injection Moulded Skull
The Injection Moulded Skull is an old purchase from a joke shop.
I retro fitted two pairs of leds. Two red and two blue for each eye.
The Blue leds sit low inside and are not directly visible, projecting their light on the back of the Skull. This seemed to give a more eerie feel to the skull and a better perception of depth.
The red leds were fitted in the centre of the eye sockets on stalks so they appear menacingly as small read dots once illuminated.
I have included pics of the skull and cct. diagram above.
Step 5: Motion Detection and Audio Playback
Motion detection and audio playback is achieve via a COTS PIR sensor purchased from EBAY. The audio is provided by a 50W RMS speaker with a frequency response of 3-22KHz.
These were embedded into a black ABS enclosure connected to the control unit via screened multiway cable with strain relief such that it could be suspended from the left hand bay window opening as shown in the video.
Pics of the Motion Detector and speaker along with Cct. Diagram as shown above.
Step 6: Control Unit
The control unit comprises an Arduino and two stacked shields as follows;
- Arduino Uno R3 (non-clone). http://proto-pic.co.uk/arduino-uno/
- This is used to control and synchronise effects
- Adafruit Waveshield v1.1. https://www.adafruit.com/products/94
- This permits audio playback using PWM from the Uno running on the Adafruit wave library WaveHC.h and WaveUtil.h. Details here; https://learn.adafruit.com/adafruit-wave-shield-audio-shield-for-arduino
- Adafruit Proto Shield v0.5. https://www.adafruit.com/products/51
- This provides 1W of audio amplification.
As I mentioned on the first page, but will recapitulate here. When the system is idle in it's quiescent state the ultra bright green Leds pulse 'menacingly', this is achieved through controlled modulation of the PWM signal being fed to the driver transistor T2 connected to pin 6 on the Arduino via a 10K resistor. The collector of T2 sinks the load current from the 5 green Leds connected in parallel.
During motion detection, the signal from the PIR is passed to Analogue pin A0. This was done as I wanted to try a few PIR sensors and reading the respective data sheets I was surprised to learn that some device outputs didn't necessarily swing the full supply rail. Consequently to save my having to add any further signal conditioning electronics I wired the output of the PIR to an analogue input to potentially poll a level if necessary. As it happens, the PIR I settled for was a cheap Ebay purchase which reliably did the job and used an open collector output with local pull up. In this case A0 is configured as a digital input and works fine.
Software in the Uno has been written to look for more than one trigger (it's actually user variable) in any given period to ensure false triggering doesn't occur. I found 2 triggers 'DETECTION_COUNTS_MAX' in a 10 second period 'DETECTION_WINDOW_TIMER_VALUE_MS' was enough to stop annoying the neighbours (if you look close at the bay window in the video you can see me frantically waving to set the thing off). A case based state machine is used to catch the edge of this event.
Once a valid motion detection is made the programme turns the green Leds full on (otherwise interrupts would be required to run as a concurrent process and I suspect the Adafruit Wave library needs unfettered access to interrupts to control the sound generation), making the code simpler.
The Evil Eyes are triggered and the audio is played. The Audio path is switched out via a relay during the inactive state as I found during development noise from the Green Leds PWM was coupling to the audio and causing a noticeable 'hum'.
The audio track is a collection of smaller tracks strung together and played sequentially. To make life easier (just a simple sequential get from the flash card) I imaginatively named the tracks 1th1.wav, 2sc1.wav, 3fs1.wav, 4cd1.wav, 5el1.wav and 6ew1.wav and copied them in one go to the memory card ensuring they were placed in sequence.
To sync the changing of the skull Leds from Blue to Red (this happens at the point in the track where laughter occurs and 'welcome' is spoken just after the creaking door), I check to see when track '4cd1.wav' is complete then energise the relay to switch over to Red Leds.
Once the audio track is fully complete everything is reset and the system falls back to the quiescent monitoring state.
Code for the control unit has been attached below along with the audio files I used.