Touchscreen Controlled Marionette

Version 9

    We are going to have a little fun with the Intel® Galileo development board. This time around, we’ll make a simple puppet control system. We’ve put together a “running robot” marionette with a simple mechanism that uses a continuous servo. We’ll be use a touchscreen interface to control various outputs using sliders and switches.

     

    As always, you can modify the designs to suit your needs. We will teach you how to incorporate touchscreens, and make the interface necessary for controlling the Intel® Galileo Gen 2 board.

     

    Here is a video of the completed project.

     

     

     

    Just so you know, the instructions this time around are quite long. That’s due to the assembly of the marionette. I would review the assembly instructions fully before attempting to put it together. While it looks long and complicated, if you group the parts, it much simpler.

     

    So, let’s start the puppet show!


    Here is a list of items you’ll need to make this project:

     

    A-Materials----Intel-Galileo-G2.jpg

     

    Screenshot 2015-01-26 15.12.39.png

     

    • LED
    • 300 Ohm resistor
    • Continuous servo motor
    • Colored single core wires

     

    Screenshot 2015-01-26 19.19.46.png

     

     

     

     

    • Enamel wire (0.2 mm thick)
    • 4 mm MDF components - lasercut according to drawing
    • 6 mm MDF components - lasercut according to drawing
    • Plexiglas components - lasercut according to drawing

     

    Screenshot 2015-01-26 14.47.51.png

     

    • Eyehooks used in sewing (can be substituted with bent wire if needed)

     

    A-Materials---Sewing-eye-hooks.jpg

    • Fluted pins used in woodwork (6 mm x 30 mm)
    • Fishing line
    • Stiff wire
    • Wood glue
    • Hot glue sticks
    • Magnets

     

     

    Screenshot 2015-01-26 19.21.57.png

     

     

    • Business card (or any stiff paper – used as a spacer)
    • Nuts and bolts

     

    Screenshot 2015-01-26 14.48.54.png

     

    Here is a list of tools you may also use:


    • Lasercutter
    • Mallet/Hammer
    • Screwdriver
    • Soldering iron
    • Hot glue gun

     

     

     

    Screenshot 2015-01-26 19.36.30.png

     

     

    • Needlenose pliers
    • Scissors
    • Wirecutters

     

    Screenshot 2015-01-23 18.47.42.png

     

     

    Assembling the marionette and electronics housing stand:


    Sort the lasercut pieces for easier construction.

     

    Step 1.jpg

     

     

    Make rotation joints.Glue together 2 Part J rings.

    Hammer a fluted dowel into the hole until one side is flush.

    Make 4 units.

    Screenshot 2015-01-26 14.50.13.png


    Assemble lower leg.

     

    Glue Part H4, H5, and H6 together.

    Insert an eyehook into the gap.

     

    Screenshot 2015-01-26 14.50.46.png

     

    Glue Part H3, H2, and H1 to the assembly.

     

     

     

     

     

    Screenshot 2015-01-26 19.25.06.png

     

    Make the left and right lower leg (they are identical).

    Assemble upper leg. Cut small rectangles from a business card to be used as a spacer.

    Glue a paper spacer between Part G1 and G2.


    Screenshot 2015-01-26 14.51.30.png

     

     

    Glue Part G3 to the assembly.

    Screenshot 2015-01-23 18.21.14.png

    Insert a rotation joint (from Step 2).

    Step-4d.jpg

    Glue Part G4 and G5 to the assembly.

    Screenshot 2015-01-23 18.22.16.png

    Glue a paper spacer to the assembly.

    Hammer a fluted dowel into the hole until one side is flush.

    Attach the lower leg assembly (from Step 3).


    Screenshot 2015-01-26 14.52.15.png

     

     

    Glue and gently hammer Part G6 to assembly to complete the leg. The larger hole should be over the rotation joint so that it moves freely.

    Screenshot 2015-01-23 18.23.10.png

    Make the opposite leg (they are NOT identical, but rather a reflected assembly).

    Step-4j.jpg

     

     

    Assemble lower arm.

     

     

    It is very important that Part B1 and B6 are placed correctly so that the joint is able to move correctly. Though not shown in this instruction, it is suggested that you wait until after Step 6 to glue these pieces on.

    Step-5a.jpg

    Glue Part B1, B2, and B3 together.

    Insert an eyehook into the gap.

     

    Screenshot 2015-01-26 14.54.47.png

     

     

     

    Glue Part B4, B5, and B6 to the assembly.

     

    Screenshot 2015-01-23 18.24.04.png

     

    Make the left and right lower arm (they are identical). Note: The arm on the right side of the image is INCORRECT. As stated earlier, if the parts are glued this way, the rotation of the

    arm is limited and will not work properly. We fixed this later in the instruction.

     

    Step-5e.jpg

     

     

     

     

    Assemble upper arm.

     

    Glue a paper spacer between part A6 and A5.

     

    Screenshot 2015-01-26 19.30.01.png

     

     

     

     

    Glue Part A4 to the assembly.

    Insert a rotation joint (from Step 2).

    Glue part A3 and A2 to the assembly.


    Screenshot 2015-01-26 14.55.43.png

     

    Hammer a fluted dowel into the hole until one side is flush.

    Glue a paper spacer to the assembly.

     

    Screenshot 2015-01-26 14.56.24.png

     

    Attach the lower arm Assembly (from Step 5).

    Note: It is important to check the rotation of the arm at this point. It should move similar to your own arm.

    At this point, if you have not glued on Part B1 and B6, do so now. Look final image in this step to ensure this is done correctly.

     

    Glue and gently hammer Part A1 to assembly to complete the arm. The larger hole should be over the rotation joint so that it moves freely.

     

     

    Screenshot 2015-01-26 14.57.05.png

     

     

    Make the opposite arm (they are NOT identical, but rather a reflected assembly).

    Note: In this picture, the arm on the right side of the image is incorrect. The eyehook should be placed on the other side. We corrected this in later images.

     

     

     

     

    Assemble head.

    Step-7a-1.jpg

    Glue Part I4 and I5 together.

    Glue on Plexiglas eye covers.

    Glue Part I3, I2, and I1 to the assembly.

    Insert fluted dowel into base of the head.

     

    Screenshot 2015-01-26 19.33.34.png

     

     

     

     

    Note: If you want to include an LED in the head, do not glue on Part I1 until you have installed one.

     

     

     

     

    Assemble chest frame.

     

    Step-8a-1.jpg

     

    Slot together Part K2, K5, K6, and K9. (Note the orientation of Part K5 and K6)

    Insert Part K10 and K11.

    Slide on Part K12.


    Place Part K1, K4 and K7. (Note the orientation of the parts)

     

    Screenshot 2015-01-23 18.28.46.png

     

    Place the Plexiglas heart cover.

     

    Step-8e.jpg

     

    Hot glue Part K8 onto the assembly.

     

    Screenshot 2015-01-23 18.29.19.png

     

     

     

    Assemble the body parts.

     

    Gently the arms, legs, and head onto the chest frame.

    Screenshot 2015-01-23 18.35.03.png

     

     

    Assemble the electronics housing.

     

    Insert nuts into the slots provided in Part L4, L5, L6, and L7.

    Step-10a.jpg

     

    Slot Part L4, L5, and L6 into L3 and secure with bolts.

     

    Screenshot 2015-01-23 18.30.38.png

     

     

     

    Assemble the stand supports.

     

    Bolt together Part L1 and L8.

    Bolt together Part L2 and L9.

    Attach those supports to the electronics housing.

    Attach Part L7 between the supports.

     

     

     

    Screenshot 2015-01-26 15.01.02.png

     

     

     

     

     

    Assemble the turning mechanism.

     

    Glue together Part M1 and M2 to make a large wheel.

    Hammer a fluted dowel into one hole.

    Hammer another fluted dowel into center hole on electronics housing.

    Attach the continuous servo motor from the back. (Note: Do not insert it through the hole, as this will place the wheel too far from the face of the housing)

    Insert the turning arm into the large wheel.

    Attach the large wheel to the continuous servo motor.

     

     

    Screenshot 2015-01-26 15.02.33.png

     

     

     

    Hammer a fluted dowel into one hole of Part M3.

    Push down 2 Part J (rings) onto the dowel on the electronics housing.

    Place on Part M3 and secure with Part J (ring).

    Push down Part J (ring) onto the dowel on the large wheel.

    Use Part M4 to connect Part M3 dowel and the large wheel dowel and secure with Part J (ring).

     

    Screenshot 2015-01-26 15.03.59.png

     

     

     

     

    Secure marionette to electronics housing.

     

    Cut two long pieces of stiff wire and weave them through the three holes on the back of the marionette.

    Slide the wires through Part K3 and secure the wires to the bottom of the electronics housing.

    Adjust the wires until the marionette is positioned under the turning mechanism.

     

    Screenshot 2015-01-26 16.04.17.png

     

     

     

     

     

    Note: At this time, you can attach magnets to the back panel to make it easily removable. The same can be done with the head if not already glued into place.

     

     

     

    Attach the marionette to the turning mechanism.

     

     

    Turn the large wheel until the armature reaches the highest point.

    Raise the arm opposite it and secure it with fishing line to the armature.

    Raise the leg on the same side as the raised armature and secure with fishing line.

    Turn the large wheel until the armature reaches the highest point on the other side.

    Repeat steps 14b and 14c with the remaining limbs.

     

    Screenshot 2015-01-26 15.06.23.png

     

     

     

     

     

     

     

    Solder the electronics.

     

    Use the schematic to solder the electronic components together.

     

     

    Step 15.jpg

     

     

    Attaching the electronics to the electronics housing.

     

    Place the Galileo Gen 2 in the housing.

    Attach the Protoshield.

    Attach the touchscreen.

    Attach the motor.

    Insert the LED into the back of the marionette.

     

     

    Screenshot 2015-01-26 15.07.47.png

     

     

     

     

    Whew! We’re done with that part! Now lets move on to the preparing the electronics.

     

     

    Programming Galileo

    Make sure you have the Arduino IDE from Intel properly installed.

    If you haven’t done that yet, go through the “Getting Started with Intel Galileo Gen 2” guide https://communities.intel.com/docs/DOC-22872

     

     

    Download the sketch.

    Look for TouchScreenMarionette from the attachment and place it in the sketchbook folder.

     

     

    Download the libraries. There’re 3 libraries used in this example:

    Adafruit GFX

    Adafruit ILI9341

    Adafruit TouchScreen.

     

    You can find the libraries in the attachment. The ILI9341 library and Adafruit TouchScreen library are specially modified  to fit for Intel Galileo.

     

    Install the libraries.

    Place the library folders under hardware/x86/libraries/ in your Intel Arduino IDE installation. They can be as well put under sketchbook folder/libraries, but the libraries specifically made for Galileo may confuse regular Arduino installations.

     

     

    How to run the robot

     

    Plug in the power supply.

     

    Wait until it says “Calibrating...” on the TFT screen.

     

    Perform the calibration as directed on the screen by pressing the white rectangle on the corners. (See video.)

     

    The interface will appear once calibration is complete. There are three different components: a slider, a button, and a checkbox.

    The Slider is for adjusting the servo speed (equivalent to 0 to 180 as servo.write()).

    The button is for turning on/off the servo.

    The checkbox is for turning on/off the LED inside the robot.

     

     

    The User Interface

    A simple UI library is built to work with the touch screen. Library files can be found under in the sketch folder, util.h and util.cpp. Looking into the library files will give you an idea about how to customize the components or how to make your own components.

     

    The size of all three components - slider, button and checkbox - can be configured. The initialization function, begin(), accepts four parameters: x, y, width, height. The width and height parameter has default values, which you can override by passing different values.