For our independent project, we decided to attempt to create a functional myoelectric prosthetic hand using microcontrollers, small servo motors, and electromagnetic sensors (EMG). We stumbled onto the idea last fall on youtube of all places, and knew that it was something we wanted to try and complete. While our project is a basic prototype due to time and monetary constraints, a more advanced version could be used to give upper extremity amputees functional use of a bionic hand in their life. This first week was focused on breaking down the project into three main sections. The circuitry and code to control the servo motors, the 3D printing for all of the hand and gauntlet pieces, and recording an EMG signal from our forearm muscles. Essentially, the hand will work as follows: An EMG muscle sensor will be placed onto the middle of the target muscle. When the muscle is flexed, it gives off an electrical signal that the sensor picks up. As the sensor picks up the signal, it sends that information to an Arduino microcontroller, which then tells the servos how to move. The servos then contract the fishing line that runs through the hand itself causing the fingers and thumb to contract. When the EMG sensor stops detecting a signal, the servos will revert to their original position and the hand will reopen. As of this morning (Thursday, April 14th), we finished printing all of the pieces for the hand itself, not including the gauntlet that will house the circuitry and motors. We hope to start assembling the hand this weekend and the EMG sensors we ordered should arrive in the next few days as well. Additionally, we did a lot of practice this week learning the basics of using an Arduino to control servo motors. We also spent a lot of time learning how to upload code to the microcontroller, that would cause the servo to rotate when an object was a certain distance away from an ultrasonic sensor attached to it.
Going into the project, neither of us really knew anything about programming. Our only problem was that this was essential to our project's success, so we had to start with the basics.
In this photo, our first prototype is starting to be printed. For this reason, there is nothing in the printer yet but the photo does capture our excitement.
This photo shows our first print of fingers for our hand.
During this week, we started using our sensors to find a baseline of values to trigger the movement of our hand. The sensors we’re working with are classified as a bipolar configuration because it uses three electrodes compared to the two used in monopolar configurations. In monopolar configurations, one electrode is placed in the middle of the target muscle body and the other electrode is placed in an adjacent electrically neutral location as a reference point. Bipolar configurations, on the other hand, have two electrodes on the target muscle body and a third electrode on an adjacent electrically neutral location to act as the reference here. This makes a huge difference because when two electrodes are used on the muscle body, the difference in voltage between the two can be amplified with respect to the reference electrode. What this leaves us with is a much cleaner EMG signal. Anyway, as I mentioned previously, this week involved us figuring out how to connect all the electronic components of our project. We started with the simple connections of the EMG sensor to the Arduino, which allowed us to find our baselines in which we believe will allow us to program a suitable code to control the movements of the hand. The only issue we ran into in this stage of the project was that the method in which we connected the sensor to the Arduino doesn’t allow for the servos to be connected in the future. So, using a basic breadboard, we are able to connect all the pieces as a test for the coding while we wait for the Arduino shield that will enable us to make all the connections cleaner and more effective.
The first image shows John with the sensor connected to his arm as we finally got the signal to register onto the computer.
The second image shows the hand in use as it shakes the hand of another sentient hand.
The third and fourth images show the front and back of the hand semi-assembled.
The final image depicts the process as we attempted to connect the sensor to the breadboard in a way that would enable connections for the servo motors to work. This is just a prototype to test the code essentially.
This week we spent our time on two main areas of focus: soldering a new board in order to attach it to an Arduino, and finalizing the code that will allow us to connect the EMG sensor and the servo motors. The soldering was to replace the breadboard we had been using previously in order to reduce wire clutter and make things cleaner so that everything can fit inside the gauntlet piece of the hand. As neither of us had any experience soldering before, we both had to learn and practice before moving to finish the new board. The new board also allows for up to 16 different servo motors to be connected, so if we have time we will try and configure the hand to be able to close all five fingers individually. We finally finished debugging the code (or at least we think/hope we did) and ran the program with simulated values within the threshold we believe the EMG sensor would record in order to test the code with the servos and it worked! We successfully had the motor move from an open to closed position depending on the simulated "flexion" of a muscle. We also succeeded in getting the Arduino Mapping code to work which essentially allows us to have the hand open and close proportional to the amount of flexion in the muscle. On the tactile side of things, the whole hand has been printed and assembled so the only pieces we are left waiting on are the second and third sections of the wrist/gauntlet. At the end of this week, we attempted to hook up and run the whole system, connecting the EMG sensor to the Arduino in order to trigger the servos to move. Unfortunately, the system wasn't working and we had to do a lot of troubleshooting to figure out why. We ended up double and triple-checking all of the code, the soldering connections, and wiring before deciding that the problem was with the actual EMG sensor and not the other hardware or software. Since we aren't really sure what's wrong with the sensor and why it wasn't working, we tried a couple of different fixes. The first was to move the placement of the sensor on the arm to see if we were getting signal interference from the reference electrode, which didn't end up helping. Next, we tried switching between the different types of data collection the EMG sensor allows for: envelope (ENV), raw (RAW), and rectified (RECT) output. This also proved to be unhelpful, which was a real hit to project morale. The final solution we tried was to change the gain setting on the built-in potentiometer that the EMG sensor has which also ended up being to no avail. Here are some links to information about potentiometers and the different signal outputs as well as a sort of overall guide about the EMG sensor we are using. We don't completely know why we can't seem to get a signal from the sensor and think that we may have shorted it somehow and might need to order a new one. Hopefully, if that is the case, as soon as the new one comes we will be able to completely finish the hand!
Advice to Future Seniors: Zach and I are both super grateful for the opportunity to do this project. It's definitely really exciting to be able to pursue a project in a field that we would not have been able to in a specific class at St. Stephens. Given the very short time frame of the project (5 weeks), the more pre-planning you do the better and more successful the project will be. We also agree that having an outside mentor who can fully devote time to supporting you in your project can be very helpful, and finding that mentor early is super important! Finally, part of the reason we've been successful with our project so far was because we both were genuinely interested in what we were doing: it hasn't been easy and we've had to work through a lot of issues we didn't know how to deal with, but it is definitely worth it.
Zach and I were both out of town for about half of this week on a rock climbing trip in Taos, New Mexico, so we weren't able to make as much progress this week as we had originally hoped. We started by ordering a ton of new parts to try and solve our problem: Resisters, Chips, and Electrode cables. Our new plan is to try and build our own EMG sensor, which is why all of the parts are necessary. Essentially, we were able to order enough parts for 3-4 sensors, so in case one failed to work we could have backups. In hindsight, we probably should have done this originally, but after we had success with the first sensor in week 2 the idea didn't occur to either of us. We spent this week learning how to put everything together in the hopes that come this weekend or Monday, we can hook everything up with a new working sensor and successfully complete our project goal. In addition to building new sensors, we ordered another version of the original EMG sensor that we used to try and broaden our chances of success as much as possible given the really short amount of time left. On a more exciting note, we were able to finish the printing of the hand and completely finish building/assembling it! Now once we have success with the sensor, all we have to do is attach the fishing line responsible for finger contractions to the Servo motors and we will be finished! Obviously there will be some tweaks to the tension of the fishing line and para-cord in the fingers in order to optimize everything, but that shouldn't pose too much of an issue. Printing one of the sections of hand this week yielded a very interesting scenario that we hadn't encountered yet. Put simply, when printing some of the pieces, there must be supports printed alongside the actual section of the hand so that certain curvatures in the shape can be printed layer by layer. With the 3D printer we are using, the supports are made out of a dissolvable filament, so when submerged in water for a few hours, you can simply scrub or peel off the supports and be left with your printed design. Since it was so humid all week, especially the day our final piece printed, the supports weren't completely solid. In fact, the section had dissolved just enough to the point where we pulled it all off in one chunk and were left with a strange, putty-like section of printed support. We are really hopeful for how things go in the next week given that we have narrowed down the problem to one specific area which seems very solvable.
The remains of the support filament after removal from section of gauntlet piece