Cloth Game Controller
For Personal Project I built, and attached code to, a game controller made of cloth which functions as a working keyboard by pressing a finger on thin metal buttons. These buttons are connected with conductive thread to a FLORA board in the center of the project. The FLORA is connected to a computer through a USB cable. The project can be used to play many different games by slightly altering the code and changing the functionality of each button on the controller. I used my project to play Minecraft, however, any game is possible.
This is the daily documentation of all the work on my project:
This is a list of all the materials that I used for my project and where I bought them:
This is a general document regarding my entire project including design specifications:
This is the procedure for my entire project:
Iron a small piece of double-sided iron-on interfacing to a piece of woven conductive fabric.
I like this mini iron for better control with small pieces.
Peel off the paper backing and cut out the shapes necessary for your controller buttons - refer to your pattern! You'll have four directional buttons, two option buttons, and two round action buttons.
If you haven't already, peel the backing from the interfacing and then iron the pieces of conductive fabric to some grey fuzzy fabric. Don't place them too close to the edge of your fabric, or you won't have anything to grip onto with your embroidery hoop in the next steps.
Place the Flora on the fabric, and following the pattern use a water-soluble embroidery marker to sketch the traces that will connect the Flora pads to the conductive fabric buttons.
It's important that these traces are as far apart from each other as possible so they don't accidentally trigger each other's capacitive touch sensing. We've tested this particular pattern and it works great; we also made previous versions with traces closer together that did not work well, so keep that in mind if you're designing your own button layout.
Embroider connections that follow the lines you just drew, wrapping several times around the Flora pads and into the conductive fabric, then knot, seal, and cut the thread at the back.
Remove the circuit from the embroidery hoop and iron out any creases.
Blot the blue traces with a damp paper towel to make it disappear.
Copy code into Arduino and test your circuit. It should type keypresses into the editor. If your thread traces are too close together, the buttons could interfere with each other, so be sure to follow the pattern for this project and keep the traces from coming unnecessarily close together! Once you can verify the circuit works its time to turn it into a 3D plush toy.
Cut out one rectangle for the back of the plushie according to the pattern, and two of each side pieces. We'll cut the front panel in a later step. If your fabric has a nap (soft in one direction and rough the opposite way), be sure to observe it and cut your pieces accordingly.
Use the black overlay template to cut a piece of black felt or other fuzzy fabric. Iron a piece of double-sided interfacing to the back of this piece and repin the pattern piece to the fabric.
Use a ruler and sharp blade to cut out the button windows. For curved corners, you can cut the straight portion of the lines with a knife and then finish off with a small pair of scissors. Felt doesn't fray and if you're using another fabric, the interfacing should help it not fray.
Before cutting the front panel, iron on the black "faceplate" piece, aligning the button windows with the conductive fabric buttons. This fabric insulates the thread traces from your hand (preventing unintended triggers) and also gives the controller that classic look.
I sandwiched in a piece of scrap fabric just big enough to cover the Flora board itself, just so it wouldn't get sticky in case I want to look at it or use it for another project.
make sure the USB port is aligned with the edge of this piece for easy connecting!
Use the front panel pattern piece (same as the back panel pattern piece) to cut off excess fabric around the circuit.
Pin the plushie side pieces together to form a rectangle, making sure the nap of the fabric all goes in the same direction (at this point it does not matter which direction, so long as there is consistency). Machine- or hand-stitch all four seams.
Lay your new rectangle out on top of the back of the plushie, and align and pin the edges, right sides together. If your fabric is especially fluffy with a strong nap, make sure the soft direction goes toward the seams you are about to sew. This will ensure that when the toy is finished, the fur will look and feel nice to the touch in a downward direction.
Stitch all four edge seams with a machine or by hand, leaving a gap on one long edge for stuffing.
Align the bottom part of the plushie to the front piece and pin around the edges, being sure the nap on the back panel matches the nap on the front panel. Stitch around all four edges and trim stray threads.
Turn the fabric shell right side out and fill with fiber fill, starting with the corners. Use a long chopstick to stuff the filling into the corners and then fill the remaining portion with small bits of stuffing at a time until it is reasonably firm and not lumpy.
Use a ladder stitch to close up the seam, and your plush controller is complete.
This is from: https://learn.adafruit.com/plush-game-controller
These are some videos of me testing different aspects of my project using test code:
This is a video of me cutting out my prototype for my project:
This is a video of my project working as intended:
Here is a picture of my completed project:
Here is a video of me using my completed project to play Minecraft:
In my code I switched the buttons of the left to w,a,s,d instead of the arrow keys to correspond with the controls from Minecraft.
Here is the QR link to my project:
Final summary of my project:
Through building this project I learned that even tasks that are seemingly simple can take a lot of time. For example, I carelessly assumed that sewing together the buttons to the FLORA would take around half an hour. I did have some issues along the way, such as losing the needle and the thread coming undone, and in total the sewing took me three hours. I had never sewed before so this presented a new challenge of both learning to sew and sewing in a short time frame. I also assuming that ironing together all the parts of my project would be incredibly easy because in the video describing my project on adafruit the ironing looked simple and quick. However, at first pieces stuck to my iron as I forgot to fill the iron with water. I learned a lot about the properties and uses of conductive thread and was surprised at how well it connected to the FLORA simply by being wrapped around it. By simply pressing my finger on the buttons the FLORA instantly relays the signal to the computer using the code. The code was very straightforward and also I had to do was download one library to Arduino for the code to work. I overcame all the problems with creating my project and was able to successfully complete my project by the deadline.
After completing a large project I learned that the process is much more difficult than it seems. Almost always original plans do not end up being the final project. I had planned on having my project being more 3D. However the stitching prevented this from happening. Always I had projected a much lower cost than my final cost. However there were many materials that I did not know were necessary to have. For example I believed that I would be able to find an iron at the lab or from another teacher. However I had to bring in an iron from home. This did not increase my cost. I did have to buy iron-on adhesive to make sure that my buttons would be able to stick to the fabric to make my project. This was a material that I did not know I would need. Keeping track of materials is an aspect that seems simple and without any problems. However, with so many students sharing spaces in the lab, materials were easily misplaced or lost. I lost my needle for the sewing and there were no extra needles in the lab. I was able to find another needle thankfully. Time management is much more important than I initially realized. I thought that my project would be done weeks before the deadline and I still found myself finishing my project the day before it was due. I will now plan out dates to have key parts of projects done so deadlines do not sneak up on me anymore. Through creating my project I surprised myself with my knowledge of the code and how it would work. I was easily able to change which keyboard buttons my metal buttons would be linked to. I anticipated that Mr. Dubick would handle all of my code and I surprised myself by not needing his help with it. I also learned that if I put my mind to the task a completing something and truly focus I am able to get things done on a short deadline.
With more time to work on my project I would fill the entire project with a material like fiber fill to make it able to be held. I would also create a front for my project as you can currently see the FLORA. I asked if any teachers had extra fabric and they did not have any to spare. If I was able to fill my project with fiber fill and make it more 3D I would build a stand for it using the wood working tools available in the lab. Another student suggested building the entire project out of wood instead of fabric. I would have to use a material such as hot glue to stick pieces of my project to the wood, however I think that I could possibly make it work. I was not able to link code to start the Neopixel attached with the FLORA to show that the controller is on due to the deadline. However this is something simple that I could definitely put together quickly. Finally, I thought about connecting a bluetooth chip to my project instead of a USB to make it more portable. For now I will experiment with what I have and change the different buttons on the controller to play different games and potentially do different tasks.
This project was a success for me as it functions exactly as intended and was finished on time. I was never as concerned about the look of my project over the functionality. However I would definitely prioritize the looks over improving the functionality, as it works as a functioning keyboard simply with the press of your finger.