Introduction: Quirky Crowd Controlled Robotic Arm With Arduino
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.
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
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.