# Starting out advice on making robots and tinkering with microcontrollers [closed]

I'd like to start making robots and tinkering with microcontrollers. Where do I start, and what do I need?

I'd like to make my own robots. I'm comfortable with programming (assembly and C) so I've got that part covered, but my electronics/circuits knowledge is a little weak. I have no idea what material to start with and which tools I need, nor how to put stuff together.

For the microcontroller, I'm thinking about going with the Pololu Orangutan LV-168 or the Arduino Duemilanove, although I'm leaning more towards the Orangutan because of the built-in LCD and pushbuttons (which I would expect to use, especially for debugging and user interaction). Am I on the right track? It seems to me like the number of I/O ports is small, but is that the case in practice?

• Good question (but I don't know enough of micro controllers to help). What confused me though is that you mention a Kinect in the title, but not the body of your question. I'd guess the micro controllers you mentioned are not powerful enough to do any serious point cloud processing. Oct 29 '12 at 19:17
• Same as @Martin I was surprised that you don't talk about what you want to do with the Kinect. Please add your thoughts to the question. Nov 10 '12 at 6:49
• Same as above two, but now I've just gone ahead and edited it, since it really needs to be addressed - and OP doesn't seem to have responded. Apr 5 '13 at 21:08

I'd recommend getting your hands on a 3pi and an Arduino. They both use the same chip, and are a great place to start.

Get yourself some tools.

• A soldering iron with a sharp point.
• A multimeter.
• Some breadboards and some wire.

• Note that the chip/microcontroller they use is the AVR ATMega series of microcontrollers. Using the pre-built boards allows you to avoid designing, making your own PCB, and soldering some common components on. Oct 29 '12 at 10:04

If you have no idea what to do with your microcontroller, I would start slower. I wouldn't say using a Kinect is that great an idea right now.

Some of the other answers mentioned using development kits and boards to avoid soldering, which I think is a great way to get started with embedded programming without having to worry about soldering practically anything.

My tip is to look into a great website I found when I knew nothing about robots: Society of Robots and their great \$50 Robot Tutorial! There you will find a lot of basic information for people who want to build their own robots.

I'd suggest using kits to get you started. There are excellent resources today that will quickly get you enough confidence and knowledge to built great robots. I'd stick with as 'mainstream' technologies as you can in order to maximize what you can learn from others. The most mainstream microcontroller you could choose is the Arduino Uno, perhaps its newer replacement the Arduino Leonardo.

This gets you the documentation, microcontroller, electronics, and your first few projects to get started with. The documentation is excellent and takes you from very beginning to enough knowledge to do your own projects.

Add some electronics background by getting the Make Electronics book with the matching Components Pack 1 so you can do the projects in the book. This will get you familiar enough to add blinky lights and simple sensors.

Then get your tooklit basics, such as the Ladyada's Electronics Toolkit. Your first step up from this should be a better soldering iron such as the Weller WES51 once you've done enough projects to know why you need it :-)

The answers so far have covered the more general electronics stuff pretty well, so I'm going to focus on your mention of the Kinect.

Something Arduino-based is a good starting point for embedded electronics even though you already know C/assembly. What Arduino offers for you is a higher level API -- you COULD muck around with bitwise operations to modify peripheral configuration registers all day, but you have robots to make!

However, it has nowhere near the horsepower needed to make use of a Kinect on its own. It needs quite a bit of USB bandwidth just to process all of the raw output data, let alone do anything useful with it. I've heard of proof-of-concept robots connecting one to a netbook and I think once even a PandaBoard (which has smartphone-level performance using an OMAP chip), but nothing smaller than that.

Start reading up on ROS and the Kinect openni_camera and openni_tracker drivers. Use a laptop/netbook (the Raspberry Pi is apparently too slow to give more than 2-3 FPS) for the Kinect and have that talk over USB to the Arduino, which will control all of your other electronics directly.

• Joe points out an important detail. The popular microcontrollers for small robot projects usually have not enough power to handle a sensor like the Kinect. To give you an idea, here is an interesting project about a "mobile Kinect". They are using an OMAP3530 (contains an ARM Cortex A8), which is more complex and also more difficult to program. Nov 10 '12 at 6:46

It sounds like your enthusiasm is in the right place, but I think you're trying to make intelligent design decisions without knowing what you're designing. This is good! These are all things to be worried about when designing a robot, whether as big as your shoe or as big as your car. But they aren't what you should be worried about right now.

In your situation, I'd choose a robotics kit that's based on an Arduino. That will give you a good starting place in terms of seeing how other people solve the problems of materials, motors, etc. The Arduino has a huge user base and is pretty simple to program and re-program. You can always add your own hardware and software to a kit, to make it do the things you want -- keep pushing the envelope. Also, get some electronic kits (non-robotic kits are perfectly fine); they will teach you a bit about electronics and circuits that would be less fun to learn from a book.

Make as many mistakes as you can. There are no right answers or silver bullets when it comes to building robots... It's an iterative process that comes with bursts of inspiration. If you run out of I/O ports on the Arduino, start looking for another microcontroller board that has more of them. If you find you need more user interaction (LCD, buttons, etc), get a board that supports that.

Just don't try to solve all the problems before you take your first step.