Griezelijke Halloween PIR Bewegingsspeaker: Schrik & Licht Effecten Kit
Onderdelen en Benodigdheden
| Onderdeel | Aantal | Opmerkingen |
|---|---|---|
| Arduino UNO | 1 | |
| MP3 Module | 1 | |
| Relais Module 4 Kanaals | 1 | |
| PIR Bewegingssensor Module HC-SR501 | 1 | |
| 3xAA Batterijhouder (optioneel) | 1 | |
| 2-pins Waterdichte Luchtvaart Stekker/Connector | 3 | |
| Waterdichte Voedingsdoos (190x60x120mm) | 1 | |
| Zwart Sprayverf | 1 | |
| 32mm Houtboor | 1 | Voor luidspreker |
| 16mm Houtboor | 1 | Voor PIR sensor |
| USB-stick (FAT32 geformatteerd) | 1 | Voor audiobestanden |
Over dit Project
UPDATE: Lachende-geest variant toegevoegd in zip-bestand en extra batterijpack.
Ik wilde verschillende kleine, verborgen audio-doosjes voor in de voortuin maken om mensen teverschrikken als ze de voordeur naderen. Dit is de meest complexe versie en mijn eerste testcase: audio met een griezelijk geluidsspoor en twee verschillende visuele lichteffecten om aandacht te trekken.
Voordat ik begin: credits aan Kristian Blåsol voor het oorspronkelijke concept van het gebruik van een relais om een MP3-versterkermodule te sturen.
Het concept: een zelfstandige, batterij- (of 12V externe) beweginggeactiveerde speaker met twee 12V LED-uitgangen voor effecten. Doel: goedkoop (totaal < €20/$25), aanpasbaar, en weerbestendig genoeg voor één Halloween-avond.
Hier kies ik voor 12V externe voeding (buitenstopcontact beschikbaar) en vrij helder LED-licht dat 2A trekt. Het werkt met minimale wijzigingen ook op 5V/12V batterij (AA-houders of 5000mAh powerbank) en kan snel aangepast worden voor 5V externe lichten.
(Na langdurig gebruik merkte ik dat de Arduino de MP3-module bij hogere volume niet genoeg stroom kon leveren, waardoor de Arduino resette. Ik voegde een speciale 5V batterijvoorziening toe.)
Deel 1: Bouwen
Principe: Arduino UNO stuurt MP3-speler en verlichting via 4-kanaals relaismodule. Twee relais simuleren een knopindruk op de MP3-module (Play en Previous), de andere twee schakelen de LED-circuits.
Ik gebruikte 30AWG draad voor besturing (100mm) en 18AWG voor 12V circuit. Het ziet er rommelig uit, maar er is ruimte in de doos en het maakt demontage makkelijk. Voor het afnemen van het deksel gebruikte ik female stekkers voor PIR-sensor en luidsprekerkabels (geschroefd in MP3-module).
Schakeling volgens schema: 12V voeding via waterdichte connector. Externe LEDs schakelen door de min-poling door te voeren en de plus via de relais.
Behuizing: 32mm gat midden voor luidspreker, 16mm gat bovenaan voor PIR-sensor. Hele doos zwart gespoten om LEDs op printplaten te verbergen.
(Niet getoond: luidspreker waterdicht gemaakt met fietsband en reparatieset – geluid doorlaatbaar, waterdicht. Vervolgens bevestigd met bouten.)
Luidspreker ingeschroefd, PIR-sensor vastgelijmd (eerst lijmpistool, later epoxy want lijm liet water door).
Componenten gerangschikt voor toegang tot USB-poorten van MP3-module en Arduino. (Voor 5V voeding: USB op Arduino of micro-USB op MP3-speler.)
Na bouwen en code uploaden getest. Soldeerverbindingen versterkt met lijmpistool (vooral luidspreker).
Let op: MP3-module vereist FAT32 geformatteerde USB/SD-kaart; andere formaten werkten niet.
Deel 2: Geluid
Geluidsbestand bewerkt met Audacity. Bronnen/credits:
- Schreeuwen
- Griezelige lach
- "I see you"
- Stappen op stenen geluid
Deel 3: Instellen
Audiobestand en relais-schakeling door Arduino zijn op tijd ingesteld. Bij ander audiobestand: timings aanpassen en testen. In code aangegeven wat gewijzigd moet worden.
Deel 4: Real-World Test
Getest in de praktijk.
Deel 5: Eindresultaat








Code: Halloween PIR Proximity Activated Speaker & Light
// Pin toewijzingen
int pirSENSOR = 2; // PIR sensor, max gevoeligheid en bereik
int previousBUTTON = 3; // Knop op MP3-module (Vorige)
int playBUTTON = 4; // Knop op MP3-module (Play/Pauze)
int whiteLED = 5; // Wit knipperend licht
int redLED = 6; // Rood licht tijdens schreeuw
int statusLED = 10; // Status LED
void setup() {
pinMode(pirSENSOR, INPUT);
pinMode(previousBUTTON, OUTPUT);
pinMode(playBUTTON, OUTPUT);
pinMode(whiteLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(statusLED, OUTPUT);
digitalWrite(previousBUTTON, HIGH); // Relais HIGH = UIT/OPEN
digitalWrite(playBUTTON, HIGH);
digitalWrite(whiteLED, HIGH);
digitalWrite(redLED, HIGH);
}
void loop() {
if (digitalRead(pirSENSOR) == HIGH) { // Beweging gedetecteerd
// Geluid starten
digitalWrite(previousBUTTON, LOW); // Druk 'Vorige' (speelt vanaf begin)
delay(100);
digitalWrite(previousBUTTON, HIGH);
delay(100);
// LED sequentie 1: Aandacht trekken
digitalWrite(whiteLED, LOW); delay(1000);
digitalWrite(whiteLED, HIGH); delay(500);
digitalWrite(whiteLED, LOW); delay(500);
digitalWrite(whiteLED, HIGH); delay(9000);
// "I see you" patroon
digitalWrite(whiteLED, LOW); delay(500);
digitalWrite(whiteLED, HIGH); delay(100);
digitalWrite(whiteLED, LOW); delay(500);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(500);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(300);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(300);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(300);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(300);
digitalWrite(whiteLED, HIGH); delay(6000);
// Kindergeluiden patroon
digitalWrite(whiteLED, LOW); delay(300);
digitalWrite(whiteLED, HIGH); delay(1000);
digitalWrite(whiteLED, LOW); delay(100);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(100);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(100);
digitalWrite(whiteLED, HIGH); delay(300);
digitalWrite(whiteLED, LOW); delay(100);
digitalWrite(whiteLED, HIGH); delay(1000);
digitalWrite(whiteLED, LOW); delay(600);
digitalWrite(whiteLED, HIGH); delay(1400);
digitalWrite(whiteLED, LOW); delay(100);
digitalWrite(whiteLED, HIGH); delay(7000);
// Schreeuw / bloed sequentie (rood licht)
digitalWrite(redLED, LOW); delay(3000);
digitalWrite(redLED, HIGH); delay(100);
// Geluid stoppen
digitalWrite(playBUTTON, LOW); // Pauzeer/stop
delay(100);
digitalWrite(playBUTTON, HIGH);
delay(60000); // 1 minuut wachten voor heractivering
} else {
digitalWrite(statusLED, HIGH); // Status LED aan om stroom te trekken (voorkomt USB powerbank uitschakelen)
}
}
Schema's
Let op: deze variant heeft één batterijpack. Later voegde ik een tweede onafhankelijke voeding voor audio toe omdat de stroom te hoog was en de Arduino resette.


Bijlagen:
voices_audio_dUluBtMyqG.mp3– stemmenbox zonder lichteffecten, 6 lachenlaughing_ghost_variant_VsB0Y8CTlM.zip– lachende geest variantarchive_IipdobBdHs.zip– archiefgraveyard_ambience_sound_fx_(128_kbps)_nhuprhuJcc.mp3– begraafplaats ambient geluid
Productieproces
- Een robuuste temperatuur- en sensor-API bouwen op Raspberry Pi met de GY-91-module
- Een Slimme Auto-vergrendelende Deur Bouwen met uw Smartphone's Bluetooth-bijnaheid
- Raspberry Pi GPIO onder de knie: Een PIR-bewegingsensor interfacen op B+/Model 2
- Raspberry Pi Thuisbeveiligingssysteem: PIR-bewegingsdetectie + Camera E-mailwaarschuwingen
- Hoe de HC‑SR501 PIR-bewegingsensor aan te sluiten, kalibreren en programmeren met een Raspberry Pi
- Bluetooth Mesh-ontwerpkeuzes: Module vs. discreet apparaat
- Apacer XR-DIMM: DO-160G gecertificeerd robuuste DDR4-geheugen voor defensie en luchtvaart
- emtrion lanceert compacte emCON‑MX8M Mini module aangedreven door NXP i.MX 8M Mini
- congatec introduceert SMARC 2.0 Module aangedreven door NXP i.MX 8M Mini Processor
- Inductieve Nabijheidssensor: Schakelontwerp, Functionaliteit en Praktische Toepassingen
- Hoe PIR-sensor Schakelingen Werken: Ontwerp, Werking en Real-World Toepassingen