For my iteration assignment I decided to revisit the arduino Input/Output project. Previously I had used a current sensor to measure the current through an LED to determine the right resistor needed for a particular brightness.
I had used these sensors in the past, so I wanted to try a project with a sensor I had never used before. One area I had been interested in was biometrics and I had seen some of the cheaper options for pulse or muscle sensors that were on the market and figured I could explore those. The sensor I chose was the MyoWare muscle sensor, my plan was to use it to create a sort of feedback mechanism to help combat stress by detecting if one was clenching their hands which can be a sign of stress. The feedback would be provided by a group of vibrating motors where a slight innervation of the muscle fibers would cause a “low” reading and activate a single motor, a medium innervation would activate two, and a strong innervation would activate all three.
The setup was fairly straight forward, the sensor only has 3 pins to connect, Vcc, Gnd, and Signal. The sensor operates off of an analog signal so it can be tested with the example code included with the Arduino IDE.
No clench, numbers between ~450-460
Light clench numbers ~470-480
Medium clench, numbers ~490-500
Hard Clench, numbers read ~520-530
After I prototyped it on a breadboard, I decided to try and solder a protoboard together for it and also use an Arduino Micro in the hopes that I would get to actually make it a wearable device.
The first thing I noticed was that between applications of the sensors, the numbers had a tendency to change, so the sensor had to be calibrated before each use. Then after a few uses, the sensor’s ability to detect kept worsening. I bought a pack of 50 electrode pads and used nearly all of them placing and replacing the electrodes to try and get a reading. Eventually, the sensor stopped working and I had to halt all progress on the project.
Before that happened, I was able to at least get a video of the setup working as intended.
My reflection on this project was actually fairly frustrating. The sensitivity and erratic nature of the sensor meant I had a hard time getting very reproducible results. furthermore, the sensors seem to be very picky about where on the muscle bundles you place the sensor. I am hoping this is just due to the sensor being defective, however if I were to use biometrics again, I may need to use one of the more stable sensors such as the armband.
Failure aside, it was definitely good to have worked with a different kind of sensor that actually uses the sensing of muscle action potentials to control electronics. wearing the sensor around the lab or my workshop did kind of make me feel a slight bit bionic.
After last class where we worked with arduinos and sensors, we then moved to using servos with the arduino to make things move. The in-class assignment was to use a single servo to animate something. My thought was to use the materials at hand to create a kind of “boogie bot”.
The idea was the servo would actuate a hinge at about waist-level of a stick-figure-ish mock-up and effectively have the character sway their hips back and forth. Draped with enough fabric, and the stick-figure look would be lost. That was the hope at least, in reality, a lack of large pieces of fabric meant I could not get the coverage I wanted, added to the fact that I made a major mistake in the beginning I did not catch until later which was that instead of creating the 3 articulation points I had planned, I instead created 4, I cut 3 sticks, not 2, so I had too much movement, and not in the places I needed it. The idea sort of worked but was overall a spectacular failure which I did not feel right taking any pictures of as I am sure Emily has it seared into her mind. Let’s say nothing more about it other than I was run over by the “struggle bus”…beep….beep…
To try and lick my wounds from the in-class assignment, I decided to try for something challenging and ambitious, and at the same time make it season appropriate. My plan was to make a crawling severed hand. The dressing would be easy to accomplish as I’d use a large work glove where I could hide the electronics. As far as how to actually make the hand crawl, I figured I’d use a sort of walking motion of two fingers to propel the hand. In addition, I figured I would take a page out of Nature’s book and design the fingers in a similar fashion to how a human hand actually works. This would involve first creating proximal and distal phalanges for my hand which I would create out of plywood. The articulation would be accomplished by using miniature bolts with washers and bolts. The washers would act as a spacer and also articulating surface to make the movement easier between two pieces of plywood. From there, the tendons would be substituted for fishing line complete with tendon sheaths (also made from fishing line). I would anchor the line to similar positions as they exist on the human hand, that being at the tip of each phalanx running under the “tendon sheaths” and secured to the arms of the servos which would be lined up with the phalanges to ensure extraneous torque would not be introduced. In order to insure that flexion and extension could be created predictably, I would run both the anterior as well as posterior tendons. Hot glue would keep everything together, and I would need to round out any sharp edges to help the assembly slide into the glove. For the wrist, I would use a short cardboard tube with a platform glued inside to provide a surface for the electronics as well as give the wrist a arm-like shape. As a first pass, I only articulated one finger to see if the process would work. The build was a bit arduous especially when it came to maintaining tension on the lines to allow for proper articulation. However, it did have some life:
It seemed to have some promise, and I figured with having the other finger to provide support as well as the grip of the leather fingers of the glove it would move. The code changes would be a mirror of the same steps I had for the single finger. So I sallied forth and built out the second finger as well as the code for it, and the result was as follows:
A little tweaking of the movements was in order, but otherwise, it was starting to look like it could walk. placed in the glove finally with the “arm” as well as another arduino shield to make the connections much cleaner, and I had this…
Ok, so I won’t be going to work for the imagineers at Disney anytime soon. The biggest drawback I found was that the servos are not very powerful, at least not for the application I used. It kind of shows you the kinds of crazy forces your own hands go through to do something as simple as typing this post on a keyboard. Add a glove to all of that, and I’m pretty sure I can hear the servos crying trying to move inside there. The glove does move, albeit at a glacial pace and the design of the fingers actually makes it seem like there is a skeletal hand inside the glove every time they print against the fabric. That being said it looked creepy enough that my girlfriend threatened to kick it if she sees it coming for her. I wonder if using either a stiff “tendon” instead of fishing line would make the movement stronger as well and allow more transfer of force as well as make it easier to calibrate. Otherwise, perhaps just some stronger servos are in order can can really move the heavy fabric of the glove and allow the fingers to flex more.
For my the arduino assignment in class, we first worked on creating a simple blink circuit. This was accomplished by connecting an LED to a digital pin, and ground (but through a resistor of course). This allowed us to set the pin we chose to HIGH to send 5v to the LED, and set it to LOW to send 0v (turn it off). By doing this in the loop portion of the arduino sketch and adding a delay, we were able to get the LED to blink at whatever frequency we wanted. From there we worked on a touch sensor. This was done by taking advantage of the resistance of the human body. We used essentially the same setup as above, but added a resistor between to additional digital (PWM) pins with an alligator clip off one of the legs going to some aluminum foil. The code was then changed to poll the “sensor” and get a value back from the sensor. From here we would set our threshold by examining the serial monitor to see what value the sensor was returning when we were or were not touching the foil. Once we set our threshold, we could turn the LED on and off by touching the foil.
For the take-home project portion, I initially wanted to use the ultrasonic sensor to create an ultrasonic tape measure. However, I was unable to get the sensor to detect any distance other than 1cm (or a raw sensor read of 64). This told me I may have had a faulty ultrasonic sensor in my kit (kit 6). I tried with different wires, and even a different arduino, and nothing helped. From here I decided to dive into my own personal spare parts bin. While I do not do much sensing in my personal projects, I did have some INA219 high-side current sensors I had purchased from adafruit a while back for a project.
I decided to use these along with the LCD display to create an LED resistor finder. The idea was I would use the current sensor to measure the current flowing through the LED-resistor pair, and display that on the LCD display and warn when it was in a dangerous range (> 20mA) and then would scold when in an absurd range (>100mA).
The reason behind this was due to when we look for what resistor values to use for LED circuits, we usually calculate it based on theoretical values. This tends to work well when you have a theoretical value to reach, such as 20mA. However, if what you are instead looking for is a specific brightness or a specific look, seeing is believing. So being able to see and hotswap resistors until you get the look you need is sometimes more ideal. Furthermore, since electrical components are not perfect, they have a specific tolerance that means the theoretical values doesn’t all match up, although they are usually good enough. However, if for whatever reason, you have stringent limits or tolerances for current draw of a circuit, a tool like this could help you custom match LED’s to resistors to get the exact real-world current draw you need instead of a theoretical draw that would be within a percentage of the actual draw.
With that, the first course of action was to prototype it on the breadboard to make sure all components worked as expected:
It seemed a rousing success! For further testing as well as to make it so I did not have to source and swap resistors, I connected two terminals of a potentiometer to have it function like a variable resistor. The code was mainly based from the Adafruit INA219 library examples as getting the INA219 setup is about the most involved part since you can (and I did) set a different calibration point to make the readings more precise. That is really just an extra line of code though. From there, the next thing to interface with was the LCD display. This one proved to be a bit more involved since all examples found for how to use the library did not seem to work. I suspected this had to do with the I2C addressing. I liked the fact that both my input and output talked over an I2C bus as this makes hooking up components much easier and was also something I had experience with already. What I had noticed was that all online examples of the I2C 16×2 LCD used the same I2C bus address (0x27). However, I knew by working with the INA219’s before that the address is not fixed, and a lot of devices let you change the address so you can avoid conflicts with other devices. So I first had to use the I2C bus scanner sketch for arduinos:
I2C bus scanner code
Full sketch code for LED Resistor Finder
Once I found the right bus address for the LCD display, the rest worked out fairly easily.
From there, I decided that since I had a spare arduino ProtoShield I had never used, I would use this as an opportunity to challenge myself. So I laid out my original design on the new ProtoShield then soldered everything in. Where possible, I used headers so I did not have to commit my INA219 to a life of living on this protoshield (until I needed it again and de-soldered it).
This worked quite the treat. it cleaned up the tangle of wires as now the only wires needed were the wires going to the LCD display. I show an extra 2 wires just because I designed it to either use the arduino’s 5v rails to power the LED, or you can instead provide your own power source. So those wires are just jumpers so that it can use the arduino 5v supply.
And just like that, I created my own shield for an arduino! I suppose the only thing I could do to improve it would be to actually create a case for it, or add some functionality like being able to change precision without needing to reflash the arduino. Here is a video of it in operation, my potentiometer is very cheap and janky so it is hard to slowly rise the brightness, it just kinda goes from nothing to BAM!
Whatever the name, we’ll get to that in a bit. Our foray into textiles started with learning how to use the sewing machines, how to turn using them, and how to do applique. The results were as follows:
From there we started on making a drawstring bag by following a pattern. With the help of the illustrious Emilie and Maxx, the following creation came forth from my sewing machine:
That completed the first week. The second week was when we looked at digital embroidery, which was a lot of fun to watch albeit a little bit like watching pain dry at times. I chose to do an embroidery of yet another Overwatch character, this time, the rocket wielding Egyptian, Pharah:
With this knowledge, we were ready to embark on our project, in my case that was to make a bat plushie that had its face embroidered on instead of using the applique method mentioned in the instructions, and also to add a fun yet possibly confusing embroidery of a batman symbol on its chest. So off I went with so much gusto and exuberance….that I forgot to take a lot of pictures of the process…a mistake I only discovered once I placed the last stitch…
I got a picture of the batman symbol embroidery, and then of course of the final…somewhat derpy final product.
In general, I think it came out better than I expected. The way I approached sewing was by sewing the same way I weld…which does help to have that in mind since the process is similar. However the materials act nothing like steel or aluminum. So there was some cursing when trying to sew the soft stretchy fleece-y material, especially when using a regular straight stitch. A bit of googling told me that for stretchy fabrics, it might be useful to use either a double needle stitch, a special stretch stitch, or simply a narrow zigzag. I chose to go with the narrow zigzag and it actually helped A LOT! my pieces did not more as much in relation to each other while trying to sew them together. Some swearing was still uttered during the process, but no project is a good project without some of that. Even with the bit of a “fivehead” (more than a forehead) that my plushie has, I think I could have done a lot worse.
To start this section, we first made our dream castle/fortress in order to get familiar with Tinkercad. So for me, I decided to make a fortress similar to Superman’s Fortress of Solitude and make it crystal-esque.
We then looked at using MeshMixer for more organic shapes, and we made an alien-type resident for our castle. I just kind of had fun with some primitives and came up with this:
a creature I fear might haunt my dreams for a time…
Next, we looked at 3D scanning methods using an iPad as well as an Xbox Kinect (and software Skanect). I chose to try and fix my bust scan from the Skanect software since I felt it had a bit more definition. This meant I needed to stitch a hole in my head since the Kinect was not able to capture that part of me. This was the end result:
For our Assignment, we needed to come up with and sketch 4 ideas:
1 – a non-traditional set of utensils – I chose a set of fork and knife that had hidden corn-holders in the handles. I also started to make a 3D model of these, but Tinkercad was just not the tool for the curves, and MeshMixer was a bit too organic for the kind of shapes I needed:
2- For my cultural piece, I figured I’d try to implement a kind of 3D version of Diego Rivera’s The Creation which was used in the translation of the Popol Vuh, but used to represent me by changing it to reflect things that make my who I am, like server racks, networking equipment, etc:
Diego Rivera’s “The Creation”
3 – Then for the 3D version of a famous work of art, I thought to do a 3D representation of M.C Escher’s Relativity: But I realized the complexity of such a design might be a bit too ambitions for this project:
Finally, the 4th prompt was to design something I need. I had just the thing. One of my hobbies is refurbishing old IBM Model M mechanical keyboards, as shown below:
This includes using a Teensy controller to convert the keyboard to use USB as it’s connection so it can be used on modern computers. I needed a way to mount the USB-C plug into the spot where the cord grommet used to pass through the keyboard. I had been trying to use an existing stl file I found online, but the shape was not right, and I always ended up having to do a lot of shaping with xacto knives, dremel tools, etc. So I wanted to start from scratch and model my own part by taking detailed measurements with my set of calipers. I did so, and this was the result:
I printed it on the Flash Forge printers, and I got this:
The measurements on the mounting holes were a little bit off, but nothing I wasn’t able to fix with a few strokes of a drill with a 9/64″ bit. The result:
A much better fitting plug mount. Overall I was happy with this, I now have a model I can print en-mass for the other keyboards I do. I do need to adjust the location of the mounting hole since it seems I nudged them during the design, but that is easy to fix since I now have the original model.
In class, we started by making a simple paper circuit:
And then we went into trying to make something more creative by incorporating a quote. In my case, the quote was “You may think your light is small, but it can make a huge difference in other people’s lives”. My idea to illustrate this was to use an LED that was dimmer than another and try and show how a “small” can really be a “huge” light. I accomplished this by using different value resistors to run one LED at 20mA while another at only 10mA.
From there, it was time to work on the final assignment. I decided in a simple medium like a card, but wanted to really jazz it up. To give it a 3D aspect, I decided to try and make it more focused on negative space and make it an “engraving” of sorts. I also wanted to try and incorporate as much of the last 3 weeks methods as I could. So I started with just giving a rough draft of what I wanted the front and inside of the card to look like, and also sketching out some preliminary circuit design.
From there, I decided that the construction would be a layered approach used to build negative space that would be illuminated by the LED’s. The Star Wars theme I chose seemed to lend itself to this as the plan was for the negative space to be used for the lightsaber effect. Other design considerations I had was that since I was going to be driving 3 LED’s I wanted to make sure I had enough power, so I chose to build it on a 6V platform which would normally require only 2 3V button cell batteries. However, in the pursuit of trying to showcase a use of both parallel and series circuits, I chose to create a battery bank with 4 3V button cell batteries arranged in a series and parallel configuration. This means that I not only had 6V of potential, but also at double the capacity (normally ~230 mAh, this configuration should give me 6V @ ~460mAh). To try and keep the batteries in place, I cut out a battery holder out of clear acrylic on the Universal laser cutter. My idea for a switch was to use a rotary style switch and to use a hole cut out of the layers to accomplish this by running tracks up through the hole, similar to a multi-layered circuit board and the use of a via.
I took down notes during my design process in inkscape about what colors I had to cut when.
a good 2-3 hours of cutting at the Came cutters later, and I had my layers cut from ~12 layers of card stock. All I had left to do was glue all the layers up and start laying out my circuits. As a note, during design, I noticed that I was not going to have enough space to angle the lightsabers in the way I had though initially, so I rearranged them to be straight up and down.
Circuit layout complete, and tested with a multimeter for continuity. Also used scotch tape to insulate the tracks I had crossing each other to prevent a short circuit. I chose Green, Blue, and Red for the colors since they reflect the three common lightsaber colors in the series. (I used resistor values 200 Ohm for the red LED, and 120 Ohm for the blue and green (both 3.2 vf, red was 2.7 vf)
After hot-gluing the LEDs in place in the channels, I also cut out some white vinyl stickers in the outline of lightsabers from the movies and colored in some details by hand with a sharpie. then I placed them over the LEDs to hide them and give it a more finished look.
The switch spindle was made from just some rolled-up paper to get it to a snug fit, then a strip of copper tape was placed to stretch from one side to another. In that manner, twisting it so it copper lines up with the traces on the card would make it light up.
And it seems to work! the effect was very dramatic especially for the blue one that actually kinda looks like a mini-lightsaber!
To finish off the quote I chose, I chose the quotes source, Yoda! the front cover was made from another vinyl sticker cut on the Cameo.
In general, I was happy enough with how the project turned out, however, I must say for the record, that working on paper circuits was very frustrating. The medium of paper does not lend itself to making very secure connections. In my case, the batteries have a tendency to separate from the lower contacts when the card in on its back. As such, you need to squeeze the left corner while turning the switch to get the card to light up. If I were to do it again, I would need to design a more elaborate battery holder that probably consisted some some kind of spring to ensure contact with the heavier batteries.
In my free time, I spend it playing a video game called Overwatch. One of the characters (Mei) has a little helper robot called snowball. I wanted to have an Overwatch sticket, so I thought to make my own! All of the pictures I found all had a fair amount of shading (as is seen in the original picture) and some rough edges. I thought I would use this as an opportunity to use inkscape to manipulate it into what I need it to look like.
To start, I used a color trace method in inkscape , the result was…less than good. I was able to get 4 layers that gave me the primary shapes, but they were very incomplete and distorted. This was going to require a lot of path and node manipulation.
Color traced image
Exploded image of the layers I got
I needed a way to work on each of these layers without moving them so I could see them and then needing to layer by eye or snaps which did not work great due to the odd shape. So, I actually sent each layer to its own inkscape layer, where I could then hide each layer, or expose while I worked on the paths almost like working with transparency film.
Layering in inkscape used to keep everything aligned but still allowed me to work on each path individually.
From here, it was a lot of splicing paths, joining paths, connecting paths, and switching between node types to get a final image that I felt was a good representation of Snowball, but that had all the right path shapes I needed to be cut.
Final look of the illustration
From there it was time to pick out my colors, I got three out of my four colors from the scraps bin, but for the last I had to buy a foot of vinyl.
I then prepared my material by cleaning with some 99% isopropyl alcohol to make sure everything would stick to itself without issue.
My next hurdle was going to be how to apply these layers so they line up as best as possible, my hands are not steady enough and the material not forgiving enough to do this freehand. So I came up with a method to help me. I started by adding a rectangle around the image that I wanted the cutter to cut (ideally all the way through, but I could not find the right depth, and I did not want to risk damaging the machine). This rectangle was unique because it was referenced to the image, so it would be a constant, fixed, and predictable location for every layer. I would cut each layer, then first peel off the vinyls to the outer rectangle, then cut the square backing to match.
rectangle around whole image
Then remove the unneeded sections to prepare for layering. For my base layer, I secured it to the table with tape, then I would line up the edges of the backing paper of next layer over top of the base layer. Then I would place my transfer tape on top of all of it, making sure to have enough tape at the top that also grabbed the table.
Then I would peel back the tape using the top part on the table like a hinge, then remove the backing.
Finally, I would just squeegee the tape back over the base layer, therefore depositing my next layer perfectly placed on top of my base.
This procedure was repeated for each layer, providing me with the finished product.
Overall, I liked how this came out. I am happy my idea for lining up the layers worked as well as it did. In the future, I would use a more sticky tape to affix the base layer to the table. I used the transfer tape itself which I had to be very careful with because it would want to lift up with each layer application, so I had to keep an eye on it and move slowly.
For my name tag, I wanted to pick something that not only would represent me, but that I could actually use in my day-to-day life. When I’m not in classes, I am a full-time Linux Systems Administrator for the University’s College of Engineering. As such, I was thought I’d make the name tag have something to do with Linux and computers in general. So I had to start by having the Linux mascot on there, so Tux was used to represent my Linux involvement. I then also used my name converted into ASCII binary and placed it underneath my name in regular ASCII. I also wanted to show that not only was I a Linux enthusiast, but I am also an administrator, so a little command line excerpt from Linux to show that I am root also seemed appropriate. That was for the front. for the back, I figured I could try and get fancy. I added the Commodore logo which was the brand of the first computer I ever used. I also included a QR code that would correspond to a vcard with my contact information. This still seemed to simplistic for me, and I had work-provided name tags that were no real different. So I thought, what if I had it hold my business cards that was I can take it to conferences and have them at the ready! and my idea was born! Finally, I decided to use the same font that is used on most computer terminals, and I downloaded the custom font pack and chose one I liked.
To accomplish the ability to hold business cards, I decided to try a three piece construction, a front and back, with a spacer to give room for ~10 cards. The back had a cutout to allow the top edge of the cards to be seen, as well as a finger cutout to make it easier to pull out a card. Earlier ideas had the slot for the cards on the side, but without complicating the design further, it was going to be too easy for the cards to fall out, as such I opted to use gravity to my advantage.
Final set of pieces cut out of 1/8″ clear acrylic on the Universal Laser. Since gluing acrylic can be tricky and I decided to use a mechanical means of fastening the three pieces. This then would also make it such that I could print multiple backs and fronts and swap them out depending on the occasion. Since the software would be far more precise than I could be with a drill, I opted to have the laser vector out the holes for the screws.
In doing this, I did discover that sometimes (either by my hand or a bug with inkscape) my drawing has been nudged by ~1/64″ and since I was working at a precision of 1/32″ I needed to correct this. So a lot of fine detail work and use of inkscape’s snapping tools helped me make sure the three pieces were as identical as I could make them.
Overall, I am quite happy with how it turned out. things I would need to address if I could do it again would be to find a way to give the rasters more contrast since they can be a bit hard to see. Also, my QR code ended up not working, I think due to the contrast issue described. Otherwise, my meticulousness with the measurements was fruitful, everything fit together great, the slot for the cards fits like a glove, yet allows them to be pulled out easily. Furthermore, it was functional as I was able to wear it!
I did add a piece of orange paper (go Illini) to the front to help with contrast. I tried to use paint pens and sharpie to color in the rasters, but I could not get it to look right, so I wiped it all off. Furthermore, printing it in a mirrored manner so that the rasters are actually on the bottom/inside instead of the outside would eliminate the shadowing effect which might make it easier to read.