Skully R U Afraid?
How to build a Talking and Singing Skull for Halloween Fun
It's all in the RoboGuts™ circuit board and a couple of servo motors and of course two RGB 3-color LEDs
The RoboGuts™ kit is the easiest, fastest and most affordable S.T.E.A.M. learning kit available today for the beginner or hobbyist. Because of the universal design, the RoboGuts™ circuit board can use almost any MCU (microController Unit) a small chip or module that is the “brain” of the robot.
I prefer using the PICAXE 28X2 modules because although they cost about $20/ea. They have a programming port built on them saving money and a ton of space that other chips and modules don’t have and require. They are also fast so that they can perform in most robotic applications.
So, for starters the one time costs might seem a little high, but in the end you can be saving hundreds of dollars and many hours or robot building time. The RoboGuts™ circuit board costs $15/ea. in the KickStarter campaign. But for most projects you should use the $37 kit to get some of the other needed components at a reduced price. http://www.R2Pv1.com/
See the Instructable "Talking-Singing-and-Dancing-MiniFloppyBot-Robot" on this webpage; https://www.instructables.com/id/Talking-Singing-an... for more info ...
I found the skull on eBay for about $30 ... I guess it's a scanned in real human skull ... it sure looks like a real skull, but maybe a little heavier and tougher being made from plastic resin. Some people mount the servo motors inside the skull ... but since I have a 3D printer I made the stand so I could just plug the skull onto a 3D printed spine. This makes it easier to move the jaw and neck easier since the jaw is spring loaded to hold it in place on the skull.
I'm using some small golf ball size plastic whiffle balls I bought at the dollar store for the eyes. I just cut one ball in half, then cut each half a little more to fit into the eye sockets ... I think it looks more fun and interesting than just the hollowed out sockets themselves.
I made a 3D CAD model animation showing the mount construction as this is easier to use as a guide than a lot of text;
You can see that it is easy to change from one PICAXE chip or module to another with minimal changes to the program ... I think the whole thing would work better with a PICAXE 28X2 module, but I only had an 18M2+ laying around to use in this project for starters ... see it in the photo. Sometime in the future I'll swap out the 18M2+ for a 28X2 module my favorite MCU. I am going to have to write a fun Halloween song for him to sing someday.
I plan to use an X10 power module w/a remote control to turn him ON/OFF as people get too close, but it might be more useful to add a HC-SR-04 module in a newer designed base so that as people get near that would trigger activity. All things to do in time ... for now I just love playing with my RoboGuts™ circuit boards.
Here's the program listing;
; 18M2-Skully-3.bas
#picaxe 18M2 ; Define the µProcessor IC Type
symbol Neck = B.0 symbol Jaw = B.1
symbol reyered = B.7 symbol leyered = C.1
symbol reyegreen = B.6 symbol leyegreen = C.0
symbol reyeblue = B.4 symbol leyeblue = C.7
init: servo Neck,150 servo Jaw,150
; hserout pin = B.6 hsersetup B9600_4, %00000 ; 9600 baud, non-inverted polarity
symbol i = b0
; BEGIN Main Body * * * * * * * * * * * * * * * * * * * * * * * gosub rred pause 100 gosub lred pause 100 gosub rgreen pause 100 gosub lgreen pause 100 gosub rblue pause 100 gosub lblue pause 100 gosub Police
do gosub MyName
gosub Speech2
gosub Speech1 loop end ; END Main Body * * * * * * * * * * * * * * * * * * * * * * **
; BEGIN Subroutines * * * * * * * * * * * * * * * * * * * * * * wait1: pause 500 ; the SpeakJet is busy return
MyName: gosub rblue gosub lblue gosub NeckC pause 1000 gosub rgreen gosub lgreen gosub NeckL pause 1000 gosub rblue gosub lblue gosub NeckC pause 1000 gosub rred gosub lred gosub NeckR pause 1000 gosub rgreen gosub lgreen gosub NeckC pause 1000 gosub rTeal gosub lTeal ; My name is Skully ; \PITCH \75 My name \PITCH \70 is \PITCH \75 \SE \KE \AW \PITCH \65 \LE \IY hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 140, 155, 141, 154, 140, 22, 70, 8, 129, 167, 22, 75, 187, 194, 135, 22, 65, 145, 128) for i = 0 to 3 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckL pause 1000 gosub NeckC gosub rred gosub lred ; that is with a k ; \PITCH \75 that \PITCH \65 is \PITCH \75 with \PITCH \70 a k hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 169, 8, 132, 8, 191, 22, 65, 8, 129, 167, 22, 75, 147, 129, 8, 8, 190, 22, 70, 154, 128, 6, 194, 154) for i = 0 to 5 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR gosub Police ; I am not a pilot ; \PITCH \75 I \PITCH \65 am \PITCH \75 not \PITCH \70 a \PITCH \75 pilot hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 157, 22, 65, 132, 132, 140, 22, 75, 141, 136, 191, 22, 70, 154, 128, 22, 75, 199, 7, 157, 146, 133, 191) for i = 0 to 4 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckC pause 4000 return
Speech1: gosub NeckC gosub rred gosub lgreen ; I have a RoboGuts ; ; \PITCH \75 I \PITCH \65 have \PITCH \70 a \PITCH \75 \RR \OW \BO \OW \PITCH \65 \GE \Fast \AW \TT \SE hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 157, 22, 65, 183, 8, 132, 166, 22, 70, 154, 128, 22, 75, 148, 137, 171, 137, 22, 65, 178, 7, 135, 191, 187) for i = 0 to 3 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR pause 1000 gosub NeckC gosub rgreen gosub lred ; circuit board with a ; \PITCH \75 \SE \IH \RR \PITCH \70 \KE \EH \TT \PITCH \75 \BO \OW \RR \DE \PITCH \65 with \PITCH \70 a hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 187, 129, 148, 22, 70, 194, 131, 191, 22, 75, 171, 137, 148, 174, 22, 65, 147, 129, 8, 8, 190, 22, 70, 154, 128) for i = 0 to 5 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckL pause 1000 gosub NeckC gosub rblue gosub lblue ; PICAXE 28X2 ; \PITCH \75 PICk \PITCH \65 AX \PITCH \75 twenty \PITCH \70 eight \PITCH \75 x \PITCH \70 two hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 198, 129, 195, 22, 65, 132, 132, 196, 187, 22, 75, 8, 7, 191, 7, 147, 131, 141, 7, 191, 128, 22, 70, 154, 4, 191, 22, 75, 131, 131, 195, 187, 22, 70, 8, 191, 162) for i = 0 to 5 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR pause 1000 gosub NeckC gosub rgreen gosub lgreen ; module ; \PITCH \75 \MM \Slow \AW \AW \PITCH \65 \JH \UW \LE hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 140, 8, 135, 135, 22, 65, 165, 139, 145) for i = 0 to 1 gosub JawDn pause 150 gosub JawUp pause 150 next i pause 1000
gosub NeckL pause 2000 gosub NeckC gosub rTeal gosub lTeal ; the master at R2Pv1 ; \PITCH \75 the \PITCH \80 \MM \AY \SE \PITCH \70 \TT \RR \PITCH \65 at \PITCH \75 R \PITCH \65 two \PITCH \75 P \PITCH \65 v \PITCH \75 one hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 8, 169, 8, 128, 22, 80, 140, 132, 187, 22, 70, 191, 148, 22, 65, 132, 8, 191, 22, 75, 152, 22, 65, 8, 191, 162, 22, 75, 198, 128, 128, 22, 65, 8, 166, 8, 128, 22, 75, 147, 14, 136, 8, 141) for i = 0 to 7 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR pause 1000 gosub NeckC gosub rOrange gosub lOrange ; .com gave me life ; \PITCH \65 dot \PITCH \70 com \PITCH \65 \GE \EYIY \Slow \VV \PITCH \70 me \PITCH \80 \LE \OHIY \Slow \FF \FF hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 65, 175, 8, 136, 191, 22, 70, 195, 136, 136, 140, 22, 65, 178, 154, 8, 166, 22, 70, 140, 128, 128, 22, 80, 145, 155, 8, 186, 186) for i = 0 to 4 gosub JawDn pause 150 gosub JawUp pause 150 next i pause 1000
gosub NeckR pause 2000 gosub NeckC gosub rPink gosub lPink ; I bet you would like to be as ; \PITCH \75 I \PITCH \65 \BE \EH \TT \PITCH \75 you \PITCH \65 would \PITCH \75 like \PITCH \65 to \PITCH \75 \BE \IY \PITCH \65 as hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 157, 22, 65, 170, 131, 191, 6, 22, 75, 8, 160, 22, 65, 147, 8, 138, 177, 22, 75, 145, 7, 136, 7, 155, 196, 22, 65, 8, 191, 162, 22, 75, 170, 128, 22, 65, 132, 8, 167) for i = 0 to 6 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckL pause 1000 gosub NeckC gosub rblue gosub lblue ; animated as I am when ; \PITCH \75 \AY \NE \IH \MM \EYIY \PITCH \70 \TT \EH \DE \PITCH \65 as \PITCH \75 I \PITCH \70 am \PITCH \65 when hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 132, 141, 129, 140, 154, 22, 70, 191, 131, 174, 6, 22, 65, 132, 8, 167, 22, 75, 157, 22, 70, 132, 132, 140, 22, 65, 185, 8, 131, 8, 141) for i = 0 to 6 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR pause 1000 gosub NeckC gosub rred gosub lred ; you are dead ; \PITCH \75 you \PITCH \70 are \PITCH \65 \DE \Slow \EH \PITCH \60 \EH \DE hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 8, 160, 22, 70, 152, 22, 65, 174, 8, 131, 22, 60, 131, 174) for i = 0 to 2 gosub JawDn pause 150 gosub JawUp pause 150 next i pause 1000
gosub NeckL pause 2000 gosub NeckC gosub rOrange gosub lOrange ; may be I should eat more ; \PITCH \65 may \PITCH \70 \BE \IY \PITCH \75 I \PITCH \65 should \PITCH \75 eat \PITCH \65 more hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 65, 140, 154, 22, 70, 170, 128, 22, 75, 157, 22, 65, 8, 189, 8, 139, 177, 22, 75, 8, 128, 191, 22, 65, 140, 7, 137, 153) for i = 0 to 5 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR pause 1000 gosub NeckC gosub rgreen gosub lgreen ; come a little closer ; \PITCH \75 come a little \PITCH \80 \KE \LE \OW \PITCH \65 \SE \RR hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 194, 8, 134, 140, 154, 128, 145, 129, 191, 159, 22, 80, 194, 145, 137, 22, 65, 187, 148) for i = 0 to 5 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckL pause 3000 gosub NeckC return
Speech2: gosub NeckL gosub rTeal gosub lTeal ; are you afraid ; \PITCH \65 are \PITCH \75 you \PITCH \65 a \PITCH \80 \FF \RR \Slow \EYIY \DE hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 65, 152, 22, 75, 8, 160, 22, 65, 154, 128, 22, 80, 186, 148, 8, 154, 174) for i = 0 to 3 gosub JawDn pause 150 gosub JawUp pause 150 next i pause 1000
gosub NeckR pause 2000 gosub NeckC gosub rgreen gosub lgreen ; come a little closer ; \PITCH \75 come a little \PITCH \80 \KE \LE \OW \PITCH \65 \SE \RR hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 194, 8, 134, 140, 154, 128, 145, 129, 191, 159, 22, 80, 194, 145, 137, 22, 65, 187, 148) for i = 0 to 3 gosub JawDn pause 150 gosub JawUp pause 150 next i pause 1000
gosub NeckL pause 1000 gosub NeckC gosub rred gosub lred ; a little closer ; \PITCH \75 a little \PITCH \80 \KE \LE \OW \PITCH \65 \SE \RR hserout 0,(20, 96, 21, 114, 22, 88, 23, 5, 22, 75, 154, 128, 145, 129, 191, 159, 22, 80, 194, 145, 137, 22, 65, 187, 148) for i = 0 to 3 gosub JawDn pause 150 gosub JawUp pause 150 next i gosub NeckR pause 1000 gosub NeckC return end
; BEGIN LED Subroutines * * * * * * * * * * * * * * * LEDsOFF: high reyered high leyered
high reyegreen high leyegreen
high reyeblue high leyeblue return
rred: low reyered high reyegreen high reyeblue return
rgreen: high reyered low reyegreen high reyeblue return
rblue: high reyered high reyegreen low reyeblue return
rPink: low reyered high reyegreen low reyeblue return
rOrange: low reyered low reyegreen high reyeblue return
rTeal: high reyered low reyegreen low reyeblue return
lred: low leyered high leyegreen high leyeblue return
lgreen: high leyered low leyegreen high leyeblue return
lblue: high leyered high leyegreen low leyeblue return
lPink: low leyered high leyegreen low leyeblue return
lOrange: low leyered low leyegreen high leyeblue return
lTeal: high leyered low leyegreen low leyeblue return
Police: For i = 0 to 4 gosub rred gosub lblue pause 75 gosub LEDsOFF pause 75 gosub rred gosub lblue gosub LEDsOFF pause 100 gosub rblue gosub lred pause 75 gosub LEDsOFF pause 75 gosub rblue gosub lred pause 75 gosub LEDsOFF pause 100 next i return
; END LED Subroutines * * * * * * * * * * * * * * * *
NeckC: servopos Neck, 140 return
NeckL: servopos Neck, 170 return
NeckR: servopos Neck, 115 return
JawUp: servopos Jaw, 150 return
JawDn: servopos Jaw, 210 return
; END Subroutines * * * * * * * * * * * * * * * * * * * * * * * * * * ** end