Witch Skeleton (Arduino)
by Les Frères Entertainment in Living > Halloween
813 Views, 11 Favorites, 0 Comments
Witch Skeleton (Arduino)
I made this Witch Skeleton for Halloween. That's the 2nd version of it (the first one was good but always as prototype = no fixed battery, arduino nano not solder on wires,...etc.).
Finally, here is the last version.
That's the purpose of this project: do it yourself and buy less. So 90% is coming from things that I've found on my garage.
Everything is link to an Arduino nano.
- Skull: The movment of mandibul done with a servo motor.
- Arms and body: The movment of arms done with a motor on the cauldron.
- Cauldron: The lights done with led rubon
- Fog: The fog done with a simple fog machine with hack remote.
- Sound: done with MP3 module
The Arduino program is on the last step
Supplies
- Arduino nano
- Wiper Motor
- Micro Servo SG90 TowerPro
- Electrical relay
- Wires
- Cheap Plastic skull
- black Tissues
- Wood
- PVC tube
- loud speaker
- MP3 Grove V2.0 module with SD Card
- Chicken wire
- plastic box
- cardboard
- black and red paint
Skull: Preparation
Prepare the plastic skull to have lighting eyes and moving mandibles
- Take a simple plastic skull (buy from a discount shop)
- You can paint it with some black line if too white.
- Make a hole underneath to pass the different threads.
- Make 1 hole in each eye (the size of a led)
- add 1 red led and solder it to a resistor (do not forget the resistors to avoid grilling the led !)
-
solder a wire that will have a sufficient length to exit the skull
-
Add 1 blue led just behind teeth
- Screw a stick of wood between the two mandibles of the jaw
- attach a wire to this stick
- attach the wire to the Micro Servo SG90 Towerpro.
- Attach the skull to a piece of wood and also the Micro Servo SG90 Towerpro.
Arms and Body: Preparation
Arms and body is done with PVC tube. it needs some test to find the best move. Feel free to test different position to find yours own moves.
The best way is to NOT leave arms on the same position. If you want to give LIFE on you skeleton, change the position of shoulder for example: it's simple...but magic !
Don't forget to fixed on body an empty plastic box to store arduino, MP3 module, etc...
Cauldron: Preparation
For the cauldron,
- use an old plastic vase.
- Attach with adhesive tape some carboard around it to give cauldron dimension
- Add chicken wire or adhesive tape around it
- Put some "papier mâché" around it
- Paint it black (...............not with some rolling stones....ok, bad joke.)
- Add under cauldron some polyurethane foam and paint it on black with some red
- Attach a led rubon under polyuethane foam
For the movment of arms
- Add a wipe motor on the cauldron
For the fog
- Do an hole on the back of cauldron to add a PVC which will be link to fog machine.
- To hack the remote fog machine, attach two wire in it (see picture) and attach them to one relay.
Sound: Preparation
Add music on your grove MP3 v2.0 module with SD card
Arduino : Preparation
Here is the arduino code.
You will find very good training on internet. Use my code, modify it, test it. Feel free !
// Programme Crâne Halloween avec chaudron:
// Détecteur de mouvements à infrarouge HCSR 501 : CapteurIRPin sur PIN2
// 2 LED ROUGE Yeux + 1 LED BLEU Bouche --> A brancher sur le même PIN
// 1 SERVO MOTEUR SG90 mouvement bouche
// 1 relais LAMPE + 1 relais Fumée + 1 relais moteurEssuieGlace
// 1 MP3 sur PIN4
// Inversion le HIGH et le LOW pour les relais pour qu'ils soient éteints au démarrage
const int CapteurIRPin = 2; // capteur infrarouge PIR
//PIN 3 utilisé par le MP3
const int Relais1_FumeeChaudron = 4; // relais 1 pour envoyer la fumée
const int Relais2_LumiereChaudron = 5; // relais 2 pour allumer la lumière du chaudron
const int Relais3_MoteurChaudron = 6; // Relais 3 pour allumer le moteur du balai
//PIN 9 utilisé pour la bouche
const int LedYeuxBouche=11; // mettre les LED bouche et yeux sur ce PIN
int AttenteServoBouche; // variable de temps
// *************pour le MP3********************
#include
#include
SoftwareSerial mp3(10, 3); // PIN 3 (aucune idée pourquoi il faut le "10" avant le "9")
// *************pour le servomoteur********************
#include
Servo ServoBouche; // crée l’objet pour contrôler le servomoteur
void setup()
{
Serial.begin(9600); //Affichage série
ServoBouche.attach(9); // utilise la broche 9 pour le contrôle du servomoteur
ServoBouche.write(10); // positionne le servomoteur au Debut du cycle
pinMode(CapteurIRPin, INPUT); // Détecteur PIR comme étant une entrée
pinMode(LedYeuxBouche, OUTPUT); // LED comme étant une sortie
pinMode (Relais1_FumeeChaudron, OUTPUT); // Définir la broche "relai" comme étant une sortie
pinMode (Relais2_LumiereChaudron, OUTPUT); // Définir la broche "relai" comme étant une sortie
pinMode (Relais3_MoteurChaudron, OUTPUT); // Définir la broche "relai" comme étant une sortie
digitalWrite(Relais1_FumeeChaudron, LOW); // Définit la lumiere à LOW to turn Relay OFF
digitalWrite(Relais2_LumiereChaudron, LOW); // Définit le Pin à LOW to turn Relay OFF
digitalWrite(Relais3_MoteurChaudron, LOW); // Définit la FumeePin à LOW to turn Relay OFF
}
void loop()
{
//*******************Si mouvement détecté**********
while (digitalRead(CapteurIRPin) == HIGH)
{
lanceMP3(); // lance la musique via la fonction lanceMP3() plus bas
digitalWrite(Relais1_FumeeChaudron, HIGH); // Allume la fumée
digitalWrite(Relais2_LumiereChaudron, HIGH); // Allume la lumière du chaudron
digitalWrite(Relais3_MoteurChaudron, HIGH); // Allume le moteur du chaudron
delay(10000); // permet d'attendre jusqu'à ce que la voix démarre
for (int i=0; i <50; i++){ // mouvement bouche pendant 50 fois
AttenteServoBouche = random(100, 500); // choisi un nombre entre 100 et 500ms pour cette variable
ServoBouche.write(10);
digitalWrite(LedYeuxBouche,LOW); // on allume les 3 LEDS
delay(AttenteServoBouche);
Serial.println("ouverture bouche 10 degre");
ServoBouche.write(60);
digitalWrite(LedYeuxBouche,HIGH); // on éteint les 3 LEDS
delay(AttenteServoBouche);
Serial.println("ouverture bouche 60 degre");
}
digitalWrite(Relais1_FumeeChaudron, LOW); // Eteint la fumée
}
//****************************************************
//*******************Si mouvement PLUS détecté**********
digitalWrite(Relais1_FumeeChaudron, LOW); // Eteint la fumée (juste pour sécuriser car déjà éteint au dessus).
digitalWrite(Relais2_LumiereChaudron, LOW); // Eteint la lumière du chaudron
digitalWrite(Relais3_MoteurChaudron, LOW); // Eteint le moteur du chaudron
PlayPause(); // Faire pause sur la musique
//****************************************************
}
//*******************************************************************
// FONCTIONS
//*******************************************************************
// *********************** FONCTION MP3 ****************************
void lanceMP3()
{
mp3.begin(9600);
SelectPlayerDevice(0x02); // choisir la carte SD.
SetVolume(0x20); // définir le volume (entre 0x00 et 0x30)
SpecifyMusicPlay(1); // lancer la chanson à l'index 1
}
// ***************************************************************
Prototype: Testing !
Test a lot all position with arms, skull, body to find your own Witch attitude.