I have never touched an Arduino before, and only played very little with electronics in general. However, I recently got the idea that I wanted to attempt to build a robot, that can press keys on my keyboard for me.
First question - which arduino package would suit my needs? I can see there is quite a few versions on the market, and I'm not really sure yet what the requirements is for this robot arm, besides what I mentioned earlier
Which leads me on to the next question, the robot itself. Can the arduino control such a robot arm, with enough precision to hit different keys?
I've been programming a fair bit, so I don't think that part of the arduino will be too difficult. It's more the physical put-together that will be a fun challenge.
I know this isn't much to begin with, but please, ask away if you need more information. I'm probably also going to need some help with the parts. I'm living in Denmark/EU, so if you know any good sites with cheap reliable parts, please let me know (:
Also, thank you for taking the time to read this post, and show interest.
WIth good steppers and enough stabillity in the mechanics the ARduino could control a robot arm to press with sub-milllimeter accuracy ... oh yes, that is what 3D printers do, and they are usually run by a simple Arduino/Mega.
Although tempting I would not recomend servos. If you want to move an "arm" (something with two joints ) the accuracy is jsut about at the limit for the distance (a keyboard) you need to cover. But any old stepper motor would be fine.
For DK ... there are good hacker/makerspaces that will gladly give you all the help (and parts from the recycle bins) for you to experiment on to start with. (Google: Labitat, OSAA, Hal9K)
Your title is a little ambiguous. Do you mean (say) that you want to be able to press any one of 5 keys (handful?) in which case you could have small servos permanently poised over the relevant keys.
Or do you want something that can press any of the keys on the keyboard so that it has to position itself over the correct key before pressing the key. How many of these things do you want? How many keys will each deal with? Is there a risk of the devices colliding with each other.
I'm not sure if you are familiar with "wire in tube" which is commonly used on model aircraft to connect servos to control surfaces. It would mean the bulky servo could be remote from the key it is to press.
Why not just use the Arduino to send data to the PC over the USB cable?
Wow, thanks for the quick and resourceful replies! I really appreciate it.
@Msquare - Thanks for the heads up, I will definitely look into stepper motors, and research what you mentioned. I guess I'll just get the Arduino Uno, and it will be sufficient? (:
@Robin2 - It only needs to press a single key at the time, and only on one half of the keyboard (ranging from about 1 - 8 wide, and from the numbers to the lowest row of the keyboard) I haven't heard of the wire in tube, but I'll try to read into it, and see if it fits my project ! - For the reason I'm not using the Arduino to do direct input, is because I can not use simulated inputs, it has to be physical (:
@CrossRoads - Thanks for the links, but half of this project is to actually build it myself from smaller parts (: I might use it for reference.
The "wire in tube" is just a mechanical linkage, like the handbrake or gear shift on a bicycle. It enables you to have the heavy motor in the base of the arm, and the cable then performs the motion at some other point of the arm.
If you get good enough servos (big, powerfull, possibly a digital model) - then they may be good enough with the size/range you mention. Here is a (pathetic?) quick-n-dirty attempt I made some time ago - gives you an idea.
The real drawback with servos is that when you start the Arduino, because they do not communicate their position they "snap" (move as fast as possible) to their start position. This has caused other persons using servos in robots some headache or damage to the mechanics. This can be moderated by a sufficintly intelligent servo (digital, limited rate of movement setup).
Servos have no knowledge of their absoulte positions (servos do), so they stand still at powerup, but you have to move them to an end-stop to get to known position fro which you then can keep track of position.
I bought the finger and servo during the initial kickstarter campaign, but unfortunately, it is sitting on my todo pile (I wanted to make a mechanical finger to press the shutter button on a camera).
@Msquare - Thanks for explaining the wire in tube method Your example was quite interesting, as it's something like that I want to create, but from what you're saying I think I'll stick with stepping motors instead? I might one day upgrade it to use servo's, but since I don't know a lot on the subject, I'll just go with whatever you'd suggest to a newcomer
@MichaelMeissner - Thanks for your reply! Really interesting to see, however what I'm going for is much more simple. It's basically just a stick with a few joints and a plastic knot on the end ^^ Nothing fancy, as it's just a hobby project for the fun of it.
I still feel a little lost on which Arduino to purchase?
Once again, thank you for all your replies. It's really nice to see such activity and helpfulness (:
Muuh:
I still feel a little lost on which Arduino to purchase?
Anyone will do - the standard UNO model is fine for what you want.
Remember to get some stepper drivers, or perhaps even a steppershield (that reduces your electronics need to just wiring the motor and a pwoersupply to the shield) Considering your DK location one example is http://www.electrozone.dk/robotics/steppermotor/10267
Servo's are simpler - only need a a PWM-like signal to control each one.
With stepper you need a motor controller chip for each one.
Get a bunch of cheap servos Radio Control Planes, Drones, Cars, FPV, Quadcopters and more - Hobbyking,
mount them above the keyboard,
and just program them to push down & up.
Servos may be the simplest start for a robotic arm. There are many servo/arm kits available, but there are a lot of DIY ones. Do a google search for images or a youtube search like below to see the general concept.
Msquare:
The real drawback with servos is that when you start the Arduino, because they do not communicate their position they "snap" (move as fast as possible) to their start position. This has caused other persons using servos in robots some headache or damage to the mechanics. This can be moderated by a sufficintly intelligent servo (digital, limited rate of movement setup).
I think I have discovered a solution to this problem (from stuff I read on another forum). I have converted a servo to continuous rotation and it was really exciting when I powered it up as it rotated at full speed with a large load. I have connected a 4k7 resistor between the signal and ground wires and now it sits stationary until the Arduino tells it to move.