Wednesday, June 29, 2011

Code rewrite underway

Making progress with the code rewrite. The code is much cleaner, better organized, easier to maintain, etc... I'm not done with it but made very time and getting faster at coding the chip.

I did manage to get the normal mode of the chip working. That is the mode that will allow the chip to manipulate the mouth piece of the outfit like I want. In addition, I implemented the status lights in the code.

As a reminder from the previous post, I want some status lights so that once I hook this up to the outfit, it gives me the ability to see that the card is functioning as expected. The following video isn't all the exciting but it shows 3 important things.

First, on the oscilloscope you will see the signal that drives the servos. Although I am showing only one signal, in reality there is 12 signals coming out so it could drive 12 servos right now.

The next thing is the blinking led. That light is being blinked by the code and it lets me know that things are still running. In computer terms, that is a heartbeat.

The final item to notice is the other LED remaining lit. That tells me the board is in normal operating mode. I plan on implementing two other modes. One is a test mode that I can use to make sure all the servos are working and at the same speed. The other mode will be an "angry" mode that I can trigger while in costume to simulate the character being angry. Again, there will be an LED for either of those modes to help me diagnose any problems.





Tuesday, June 28, 2011

Now that I have some experience...

I am rewriting the program that controls the mouth servos. The program I wrote would work for a basic outfit but I wanted a few additional features.

* The ability to test the servos. I am designing the outfit with very small servos that will be doing a lot of work. They will burn out/wear out. I want to create a test to drive all the servos in a way to check the range of motion and the speed so that I can easily identify servos that need replacing.

* Make it possible to get angry. I want a mode for the servos that involves the servos moving in a more synchronized, rapid movement to indicate anger. Similar to the test mode, I need the servos to perform a certain choreographed movements for that.

* Heartbeat monitor. This is a heartbeat in computer science terms. I want a regular pulse signal that I can tie to an LED to indicate that the board is functioning properly. This will aid in diagnosing problems. Just had a thought that multiple LEDs will allow me to show which mode board is in.

* Normal mode. This is what I did before. It is a series of random motions to each servo.

Also, I may decide to add an input signal to help with randomizing values but I don't think that will be necessary.

Finally, I also want to rewrite it to use the experience I've gained to write a much cleaner, easier to maintain program. Have I mentioned I'm having fun?


Easier than I expected.


Well, didn't take long for my first try at etching a circuit board. I already had some of the supplies around the house and a quick run to K-Mart and Radio Shack took care of the rest.

First of all, the pattern. To print the pattern I picked up some gloss photo paper for the laser printer. Whatever I want is then printed on that paper.

The next step was to iron the pattern onto the blank circuit board (which I got at Radio Shack for cheaper than I expected). The iron was set for very hot, the circuit board was scratched up with a brillo pad and then heavy pressure was applied to the paper to get the pattern to transfer. This is why you have to use a laser printer as the ink is plastic based. Ink jet printer won't do the job.

After the patter was transferred, I soaked the piece in water. This breaks up the paper until it can be rubbed away from the circuit board. If all was done correctly, the ink is left behind. I didn't get a super clean transfer because I think I needed more pressure for a longer period. Anyway, once the paper was cleaned off, I then proceeded to the acid bath.

The acid bath is 2 parts Hydrogen Peroxide (the over the counter stuff) with 1 part Muriatic acid. I lightly agitated the acid bath (and watched as the solution turned green from the copper) and after a few minutes, the copper disappeared from the non-protected areas. Finally, a wash of acetone (thank you for the nail polish remover honey!) to remove the ink and I got this.


With a little bit of practice, should be making my own boards in no time...

Next on the agenda...

I want to keep this project moving so have to decide what to work on next. To keep me focused, I think I will concentrate on the hood element of the costume.

I want to order the servos for the mouth piece but I need to stress test my one remaining servo. So I may later go ahead and do a mock up a small portion of the mouth to see if the servo can move the material like I hope.

Next, I am putting together my list to learn how to make printed circuit boards. PCBs are a much preferred way to have the electronics mounted. The other option is wires joining everything together which can be a tangle mess, a nightmare to put together, a nightmare to repair and diagnose any problems.

From what I am seeing, the process is pretty simple. The circuit pattern is printed on a laser printer (using slightly special paper), transferred to the blank circuit board using an iron and the dipped in an acid bath for the etching. So my goal for this evening is to get the list of supplies together and to get the supplies ordered. I would run down to the local Radio Shack except they tend to charge way too much compared to ordering online. It comes out to be a factor of almost 10 times as expensive for some components.

This video shows the process pretty well. Looks nice and simple. Just need practice to get quick at it.





Monday, June 27, 2011

Now with video

This video shows the use of the signal length to control the servo position. If you watch the Oscilloscope, as the signal gets shorter it causes the servo (the tiny little motor jumping around in the video) to move to the right. As it gets longer, the servo moves to the left. On the very left side of the video is the micro chip that I programmed that is driving the servo. In reality, I wrote the program to be able to drive up to 15 or so servos. I'm just only use 1 for this test.

I also discovered that I probably burnt out my other 2 servos while trying to find the problem. They were cheap but it kept me from realizing I had probably hit the correct values on the program.



Woot!


Just as I thought, the oscilloscope worked its magic and I was able to get past the servo problems I've been having. Took only a few minutes to get the timing signal to work properly so that I could get the servo to move. In this shot, the oscilloscope is showing the signal peak length at 1.76ms. For the servo to be positioned, the value is set between 1 and 2ms. Woot! I will publish a later update with some video when I'm able to expand on these results.


Sunday, June 26, 2011

Some changes

After further consideration, I am replacing the idea of jacob's ladder on the backside of the outfit with something else.

The jacob's ladder would have looked impressive but it had some major issues. First and biggest was safety. The jacob's ladder can be very dangerous. With its location being somewhat close to my heart, just not worth the risk. I am sure I could have properly set it up but just not worth it. Also, powering the ladder off of a battery would have been difficult. Even a 12volt lantern battery (those heavy square ones) could not have powered it more than half an hour or so. I could have reduced its cycle time to get more life but an unpowered jacob's ladder just looks like two pieces of metal.

What I am going to do instead is use some of Tesla's inventions to produce a sparking style ladder. The basis of it is going to be something like this video. The video was taken from http://www.amazing1.com/tesla.htm Please note that each popping noise is a spark. The video didn't always catch the spark so it is more active than what this video is showing.





I think if I get 12 of these down the middle of the back, it should look pretty impressive, especially when combined with the noise.

Friday, June 24, 2011

Still waiting on the Oscilloscope and some new information

The oscilloscope is in the mail but due to the lame tracking from USPS I have no idea where it actually is. It could arrive tomorrow, it could arrive a month from now. But until then, not much I really can do.

I did find out that the servos I bought operate on a mid pulse of 760us instead of the 1520us I thought they used. That means if they receive a pulse for .76 milliseconds, they should move to the center. the 1.52ms I had been coding for will not work. I did try redoing my code but no dice. I really need to verify my signal with the oscilloscope.

Monday, June 20, 2011

Worked on the chest circuitry some more...

Not too much but I added another 4017 chip to the circuit prototype for the chest electronics. This chip will control the pumping of fake blood back and forth between two chambers to simulate and artificial heart. I had more problems then I anticipated but that was due to a bad LED causing me to think things weren't working. Once I realized what the issue was, everything was fine.

I can't wait now for the Oscilloscope to arrive now. The bad LED would have been so easy to track if I had had one at my disposal.

Sunday, June 19, 2011

I feel vindicated (to a small degree)




Well, I guess I should get to know what I am buying a little bit better. I've been a bit frustrated playing around with the MCU's and the servos. I thought I was getting something very basic wrong. I decided to put it aside until my oscilloscope arrives.

I loaded up another piece of software I purchased recently called Tina. Tina lets me simulate electrical circuits. Much to my surprise, one of the features I discovered today allows me to also run programs on MCUs as part of a circuit. So I loaded my servo control program into Tina and simulated it. The screenshot shows the results of the simulation.



The thing to notice is the window to the upper right of the big yellow box. It shows the timing. That pulse it is showing should occur once every 20ms and the high peak should be between 1ms and 2ms. And that is exactly what Tina is showing.

So, why can't I get the servos to respond? Some possibilities.

* The chip is not running at the correct frequency. Unlikely since I've already tested with flashing LEDs to make sure I got the number I expected.
* Servos are defective. I don't expect this since I bought 3 and they are all working the same way.
* Servos don't work the way I expect. This is very possible

Anyway, once the oscilloscope arrives, I can verify my numbers coming off of the test circuit. I may also hit up the hobby store and pick up a different model of servo just to see if that is the issue. Also, if they have someone working that understands servos I may see if I can chat them up.


Saturday, June 18, 2011

Heart beat circuit


Since I can't do much with the micro-controller until the oscilloscope arrives, decided to change my attention to something else. In this case, I am working with the heart beat special effect.

This effect will be part of the chest portion of the outfit. Part of it will be a dull red throbbing heart beat. Aside from that it will include some faking pumping visible blood in glass cylinders.

The basic circuit is done for the heart beat lights. Although I am using LEDs, they will be masked in such a way as to not be directly visible. A picture of the circuit is shown below. It is on a breadboard so not permanently mounted yet.



In the picture you see two chips. The top chip is a 555 timer control chip. This chip allows for a pulse to be generated on a regular basis. Think of it as someone taping there foot to keep a beat. The resistors and capacitors attached to it control the rate of the beat.

The bottom chip is a 4017 decade counter. That fancy speak for a chip that essentially just counts from 0 to 9 over and over. The 555 timer chip tells the 4017 chip how fast to count. I hooked up some LEDs so that they would light up when the chip hit number 0 and number 3. Giving it a double beat, pause, double beat, pause. Pretty basic but I think the effect will work.

Oscilloscope on the way...

Still having problems with the servos. Not sure if its the control wave being sent from the microcontroller or if its the servos. The oscilloscope should answer that for me. It will let me check that the signal I am generating is what I expect.

Luckily there are digital oscilloscopes that are much cheaper than their old analog cousins. I found a pretty decent looking one which should be quite sufficient for the type of work I am doing.

By the way, who would have thought that such a small servo could produce so much smoke?

Wednesday, June 15, 2011

Grrr... Don't want to go to sleep

Tonight I actually started working with real chips. Essentially the process is I write some code, it is copied down to a special circuit board (connected via USB) that programs the chip and then executes it. I hooked this up with a servo motor.

The results weren't what I wanted yet but it shows promise. The servos were twitchy but they weren't moving like I wanted. Have to put it aside, work comes too early in the morning.

An example of what has been arriving in the mail...

Some of the toys that arrived this week... This was after I had already gotten a lot out of the box but you can still see a lot of capacitors, speakers, LEDs, etc... Also the plastic strips near the bottom of the picture are filled with micro chips including AND, OR, NOT, XOR, chips as well as the programmable microcontrollers. Yes, my idea of an early Christmas.

Monday, June 13, 2011

More coding progress and toys arrived.

First off, a bunch of packages arrived. These were mainly support items for me learning basic electronics. It include things like LEDs, capacitors (well over 1,000), transistors, power supplies, switches, pots, etc... It's like an early Christmas!

The second bit is that I rewrote the code for the microcontroller. Still having a lot of fun with it. I am actually very close to the code being at a truly testable stage. I am going to try and hook it up to a real servo soon to see if I get the results I am hoping for.

In the meantime, a new copy of the code. Main thing missing is a true randomization of the values of the servos.

I will continue to post the code as I develop it. I figure might be useful for someone else playing around with this stuff to have examples. Fun for me to show off as well... :) Here is the code up to this point.

;**********************************************************************
;
; Filename: MouthServos.asm
; Date: 6/14/2001
; File Version: v 0.5
;
;
;**********************************************************************
;
; Files required: P16F877.INC
;
;
;
;**********************************************************************
;
; Purpose:
; Program will drive a set number of servo motors. These servos
; will be moved to random locations for a duration of 1 to 3
; seconds. At that end of that period, they will move to a new
; location and the process repeats.
;
; Additional Info:
; Servo pulse: high pulse 1ms to 2ms in length determining servo position
; with a low pulse of approximately 40ms between high pulses.
;
; Completed:
; Servo array implemented (currently 2 elements but can be easily expanded up to expected 12)
; Init of servo array with preset values for new positions. randomizer not implemented yet.
;
; ToDo:
; Randomize new position and duration.
; Generate pulse based upon values.
;
;
;**********************************************************************

list p=16f887 ; list directive to define processor
#include ; processor specific variable definitions

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V

SERVOCOUNT EQU D'20'
MINTIMER EQU D'1000' ;smallest pulse for one end of servo positioning
MAXTIMER EQU D'2000' ;largest pulse for other end of servo positioning
TOTALTIMER EQU D'40000' ;max 40ms

; declare servo arrary
VARIABLES UDATA
;***************** Servo array start ****************
servo_start res 0
servo1_cycle res 1
servo1_duration res 1 ;server duration (value * 8) / 1000 = milliseconds
otherservos res 39 ;19 more servos

;***************** Servo array end ******************

temp_fsr res 1 ;used to swap out fsr
loop_count res 1 ;used in looping operations
first_time res 1 ;used to indicate first run through main loop
current_bit res 1 ;indicates current bit on current port to use
current_port res 1 ;indicates current port
debug_port res 1 ;used for debugging port problem, remove for final release

;**********************************************************************
RESET_VECTOR CODE 0x0000 ; processor reset vector
nop
goto start ; go to beginning of program

MAIN_PROG CODE

start
bsf first_time,0

bsf STATUS,RP0 ;move to bank 1
clrf TRISA ;set porta to all output
clrf TRISB ;set portb to all output
clrf TRISC ;set portc to all output
movlw b'00000010' ; configure Timer0. Time factor of x8
movwf OPTION_REG ; Maximum Prescaler

bsf STATUS,RP1 ;move to bank 3
clrf ANSEL ;set to digital instead of analog
clrf ANSELH
bcf STATUS,RP0 ;move to bank 0
bcf STATUS,RP1

BEGIN_PULSE
movlw b'00000001'
movwf current_bit ;set current bit to first bit.
movlw PORTA
movwf current_port ;starting port of A
movlw SERVOCOUNT
movwf loop_count ; loop for the number of servos we are using.
movlw servo_start ; start of the servo array
movwf FSR ; move the address into FSR

clrf T1CON
movlw 0x63 ;setup timer1 to lsat 40ms
movwf TMR1H
movlw 0xC0
movwf TMR1L
bsf T1CON,TMR1ON ;start the timer
bcf PIR1,TMR1IF ;clear the interuppt


BEGIN_SERVO_LOOP ;Do this for each servo
btfsc first_time,0 ;if first time, reset the servos
goto BEGIN_RESET_SERVO
decfsz INDF ;decrement the servo count. if not 0, skip to pulsing
goto BEGIN_PULSE_SERVO_HIGH

BEGIN_RESET_SERVO ;Its either first time or end of cycle, reset the servo to new duration and cycle
movlw d'32' ;set a new servo count TODO: Random value
movwf INDF
incf FSR
movlw d'187' ;move to center position of servo high byte TODO: Random value
movwf INDF
decf FSR
END_RESET_SERVO

BEGIN_PULSE_SERVO_HIGH
movf FSR,W
movwf temp_fsr ;save the fsr
movf current_port,W
movwf FSR ;FSR now has the correct port
movf current_bit,W
movwf INDF ;sets the appropriate bit. since only one servo is high at a time, no need to mask bits
movf temp_fsr,w
movwf FSR ;restore the FSR to point at servos
incf FSR ;move to the duration of the servo
movf INDF,W ;get the duration
sublw 0xFF ;max value of timer0
movwf TMR0 ;set the timer.
bcf INTCON,TMR0IF ;clear the flag interupt flag.
WAIT
btfss INTCON,TMR0IF ;is interupt set yet?
goto WAIT
incf FSR
END_PULSE_SERVO_HIGH

BEGIN_PULSE_SERVO_LOW
movf FSR,W
movwf temp_fsr ;save the fsr
movf current_port,W
movwf FSR ;FSR now has the correct port
clrf INDF ;pulse the port low

BEGIN_UPDATE_CHANNEL
;****** move to next channel (bit/port) for next servo
rlf current_bit
btfss STATUS,0 ;is carry bit set?
goto END_UPDATE_CHANNEL
bcf STATUS,0 ;clear the carry bit
incf current_port ;increment to the next port.
movlw b'00000001'
movwf current_bit ;reset to first bit.
END_UPDATE_CHANNEL

movf temp_fsr,W
movwf FSR ;restore the FSR to point at servos

END_PULSE_SERVO_LOW

decfsz loop_count,1 ;any servos left to process?
goto BEGIN_SERVO_LOOP
END_SERVO_LOOP
WAIT2
btfss PIR1,TMR1IF ;is interupt set yet?
goto WAIT2

bcf first_time,0
goto BEGIN_PULSE
END_PULSE

end

Saturday, June 11, 2011

Learning the microcontrollers

Today marked the first day where I put in some serious time with learning how to code the MCUs. I decided to work on the code for the servos in the mouth of the hood. It is a little slow going as I am learning the assembly language of the chips as well as understanding its memory architecture. Anyway, the code doesn't do much yet but it actually represents a leap in understanding. The code just loops through looking at two servos (I could expand it to more, just keeping number down for debugging purposes). It makes a decision if it is time to move the servo and if it is, sets the servo up for the move.

I have a lot of code to go but it is coming to me pretty quickly now. To give you an idea of what it looks like... Yeah, this is what I do for fun.


list p=16f887 ; list directive to define processor
#include ; processor specific variable definitions

; '__CONFIG' directive is used to embed configuration data within .asm file.
; The labels following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V

SERVOCOUNT EQU D'2'
MINTIMER EQU D'1000' ;smallest pulse for one end of servo positioning
MAXTIMER EQU D'2000' ;largest pulse for other end of servo positioning
TOTALTIMER EQU D'40000' ;max 40ms

; declare servo arrary
VARIABLES UDATA_SHR
servo_start res 0
servo1_cycle res 1
servo1_duration_high res 1
servo1_duration_low res 1
servo2_cycle res 1
servo2_duration_high res 1
servo2_duration_low res 1
loop_count res 1


;**********************************************************************
RESET_VECTOR CODE 0x0000 ; processor reset vector
nop
goto start ; go to beginning of program

MAIN_PROG CODE

start
movlw SERVOCOUNT
movwf loop_count ; init each servo...
movlw servo_start ; start of the array of servo variables.
movwf FSR ; move the address into FSR

INIT_SERVO
; if cycle is 0, means that we are done at this position and must generate new position and cycle count
decfsz INDF
goto SAME_SERVO_POSITION ;cycle isn't 0 yet, stay at same place.
NEW_SERVO_POSITION
;new cycle count
movlw d'32' ;stay here for 32 cycles of 40ms ~1.2Seconds total. TODO replace this with randomizer
movwf INDF
;new servo position
incf FSR
movlw 0x05 ;move to center position of servo high byte TODO: replace this with randomizer
movwf INDF
incf FSR
movlw 0xDC ;move to center position of servo low byte
movwf INDF
incf FSR
decfsz loop_count, 1 ; are we done?
goto INIT_SERVO
goto INIT_SERVO_END
SAME_SERVO_POSITION ;this servo does not need to be moved yet.
incf FSR ;move to next servo
incf FSR
incf FSR
decfsz loop_count, 1 ;are we done?
goto INIT_SERVO
INIT_SERVO_END
goto $

end

Wednesday, June 8, 2011

Parts on the way

Just ordered a programming board and some MCUs. The cost was fairly cheap and I'm really looking forward to playing around with the chips.

I've decided to start work on one of the eyes as a first step. This will be the eye that is essentially a fancy flashlight. I want to do this outfit and the only way to make it is get started. The electronics are fairly basic and will be a nice way for me to get going.


In addition, I ordered 10 chips. (Only about $2 a piece.). I ended up going with the PIC16F887. I'm really looking forward to this... :)

Sunday, June 5, 2011

A change...

With further reconsideration, the PIC16F887 is a better choice. Not that much more cost but a lot beefier chip.

Controller chips

One of the things I am doing with this blog is simply a place to jot down my own notes. I'm not necessarily meaning for this blog to be one that others get much out of other than curiosity.

Some preliminary checking on chips and I'm favoring the PIC16F616 chip. It has several useful things including 12 data lines (this would allow me to drive the servo mandibles of the mouth with one chip possibly two, a massive 128 bytes of ram (yes, a whole 128 bytes of ram, barely enough to store your mailing address) and built in timers. For what I am doing that is ideal. Also as the program storage is 2K of memory, I can do my code in C as opposed to Assembler.

I had originally looked at cheaper chips but I would need a large number of the cheaper chips to do the job of one or two of these and these chips only cost a dollar or two. For the entire project, I should not need more than a few chips.

I am going to Washington DC this week. Going to see if they have any stores that cater to hobbyist electronics. I would like to talk to someone that has done this before.

Saturday, June 4, 2011

Getting started

Okay,

So for about 2 years or so I've had an idea for a steampunk outfit kicking around in my head. Since I tend to be fascinated by gadgets and technology, the outfit reflects my personal interests.

The outfit I am thinking about is basically a Frankenstein like type of outfit. The basic premise behind the character is a priest or other social do-gooder that is brutely attacked and left for a dead. A doctor who is conducting medical experiments decides to revive and augment the subject. The doctor uses his creature to strong arm and eliminate his enemies. But after a time, the doctor himself is killed by a rival. The character slinks into the sewers to hide and after a period of time, comes into the care of a group of thieves who use his unique attributes to their advantage.

That's the basic bio. It may be silly but I think I can have fun with it.

Alright, onto the costume. Since I am a tall person, I would like to emphasize that to make the Sewer Ghost more intimidating. I plan on having a lot of special effects on this outfit which will make the project a rather lengthy one. From head to toe, hear are the basics of the outfit. Keep in mind these are basic ideas and I'm still working on details for every aspect.

Head:
**********************************************************
The head piece will start with a basic canvas hood.

For the right eye, I would like to create a false eyeball. This eyeball would be a mounted in a false brass piece. An MCU (micro control unit, basically a programmable microchip that is a very primitive computer) combined with 2 servos would cause the eye to randomly and fairly quickly look around. This should give anyone viewing it to feel a bit unsettled. There is a character in the Harry Potter movies that gave me this idea and I think I can simulate it pretty easily.

The left eye would be a basic short brass tube. I would like to illuminate the inside in such a way as to give an almost flashlight effect. This would be done in such a way that the light would not shine back in my own eye. A viewer would have trouble seeing my eye while I should have no trouble seeing out.

For the mouth and nose I am considering a rather elaborate setup. The mouth would be a basic circle or oval with either a copper or brass look. On the perimeter of this circle would be about 12 tiny brass arms or insect like mandibles. These would be hooked up to servos controlled by MCUs. Most of the time they would flex in and out randomly but I would have an override control that would let me flare them open or closed.

The mouth itself would be covered be a fine grill to make seeing my real mouth difficult. Inside this, I'm going to place a small microphone hooked up to a speaker that would allow me to do a distorted voice. This in turn would also possibly be hooked to a ring of LEDs to give a lighted fluctuation while speaking.

All of the head gear would use leather strapping to hold it in place. I may create a harness inside the hood to allow more precise positioning on the face. I would probably also have a some fan powered air ventilation to help keep me cool and provide me with fresh breathing air.

Chest:
*************************************************************
For the chest, I want to create a Steampunk artificial heart. Think of it almost like a Victorian Darth Vader chest piece. Aside from the usual decorative elements, a pulsing set of red LEDs would simulate an artificial heartbeat. This would be covered over (none of the LEDs in use would be directly visible) with a fake mechanism to simulate a pump. I'm thinking some motors to drive some pistons and perhaps artificial smoke to simulate a mini steam engine. Two small vials with fake blood would be used to fake pumping blood from one chamber to the next. These would actually be animated so you would see the blood transfer back and forth.

Back:
******************************************************
The back area would contain a support pack. Think of a Ghostbusters proton pack but with a Victorian flair. First of all, there would be two large clear cylinders. These would simulate mixing of two poisons to create a gas. Some simple pumps would create a stream of bubbles while small motors would drive fans stirring the mixture. I would probably gently light them to help color the fluids and make them stand out.

Also on the back I am considering adding a small Jacob's Ladder. I need to research this more. Because of the voltage involved, I'm not sure if I could carry the battery capacity to drive it as well as the safety factor. I want to have fun but I don't want to die.

Also on the back would some various animatronics such as fake pumping of the gas and other movings parts. I really want this outfit to be a moving piece of art.

On the practical side, the back would also house the batteries and circuitry that would drive the rest of the outfit.

Left arm
**********************************************
For the left arm, I am considering creating a Gatling gun setup. Basically my arm would go inside the gun area to simulate the lower arm being replaced with the gun. I'm found some plane bearings that I think would allow me to have the gun rotate around my arms. Using some careful optical illusions, I hope to really give the impression that my arm is missing below the elbow.

Inside the gun, my left had would have access to a control panel that would allow me to activate and control the rest of the outfit.

Right arm
*******************************************
The right arm would have two basic props. The first would be a large blade implement mounted on the outside of the arm. It will look rusty, nicked and have bits hanging off of it. The other element would be a nozzle for the "poison gas". I would probably set this up to be able to blow prop smoke.

Belt area
****************************************
Haven't thought about what to do hear too much. I would like to hang some prop rats but haven't thought about it beyond that.

Legs and feet
**************************************
Also haven't thought about this too much other than possibly weighted boots to give a distinct thump when I walk. Suggestions for the legs, feet and waist are welcome.

So, thats the basic outfit. So where am I now?

For starters, I'm playing around with servos and the MCUs since I've never worked with either. The MCUs are programmed using a Windows program. Since I'm already a computer programmer, that aspect is simple enough. I've never actually programmed an MCU so I will have to pick up the hardware to do that as well as the chips. The good news is that this is pretty cheap to do.

The other thing I am going to be teaching myself is how to create printed circuit boards (those green boards with copper running all over with resistors, capacitors and chips soldered in). It also looks to be pretty simple. I've got the software and for the most part its just knowing how to use an iron.

Anyway, I've got a lot to learn and a long way to go. In many ways, this project is satisfying a childhood fascination with special effects. Hope I have fun....