Quirky Crowd Controlled Robotic Arm With Arduino




Introduction: Quirky Crowd Controlled Robotic Arm With Arduino

About: Roboticist and Tinkerer. Passionate mentor to some and mentee to others. Learner for life.

This is a crowd controlled robotic arm. The hardware for this project has been taken from another open source project, which can be found on GitHub. The arm can be controlled by a large number of people simultaneously over the web by using a web-based form to submit their choices. It was used as an experiment to study human-robot interaction and the efficiency of humans as a team.

The parts for the robot have been laser cut using 3.5mm thick acrylic. I used black color acrylic because that's what was available. You can go ahead and use any color that pleases you. The hardware for the robot at MIT's Engineering Design Studio(EDS) and would like to thank the nice folks at EDS who helped me out with various aspects of the project. The project was built under the mentorship of Dr. Kyle Keane, a lecturer at the Department of Material Science and Engineering(DMSE), MIT and was demonstrated at an IAP class, where I was helping as a TA. The project started with an idea for a series of videos that would help enthusiasts build their first robot, which then developed into, building an interactive robot with the objective of community bonding in mind. Thus, 'Muscles' the quirky robotic arm came into being. It can be controlled by multiple people to try and achieve a common objective. The robot can be controlled by a simple web form that submits a vote in favor of a particular motion to a server every time a user chooses an option. The robot then pulls information about the most-voted-for option from the server and executes the action.

Required Materials

Tower Pro 9g Micro Servos - 4

Acrylic Sheet 3.5mm thick

Lots of nuts and bolts (M3)

An Arduino board (Uno or Mega will work fine)

A server to which you have easy access

A Laptop with Processing 3 Installed

Power source (I used a 3S LiPo with a buck converter)

A breadboard/prototyping board

Soldering equipment

Some wire (preferably multi-stranded)

Step 1: Putting Together the Hardware

For the hardware I used an Open Source Design on Instructables which was simple to put together and offered enough flexibility for modifications. Feel free to make your own modifications as you go about building it. The design is fairly simple and the tutorial is well explained. However, only follow the steps for putting together the arm, build your electronics and code as per the plans in the next steps.

Step 2: Constructing the Circuit

A battery was used to power the servos on board, the Arduino was powered by the laptop and the grounds of the Arduino and the battery were shorted together. I had to use this sort of arrangement as the power from the Arduino was not enough to drive the servos and using an external power supply for them proved to reduce some of the jitter in them. However, I had to connect the Arduino to my laptop so as to run it along with a Processing server script.

The battery was connected to an LM2596 buck converter module which dropped the 11.1V of the 3S LiPo to ~5.8V. These micro-servos can take up to 6V, however, I adjusted the buck converter to just below 5.8V, as a precaution for fluctuations or faulty voltage readings. The Vcc and GND lines from the buck converter are then split into 4 parallel paths for each of the servos, the GND is also shorted to one of the GND pins on the Arduino. Each of the servos also has a data line connected to a digital pin on the Arduino.

The schematic for the circuit can be understood more clearly from the diagram below. In the diagram above, ignore the FB and On/Off pins. This was the closest in resemblance to an LM2596. The Servo's Vcc is connected to the output of the LM2596, its ground is connected with the common ground and its data pin is connected to a GPIO on the Arduino.

Once you've fabricated your circuit, make all the connections to the robot.

Friendly reminder: Do not forget about the common ground!

Step 3: The Code

The next step would be to upload the code. For this, you will need access to a web server. You could host a server on your Raspberry Pi (We have a tutorial for that), or buy some hosting for a week or two. Hosting is pretty cheap nowadays.

The web server, in this case, is basically a computing device on the cloud which will store all the code for your web page and store the votes that different users send in. Now, whenever the Arduino makes a 'GET request', the server will send the votes it has received from the users to the Arduino, which is running Processing 3. The reason we're connecting the Arduino to a Laptop is that it's an easy way to give the Arduino access to the web, while Processing 3, instead of the Arduino IDE gives us a lot of powerful tools to add modifications to our robot. For instance the sound library. This can be used to collect votes. Instead of users clicking, we can have all the users in a place, physically try to attain a particular frequency by shouting/chanting the same word. Pre-fixed frequencies will actuate different parts of the robot. To download all the code, you can check out the GitHub repository here.

Invention Challenge 2017

Participated in the
Invention Challenge 2017

Be the First to Share


    • Puzzles Speed Challenge

      Puzzles Speed Challenge
    • "Can't Touch This" Family Contest

      "Can't Touch This" Family Contest
    • CNC Contest 2020

      CNC Contest 2020

    5 Discussions


    Reply 2 years ago

    Thanks! I'm planning on building a more sophisticated arm soon with dynamixels. Will post the build at some point in December. Do check it out :)


    Reply 3 years ago

    Thanks, glad you liked it :)


    2 years ago

    code please


    Reply 2 years ago

    You can find it on the Github repo :)