Introduction: Dr Patrick Firestone's Patented Automatic Circulatory Machine

Dr Patrick Firestone's Patented Automatic Circulatory Machine is a steampunk interpretation of a mechanical heart. It is portable to be used at the bedside of the patient and features in and out connection points to the patient's circulatory system. Functionally it offers variable speed pumping with visual and audio feedback and also a self-clean maintenance programme.

Please Note: This is a relatively complicated and lengthy project using a large number of different techniques from multi-layer acrylic paint effects through soldering to C++ programming. This write-up is aimed at experienced crafters who may have some prior electronics or programming knowledge. In order to keep this Instructable to a reasonable length basic knowledge of many of these techniques will be assumed. There are many many well written and very accessible tutorials on this site and others that cover these basics - it may be necessary as you read this to refer to some of those. Given that this is a fairly complex project it is worth reading through the whole Instructable before starting!

Step 1: Parts & Tools

All links marked with a (*) are affiliate links. You pay the same but I get a few pence from the suplier towards more projects.

Major Parts

Electronics Parts

You only need one Arduino - if you are familiar with the Arduino environment and have an FTDI programmer then the Arduino Pro Mini is perfect for this task as it is small and quite capable. If you are new to this or don't have the programmer then go for the Nano instead. It is 1 cm longer (but will still fit!) and has the USB programmer on board so no extra hardware is needed.

Also please see the "Extra Notes" section at the end of the "Electronics & Programming" step regarding resistor values before purchase.

Miscellaneous Parts

  • White card
  • Drywall tape
  • 2x off-cuts of mountboard or greyboard at least 20cm square
  • 1x greyboard for the top panel
  • Appropriate grungy/industrial/metallic scrapbooking paper(s)
  • Brads
  • 4x M3 20mm standoffs and 4x brass/bronze M3 machine screws.

Paints & Treatments

    • Black acrylic paint
    • Variety of brown acrylic paint
    • Liquitex iridescent bronze acrylic paint
    • Metallic Gold DecoArt fluid acrylic
    • Paynes Grey DecoArt fluid acrylic
    • Quinacridrone Gold DecoArt fluid acrylic
    • Dioxazine Purple DecoArt fluid acrylic
    • Titan Buff DecoArt fluid acrylic
    • Crimson Red acrylic paint
    • Copper spray paint
    • Gold spray paint
    • Gold gilding wax
    • Table salt


    • Assortment of paint brushes
    • Scissors
    • Craft knives
    • Trimmer
    • Cutting mat
    • Glass mat
    • Cocktail sticks
    • Heat tool
    • Glues (tacky glue, hot glue, silicone dimensional adhesive)
    • Soldering Iron, solder and connecting wire
    • Various grades of sandpaper
    • Computer with a USB port and printer
    • Mini USB cable or FTDI programmer board (depending which Arduino you purchased)
    • Die cutting machine..
    • ...and a variety of steampunk/industrial embossing folders (the ones used here were by Tim Holtz but any you have will work)
    • Appropriate stamps for the inside of the lid - I used this one by Indigo Blu

    Step 2: Custom Laser Cutting

    During the making of this project the customer laser cutting came at various stages but due to the lead time of most commercial services it is best to set this in motion as early as possible unless you happen to have your own powerful laser cutter.

    The process of ordering custom laser cut parts will depend very much on the company you use and to some extent that will be dictated by where you live due to postage costs. All the parts used here were cut by Calico Craft Parts in the UK.

    There are three separate pieces of custom work in this project: the lettering on the front, the small heart on the front, and the control panel on the inside.

    For the front piece I sent the wording, font details and a graphic of the heart by email and the letters and heart were cut and posted to me. The control panel was more complex as all the holes had to be the correct size to mount the switches through so I designed it in Inkscape and sent the svg file for cutting. In both cases the work took about three to four days including delivery.

    The svg file is attached (green lines are for cutting and red for engraving) however for it to work properly the correct font must also be installed on your system. All the lettering on both pieces uses the Steamwreck font.

    Step 3: The Heart

    The heart was originally a Halloween decoration that I thought would provide a good base.

    Start by painting the entire heart with crimson red acrylic paint to start the darkening process. Once this layer is dry make a loose wash of dioxazine purple and paint this over the whole heart. You want this to be quite loose so that it pools in all of the crevices of the heart. Repeat this wash until you get the darkness you desire.

    Mix a little of the crimson red with a small amount titan buff to create a slightly lighter tone (if you end up with pink then you've added too much titan buff. Use this colour to paint the protruding veins and arteries (this may take more than one coat to properly cover.

    Add a little more titan buff to the colour you have to make it lighter again (we are looking to create the fatty deposits typically found around heart veins/arteries. Normally they would be more of a yellow/white colour but that would have been too intense for this project). Paint a little of this in the areas adjoining the veins, whilst still wet smudge with your finger to diffuse the colour.

    Paint inside the tube sections with some black acrylic to look like coagulated blood

    Using a very light touch add a little of the gilding wax to the surface of the heart. You barely want to be able to see it.

    Step 4: The Box


    Begin by removing the hinges and catch, set these aside in a safe place for step 8. Using some fine grit sandpaper smooth any rough edges if required.

    In what will become the top drill two holes to mount the cable glands (these will represent the connections that would go to the patient's body). They should be centred along the width of the box and set two thirds of the way down the inside. While busy with the drill make the necessary mounting holes for the handle of your choice on the side which had the catch fitted. If need be cut the mounting screws supplied with the handle down to size.

    With the first piece of mountboard/greyboard cut 5 strips 20mm tall and as wide as the width (narrowest dimension) of the inside of the box.

    Cut two pieces 20mm square and trim twice the thickness of the board of one side of each. Cut two further pieces 20mm wide by 85mm long and again trim twice the thickness of the board from on short side of each.

    Place the two halves of the box next to each other with the hinge sides together with the lid to the left and the base to the right. Place one of the long pieces of board against the inside of the edge nearest to you on both the sides of the box touching the base of each and glue it to the edge. In the lid place the longer small pieces either side of this against the long edges of the inside and stick them in place also. Finish the lid for this stage by attaching a long piece across the top of these two to form a square in the bottom third (or so) of the lid.

    Working on the base now use the smallest pieces (longest side up) at each end of the first strip fitted and then with one of the remaining two long ones punch a semi circle in the middle of one of the long sides (to later feed the wires through) and glue it with the hole downwards into the box. Again you should have made a frame 20mm deep along the edge of the box.

    With the last long piece (which will form the top of this little box section in step 8) make two holes in one end about an inch or so apart for the two headphone style sockets to pass through.


    The outside of the box, inside edges of the top and all of the inside of the base are decorated using techniques based on Andy Skinner's Book Of Secrets technique. Because this is a paid for workshop I am not going to reproduce the full instructions here - you can get a good idea by watching the video on that link. I've provided a summary here and some pictures. Each surface is covered with small overlapping pieces of plain card, embossed card, drywall tape and other textural elements. All of this (and the edges) are then painted with black acrylic (two coats may be necessary as it needs to be a full and even covering). Any un-textured surfaces should then be stippled with the black acrylic. A selection of browns and bronze paints are then dry brushed over the texture until the desired effect is achieved.

    This effect should be repeated on the small remaining divider piece.

    For the outside of the lid a number of laser cut embellishments were added before the black acrylic was applied and these appear as part of the texture. A number of embellishments were used inside the base of the box but these are gilded and added after the book of secrets technique was completed to give a brighter look - these also serve to reflect the light from the LEDs which will be hidden behind the heart.

    Once dry the handle and cable glands can be fitted through the holes drilled earlier. The top edge of the lid was finished with a small brass effect plate with a serial number and barcode - this was purchased as an embellishment.

    Lastly for this section decorate the top section of the inside of the lid. I laid in a piece of scapbook paper cut to size and then added a further piece using foam tape for dimension. That further piece consists of a background and the left hand image which were adapted from images found on the internet and printed as a single piece and then a stamp added at the right hand side. This piece is glued to a piece of mountboard cut to size. It is finished off with screw head decorative brads in each corner. This section could just as easily be used for operating instructions or diagrams - let your creativity loose. Leave the bottom section blank as this will house the electronics.

    Step 5: Front Plaque & Control Panel

    Front plaque

    Whilst the front panel and the control panel are both "faux brass" they were created very differently to reflect that the one on the outside would appear much more weathered than the one safely protected inside.

    For the front panel take the third piece of greyboard the size you wish it to be and place a small greyboard circle in each corner to represent the bolts/rivets holding it in place. Paint it with DecoArt metallic gold fluid acrylic paint mixed with the a little Quinacridrone gold to give it the rosy tint of brass. Once this is dry the panel can be weathered with a series of washes of paynes grey with the application of a little kitchen salt to vary the way in which it pools and dries. This is a common technique for which there are a number of tutorials available if you are unsure of the detail.

    The heart in the centre is the laser cut one from the previous step. It has been painted in a variety of pinks to highlight the laser engraved anatomical detail.

    Lastly the laser cut letters are applied individually with tweezers and tacky glue and then the tops painted gold.

    Control Panel

    First test fit the switches, sockets and LEDs to ensure that everything fits in the correct position and firmly. It is much easier to change and re-order now than to try and adapt after painting.

    Once happy with the fit of the components and the fit in position in the box, spray the panel with a good even coat of metallic gold paint. A second coat may be necessary if the MDF absorbs too much. Keep the coats light though to avoid a build up of paint the laser etching. While you have the spray paint out, take the opportunity to paint the LED bezels and the knobs too if desired.

    Once the gold pain is dry apply a wash of paynes grey allowing this to pool in the etching and dab off as much as possible from the surface. This will highlight the markings.

    Step 6: Hardware

    Unfortunately there are no work in progress images for this section, but the end result can be seen in the image attached.

    Three pieces of hardware were used in this project but exactly what is used and where is purely a matter of taste.

    All three pieces are made from 10mm flexible conduit. The lower one is cut in half lengthways and left black so as to be less obvious. It hides the cables that power the LEDs behind the heart.

    The upper two were somewhat more complex. Each was cut to size and then heated to allow shaping, the exact shape depends on where you sit your heart. They were lightly spray painted with metallic copper paint which was rubbed back when dry to give a heavily worn effect. This was then lightly over dusted with metallic gold spray paint and again rubbed back once dry. This gave a sort of dirty brass effect. One end of each was then slit slightly and folded over on itself to allow it to be glued into a deep M10 nut with a brassy nickel finish.

    The top end of each was then glued to a brass electrical fitting with the correct thread to fit the cable glands. These were quite difficult to source but a small independent ironmongers was able to provide a suitable fitment in the end.

    Finally the end of the pipe inside the M10 nut was filled with hot glue and a cocktail stick embedded into it with the sharp end pointing out. This is to allow the pipe to be secured to the soft stuffed latex heart later.

    Step 7: Electronics & Programming


    The electonics in this project consist of two sections. The LEDs mounted behind the heart in the deep half of the box on the right hand side, and the control panel mounted in the lid which also houses the "brain" of the operation (an Arduino micro controller). These two are linked with two wires from one side to the other by way of 3.5mm TRS stereo headphone plugs and sockets. Sockets mounted in each side are connected with short wires each terminated with a 3.5mm TRS stereo headphone plug. The plug to plug leads are connected straight through (tip to tip, ring to ring, sleeve to sleeve).

    The easiest place to begin is with the LEDs for the heart. Take two pieces of mountboard/greyboard 20mm square and glue them together. Place a clear red LED in the middle of each straight side with the legs either side of the square and fix in place with a tiny drop of glue. All the long legs need to be one side and all the short legs the other.

    Solder all the short legs together and attach and length of wire to the join. On the other side bend the legs so they don't touch each other and solder a length of wire to each leg. Hold the square with a corner pointing up and all the wires hanging down. Label the far end of each wire "top left", "top right", "bottom left", "bottom right" and "common" and then wrap the square in electrical tape to ensure the leads don't move and touch each other. Set this aside until final assembly.

    Now to the control panel. I used a small off-cut of proto-board to make the connections easier and provide somewhere to mount the resistors for the LEDs, variable resistor and buzzer.

    Begin by attaching the rotary switches, power socket, TRS (headphone) sockets and LED holders to the pre-prepared control panel. Now make the resistor ladder (R10-R14) around switch S2. Simply connect each pin to the next with a resistor as you go round.

    Now make up the rest of the circuit as per the schematic above. I placed the variable resistor, 8 LED resistors (note R6 is higher than the others, to try and mute the naturally brighter blue LED to the same brightness as the much weaker yellow and green ones) and the buzzer on the proto-board off-cut with wires to each terminal of each and then fixed this down with blutak to the back of the control panel. I then systematically connected the flying leads from this board to all the sockets, switches and LEDs cutting to length and finishing with heat shrink where required.

    Lastly fit the programmed Arduino (see below) and attach the remaining leads from the proto-board and wires to the rotary switches as required.

    It is a good idea to use long leads with labels when you connect the first end of a wire and only trim to length when you connect the other end. This prevents mis-connections.

    For the leads, it is possible to use commercial products (the jack to jack leads can be purchased for connecting an MP3 player to a car radio and it is possible also to purchase USB to barrel jack leads, just make sure the centre of the barrel plug is positive!). However to keep with the colour scheme and style of the project I made three connecting leads from a single 1m braided USB charger lead. For the power lead I left the USB connector on and used 50cm of the wire terminating the red and black(*) wires in a barrel jack. For the leads to connect the left and right sides I cut off the USB mini connector and split the remaining wire in half attaching a jack to each end. I used the ground wire in the lead for ground and the other thicker power wire for the tip. For the ring I used the two thinnerdata wires in parallel.

    (*) Note that many cheap USB cables hold no regard for traditional colour codes. It is best to check which wire is connected to what before soldering.

    Lastly a note about the small potentiometer (variable resistor). It's purpose is to set the maximum brightness of the LEDs around the heard (they vary in brightness depending on the animation in progress). It can only be adjusted before switch on - any changes made while the unit is running will only be noticed after the unit is powered off and on again.


    If you have never programmed an Arduino micro controller board before then head over to the official getting started guide and follow the instructions. When you get to the point of creating your program (often known as a sketch) then simply delete everything in the example and replace if with the contents of the .ino file attached here. Then continue with the instructions to upload it to the board. Once the code is uploaded it will stay on the board for ever - there is no need to keep it connected to your computer.

    The code itself is relatively straight forward and for those interested in how it works every line of it is accompanied with a comment explaining how it works.

    It is possible to change some things about the code and these changes can be made in lines 24 to 44 of the attached file. Each line has a comment advising what it controls. If you change anything then you will need to upload the code to the Arduino again before it will take effect. Under normal circumstances line 35 should not be touched, but it may be necessary to adjust these values - to do so follow the instructions below for what to do if the speed switch gives unexpected results.

    Depending on the accuracy of the resistors used at R10-R14 the speed selector may give strange results - some modes may not work or be in the wrong order, if this happens follow these instructions to tune the values at line 35 of the code.

    1. With the Arduino in circuit with the electronics but no external power connected...
    2. Uncomment lines 261-268 re-compile and re-upload the code.
    3. Launch the Arduino Serial Monitor and set the "baud rate" to "115200".
    4. Set the speed switch to "Off" and the power switch to run.
    5. Press the reset button on the Arduino.
    6. The serial monitor will be full of scrolling text, from this text write down the value of "This Reading" (it may be changing a little, just choose the one appearing most often).
    7. Move the speed switch to the next setting and repeat step 6.
    8. Repeat steps 6 and 7 until you have a value for each speed.
    9. Edit line 35 so that the 5 numbers between the {} are the 5 numbers you wrote down in the order you wrote them down.
    10. Comment out lines 261-268, re-compile the code and re-upload (this is necessary as these lines significantly delay operations and affect the speed of the animations).

    Extra Notes

    There are a few things worth pointing out here:

    • The values of R10-R14 are not critical. So long as they are equal and add up somewhere between ~10kOhm and ~100kOhm. So if you have 5 resistors of the same value then use those rather than buy 2k ones just for this.
    • The value of R9 is similarly not critical. Anywhere between ~10kOhm and ~100kOhm should do the trick. For those with the 3 figure numbers that's anything ending with a 3 or a 104.
    • It is, of course, possible to change the code to do anything you wish and similarly to amend the pin assignments (these are at the top of the code) however be aware that the buzzer uses the Arduino tone() function and the animations are dependent on PWM. Thus it isn't possible to have animated LEDs and the buzzer on pins that belong to the same timer. So with the buzzer on pin 3 (as per the schematic) pin 11 can't be used for PWM as the tone() function disturbs the frequency on that pin also.

    Step 8: Final Assembly

    In this step we'll bring everything together. By now you should have:

    • Box lid decorated on the outside and the inside with the bottom third of the inside blank.
    • Plaque for the front.
    • Box body decorated inside and out with a handle attached and two cable glands in the top.
    • Reserved hinges and catch from taking the box apart.
    • Decorated heart.
    • Painted pipes.
    • Assembled and programmed control module.
    • Small LED module.
    • Thin strip of decorated mount board with two headphone sockets.

    Working on the body of the box portrait in front of you with the cable glands at the top, place the small square of LEDs about two thirds of the way up the inside centred left to right and glue in place with hot glue or silicone dimensional adhesive with the wires pointing down (away from the glands). Feed the wires through the small hold in the top of the divider in the box and pull them tight. Cover the wires with the half pipe and glue this down.

    Taking note of the which of the 5 wires is which, trim to length and solder to the sockets making sure to follow the schematic - the order of the LEDs is crucial for the animations to look right. (Although this can be adjusted in the code if a mistake is made).

    Pack the remainder of the small section with some high density foam or similar (to take the load when the plugs are pushed in) and glue the strip in place to complete the box section at the bottom.

    Next attach the prepared pipes with to the glands leaving the ends with bolts and cocktail sticks free. Attach the heart to the small square containing the LEDs with a good amount of silicone dimensional adhesive (being careful not to get any on the LEDs or in the way of the light coming from them) and leave pressed down for 24 hours until the glue has firmly set.

    Fill the nuts with glue and then attach to the heart piercing it with the cocktail sticks to ensure everything stays aligned.

    Meanwhile turning to the lid, attach the 4 standoffs in the corners of the space at the bottom with the flat edges of the hexagonal body against the long edges of the space. Tack them in place and offer up the control panel to ensure the holes line up. Once the holes line up glue in place with a good amount of hot glue. Once dry screw the control panel in place being careful not to trap any wires.

    Re-attach the box halves with the hinges saved from when it was dis-mantled and re-attach the catch.

    Lastly stick the plaque to the front with a good amount of glue.

    Halloween Contest 2018

    Second Prize in the
    Halloween Contest 2018