Feature

Robotic Gripper

Arduino-based Robotic Arm with Touchscreen Interface

Maurizio Miscio

Issue 65, December 2022

This article includes additional downloadable resources.
Please log in to access.

Log in

We take a closer look at this impressive robotic arm by Italian maker, Maurizio. With its Arduino Uno brain, solid construction, and a wide variety of control options, there’s a lot to be inspired by.

Thanks to affordable 3D printing, you can find thousands of robotic arm projects on the internet, including our Grippy robotic arm published in Issue 21. What caught our attention with Maurizio’s robotic arm, was the addition of a touchscreen interface, and an overall durable build using aluminium tubing. After a comprehensive chat with Maurizio, we soon found out that the control options included Smartphone control via Bluetooth, from a tethered touchscreen, via a computer, or from another serial communication device. It can also be automated to repeat programmed movements. Keep reading to find out much more about this impressive build.

We’re quite impressed with your robotic arm, Maurizio. Before we learn more about it, please take a moment to tell our readers about yourself.

I am an Italian maker and I live in Italy. In life I like to build electronic things of all kinds, I can't sit still for a moment. In addition to this, however, I am an activist for human rights but in particular for the rights of students in school.

Since I was little, I have always been interested in the world of electronics, not so much the part of home electrical systems, sockets and lights, but more electronics made of small things that put together create magic.

I have always been very fascinated by all the ways of doing electronics. My father, for example, has a model railway in which there is a disproportionate amount of electronics such as analogue automatisms of all kinds and I looked fascinated like a child at Disneyland.

It looks like your Dad planted the seed of your curiosity in electronics. What inspired you to build your robotic arm?

Let's say I've always loved robotic arms. Since I was a child, I spent hours in front of the TV watching programs like “how it's done” and I saw, especially in car factories, these super precise and delicate robotic arms that look like a dance.

About six months ago, I decided to create something that could give me satisfaction, give satisfaction to the people who believe in me and that would allow me to learn while I was doing it. Hence the idea of making a robotic arm which for sure is something you can't help but say wow when you see it.

Did it take you long to design and build?

Much more than I actually imagined. I started with CAD design (Fusion 360) which required me a disproportionate number of hours of work between drawing and a lot of design rethinks.

Once the design was finished, however, I had to begin the physical construction of the project which took almost three months. Unfortunately, I live in a not very big house and my space was only a 100cm x 80cm coffee table and, of course, I didn't have electric saws or electric tools in general to speed up the work. In fact, apart from the holes, everything was done without electronic tools therefore took longer than expected.

You have done well considering your work area constraints. Tell us how the project works.

The operation of the arm, in its basic configuration, is very basic. Just turn it on via the DC Jack connector and the arm is positioned in a way that does not get in the way.

Once turned on, you can proceed to connect the device that mounts the graphic interface with Bluetooth. I can connect the screen on the box that contains the components or I can decide to control it with my phone that I have in my pocket.

From the graphic interface, I can then move all the joints individually to bring the arm to a specific position or I can record the positions of the servo motors and have them repeat in a loop.

All the data of the positions that are recorded, are saved on the Arduino memory (on an array) so the graphical interface at which point can also be switched off and the arm will continue to operate normally.

However, the possibility of piloting the arm in many different ways cannot be ruled out. In fact, thanks to the USB B port on the side, the arm can be controlled thanks to serial communication, even with different programs that send and receive serial "messages" and so on.

That’s quite a variety of control methods. We hope that wasn’t ‘scope creep’. Is there a limitation to what phone you can use as the controller?

As things stand, yes and no. Let me explain ... the application that represents the graphical interface is only available on Android phones in fact the installation takes place via a file. apk which is only for android. The arm, however, can also be controlled from a computer, as I mentioned. As for the IOS devices and therefore the iPhones, I do not exclude the possibility that someone better than me will be able to develop an application that sends and receives serial codes via Bluetooth or via the iPhone's Lightning port. This is the beauty of doing open-source projects, which is that anyone can decide to change things for the better and doesn't have to ask anyone.

Thank goodness for open-source. What electronics does it use?

Use different electronic components inside, namely:

  • A fairly powerful power supply to support the 2.5A x 5 motors (but you won't be using them all simultaneously)
  • Any Arduino board (I used Arduino Uno)
  • HC05 Bluetooth module
  • One SG90 Servo Motor (I got the one with metal gears)
  • 5x MG996R Servomotors (more powerful than SG90)

What made you choose the Uno microcontroller?

I chose Arduino Uno as my board for three main reasons. The first is that the Arduino Uno has the USB B port (which is still the most used standard today, for example for printers) and the Jack DC input attached to the board so that I could make two holes to get them out of the junction box and two doors would come out ready for use.

The second reason is that the Arduino Uno is more versatile than the other Arduinos. In fact, Arduino Uno, having female pins, gives me the possibility to easily insert the cables (which I then fixed with American tape) and if something breaks, I can pull the cable and insert another one.

The third reason is that Arduino Uno has larger components, very often THT and which can carry more current. Although Arduino is not made to withstand currents but only to send control signals, having larger components soldered on the board gives me the possibility to repair them if they break. If the microcontroller for example were to break, I would just have to remove it with a screwdriver and insert another one.

Other boards could work the same way, but you have to pay attention to the memory that the program requires. For some microcontrollers mounted on some cards, it could be too much.

Is there anything important the readers should know about the code you designed?

Sure, you can control the robotic arm with your phone and Bluetooth as well as you can control it with your computer thanks to Bluetooth. You can also turn off Bluetooth and connect the robotic arm to the computer with the USB port on the side and control the robotic arm with a program on your PC.

What servos did you use, and do they suffer from any jitter? Does this explain the capacitor on the power supply rails?

I used some MG996R servos and a SG90 servo for the clamp. Actually, the servo motors suffered from jitter but only during the remote movements (in the loops they are fine). I added a 2200µF capacitor on the Arduino's 5V and GND because I noticed that very often, without them, the servo consumed so much current that not enough current would reach the Arduino and the board would shut down. As for the jitter, the solution is to pass the servo wires through steel rings but of these, I only have three at home and I need twice as much and moreover, since all the positives and negatives of the servos are put together, I do not know if only on the signal wire would be enough to solve. Having said that though, the jitter doesn't really bother me and it’s not so pronounced as to be bothersome so I'll probably leave it that way.

We noticed a button on your controller labelled ‘reset’. What does that reset?

The reset button is used to reset the Arduino board. Very often I use it to reposition the arm in its starting position or I use it as an emergency button. In fact, if something goes wrong or accidentally the arm tries to kill me, I hold down the reset button and the signal is removed to the servos which means that they remain on but without stiffness and, therefore, I can move the arm in peace. The reset button does not reset the Bluetooth connection.

A button to stop the rise of the machines. Ha ha. Your touch interface looks very smart. Can you tell us more about how that works?

I think the touch interface is the icing on the cake of the whole project because it is something that is not often seen or is not often seen integrated so invisibly. Behind the screen hides an old phone that I had at home and, precisely because I had it at home without a purpose, I decided to use it for this project. I believe there is a lot of potential in android devices to act as screens or otherwise out of phone activity.

So, on this phone, I installed an app created by me with the MIT application called App Inventor. App inventor was very simple to use. After creating a new project, I started, without thinking about the code, to position the keys, the texts and the image and then, subsequently I made sure that something happened when that button was clicked. This is thanks to the programming and blocking interface offered by App Inventor. I could have used different software to create applications like Android Studio but the ease and intuitiveness of App Inventor was incredible.

That’s a great way to repurpose an old phone. Hopefully, that inspires some of our readers who have a phone laying about collecting dust. Can you tell us about the construction?

I recommend starting from the end with the assembly of the gripper, which is quite intuitive and simple. Once the caliper is mounted, you will need to mount the SG90 servo in the appropriate space and check that everything moves without friction.

After doing this you will have to build the wrist by cutting a small piece of aluminium (a little longer than the width of the servo) and, after having made the notch for the rear part of the motor and the hole for the rotating ring of the motor, you can mount the wrist angle motor with the two adapters I have attached above.

Once the wrist is composed, you can proceed to screw the gripper to the motor that controls the angle of the wrist.

Once this is done you will have to mount the servo for the rotation of the wrist which has nothing complicated apart from the fact that you have to carve two sides of the aluminium square for a few centimetres in order to leave only two aluminium blades that will support the adapter you need to mount the motor with the ring nut facing the gripper (outside and not to the side)

Between the wrist (as a piece in itself) and the wrist rotation motor I wanted to add another small piece that visually makes the transition from square profile to round profile but it is only a question of aesthetics (so it is optional, if you want you cannot print it)

Finally, to connect the wrist piece to the wrist rotation motor you have to print one of the adapters left in the files that screws onto the wrist piece and screws, on the other side, to the rotating bezel of the motor.

To mount the other two motors, the procedure is the same as that connecting the caliper to the motor at the wrist angle, with the only difference that you will have to drill holes in the aluminium to accommodate the screws that will run through the piece of aluminium and the rotating plate of the motor.

The last piece of aluminium at the base is mounted with 5 bolts (but if you want you can also use less) to the invitation printed in 3D on the rotating base.

Last but not least, the motor of the rotating base is fixed on the fixed base (3D printed) in the appropriate seat with four bolts.

For convenience I have mounted the fixed base to a larger wooden board (MDF) to give stability to the structure.

A junction box must be mounted immediately next to the output of the robotic arm cables to house all the electronics inside.

Why did you choose to use aluminium tubing? How easy is it to cut and drill? Any advice to our readers who want to work with aluminium tubing?

From the first vision in my head, everything had to be done with the square aluminium tubes.

In my opinion, it is just perfect for many types of DIY projects. The fact that it is square and empty inside makes it first of all very versatile to create any type of hook or adapter to be 3D printed but above all, it makes it very light. When I asked my father for the favour of going to buy this aluminium profile and he took it home to me, I was amazed at how much a two-metre piece weighed so little that I could hardly feel it in my hand. Then I realised it was the right material.

Since, as I said, I have no power tools other than the drill, it was super easy for me to cut it with a saw and file it with a file. It's a great material because it's super soft for cuts and holes.

If you want to start working with square aluminium tubes, I assure you it's fantastic. There are some precautions such as not choosing it too thin or not choosing it raw but already with a finish or even better painted (so it is electrically protected).

The tubing does sound quite versatile, and would add to the arm’s strength, too. For the 3D printed parts, did you design them from scratch using Fusion 360?

For the 3D printed parts yes, I designed them from scratch in Fusion 360 except the gripper. As I said, by designing the entire arm in every part on Fusion 360 it was automatic to right-click on the “yellow pieces” which are the ones to be 3D printed, export them and then load them on the printer.

I would spend hours on Fusion 360 because it is one of the things I most enjoy doing in life and therefore designing all the pieces was a huge pleasure. It must be said, however, that if some parts came out well at the first print, some instead I had to review them on Fusion 360, adjust them and then reprint them again because they were too wide, too narrow or something like that.

What printer did you use, filament type and layer height for our readers who may want to print similar pieces?

I used my only printer I have (because I'm unfortunately not rich) which is an Alfawise U30 Pro (also called Longer LK4 PRO). It is a filament printer very similar to the very famous Ender 3. I found it a few years ago on offer on Aliexpress and bought it. As a filament I used a 1kg spool of PLA plus filament from Sunlu which I find fantastic: tangle free, vacuum packed, with silica gel inside and with a very precise 1.75mm size.

I printed the pieces with a layer height of 0.2mm, the plate at 60 degrees and the extruder at 205 degrees with the Ideamaker slicer which I consider very good.

Great. Did you need to build any prototypes and what challenges did you need to overcome?

Actually yes, I created this cardboard rig that replicated the limb movements of the robotic arm almost to scale in such a way that I immediately had an idea in mind of how big it would come out or something.

The challenges I had to face during construction were more of an IT or electrical rather than a constructive one. For the physical construction, it was complicated but luckily, I had my father who, having many more years of experience, was able to give me a lot of advice on the matter.

One of the things that made my life the most complex was the Bluetooth module, Appinventor and the connections of the servo motors. At first, I did some tests to use the Bluetooth module but it didn't seem to work, then I spent days searching the internet for the solution but nothing, in the end, I tried and tried again and finally I was able to make it work.

Besides that, there was the problem that app inventor doesn't have the command to go back in many operations and so you just have to do it all over again. It was really a mess, especially when I deleted a container by mistake and everything was lost (obviously I'm stupid and hadn't made a copy).

You know when you are convinced that you are doing something well but as soon as you do it you think "why did I do this stupid thing?”. Well, that is precisely the moment when I, after having passed all the servomotor cables in the various holes, arrived at box, I decided to cut them too short and work in a very tight space with very short cables for the rest of the project.

We love your idea of making a cardboard prototype. We’re sure you save regularly now, too. Your timelapse video shows a solar panel. Is that relevant to this build?

That solar panel that you see at the beginning of the video is not relevant for the robotic arm but it concerns a project I was working on in the same period of time as it was for an Erasmus at the school where I go. The project was a two-axis solar tracker large enough to actually be used and not to be a prototype. You can find another article on the solar tracker on my Instructables page. At that time, I was working on both so in the timelapse you can see the panel simply because, if I had to cut aluminium and I had the saw on the table, I was doing the service for both projects.

We’ll be sure to check that solar tracker out. Something else we noticed was two resistors connected inline to the Bluetooth module. What are their purpose?

Two resistors are connected to the HC05 Bluetooth module. These help lower the voltage to the module. Although the module can also accept 5V, the microcontroller still works at 3.3V and, therefore, if we give it the 5V input, the module will have to make an effort to bring it to 3.3V so it is better to use a resistor.

Need to avoid letting the smoke out, right?! If you were to start the build again, would you do anything differently?

If I were to do it again, I think I would open it up much more to the public than I did the first time. I mean that I would like to make videos on YouTube on a regular basis so that I can catch people's suggestions in the comments or, even in daily life, I could ask my professors for advice as well as those who know more than me or have more experience. But this would take away the fun of solving alone and learning from mistakes.

It’s a balance isn’t it? It can be rewarding to solve problems, but can also be frustrating when it takes a lot of time. Changing the subject. Is your power supply a modified computer power supply?

The power supply shown in the photos is not a modified computer power supply. It's a power supply my father built in the 1980s that he built from scratch with a transformer, diode bridge, capacitors and so on. A few days ago, however, we took it apart and used its components to make a much more modern power supply (on which I also wrote an article on Instructables).

Finally, Maurizio, where can our readers go who want to know more or want to build one for themselves?

The Fritzing can be seen here. The build and code can be found on my Instructables page:
https://www.instructables.com/Arduino-Robotic-Arm-Controlled-by-Touch-Interface/

I also have put together a video, which can be watched here: https://www.youtube.com/watch?v=j-lX9l9-Di4

We thank you for sharing your project with us. Congrats on a wonderful project.

Maurizio Miscio

Maurizio Miscio

Robotics Enthusiast, Italy