Possible Duplicate:
How to become an embedded software developer?

First, I am sorry if this is the wrong stack, feel free to move it to the correct one if possible.

I am a rather experienced programmer, knowing C#, VB.net, PHP, C, C++, Objective-C, Java, JavaScript, and I have even coded briefly in ASM86. That being said, most of my coding is done in Visual Studio, which I prefer as my IDE whenever possible.

After browsing LifeHacker and reading about Arduino, I instantly became interested in building stuff with this. I been researching it the last few days, but figured I can ask some experienced people if this is the best, most flexiable beginner option, or if there are better (specifically since I prefer my Visual Studio IDE) options? I don't mind coding C++ once so ever, though I love Visual Studio so C# would be fine too. I recall seeing something about VS and building robotics, so if that's an option thats fine. However I def do not want to use Java, as I am not found of the language or IDE options (just a matter of preference).

I would appreciate some constructive feedback on which microcontroller would be a good starting point, and would allow a lot of flexibility. I understand I would eventually need to expand to different boards, however I would like to start with one that allows for the best transition to these.

My first project, after doing the basics, will be making a doorbell with MP3 Support. I already know this is possible combining several projects I found for the Arduino (though memory wise, not sure if it can handle), so I need to make sure what I choose is flexible. Note, I have no interest in building huge robots that battle, almost anything I build would be DIY convince items for my house. Plus I always wanted to learn the principles of circuitry.

If Arduino is the best option, I would love some advice on nice starter kits. I found a few already, but it always helps to have feedback from users who have used the kits. I know this kit won't include what I want for my first project, but I would like one that includes everything I need to do all the basics before I move on to this project.

Thank you so much in advance for your feedback!

Edit: I am currently looking at netduino.com as we speak including reading: Should I buy a Netduino or Arduino?

  • \$\begingroup\$ Can anyone tell me how to reopen this? It was closed by Kevin due to a duplicate, however what he linked as a duplicate has ABSOLUTELY nothing to do with my question. \$\endgroup\$ – Anthony Greco May 30 '12 at 18:58
  • \$\begingroup\$ The supposed duplicate question is similar, but I also think your question is more specific and answerable. The other question has a very wide scattering of answers that I think confuse more than illuminate. It takes 5 votes to reopen a question, so it's not likely, but I have cast my one vote. \$\endgroup\$ – Olin Lathrop May 30 '12 at 19:28
  • \$\begingroup\$ I do appreciate that. I contacted him also in the ask a moderator chat. If not, I believe I am basically between Netduino and Arduino anyways, so that other post is very helpful. Thanks for the support! \$\endgroup\$ – Anthony Greco May 30 '12 at 19:30
  • \$\begingroup\$ This is a consistent issue, we have a mass of users visiting our site from stack overflow. This question in a very close form is asked regularly but wen cannot constantly answer opinion questions of what kits someone should buy with a lightly different situation. I can write 10 different answers that are all equally valid to this, what you are asking is too broad. We accepted an answer was needed though and the question your post was closed as a duplicate of is our answer to that. (cc@OlinLathrop) \$\endgroup\$ – Kortuk May 31 '12 at 5:03
  • \$\begingroup\$ I appreciate the fact that you feel this is to vague and an opinion question, thus the reason for closing it. That in itself is completely acceptable. However, in no way once so ever is my question even remotely related to his or any answers in his. The "it is a duplicate" is extremely miss leading and anyone who stumbles upon this and reads that in attempts to get help is going to be wasting their time, because it does not relate once so ever. You in essence wasting peoples time linking to that. \$\endgroup\$ – Anthony Greco May 31 '12 at 18:19

It depends on what your true goal is, to really learn about microcontrollers or to get a few projects done.

If you just want to get something done without too much having to know what is really going on, then a arduino or some other development kit like that is a good choice. These put a lot of infrastructure around the micro and dress it up with layered constructs so that you can get basic things done without a large learning investment. The downside is that all that abstraction obscures the lower levels, so this is not a good way to go if your aim is to understand those lower levels and what goes on under the hood. They also of course cost more than a bare micro, although even with a bare micro you'd have to provide some of the infrastructure yourself. Microchip has come out with a arduino compatible board that uses a PIC 32 under the hood. I forget the exact name, but from the little I've looked at it, it appears to be a good value and has better performance than traditional arduinos that use Atmel processors under the hood.

If you want to really learn microcontrollers, then there is no substitute for getting into the low levels yourself. This will take more investment to learn, but in the end you'll be able to do a lot more with the same chip than what the abstraction layers of the sugar coated arduino-like products give you access to. If this appeals to you, then start with a simpler microcontroller and do a few projects in assembler. In this mode, even just a compiler becomes a obsuring layer between you and what you want to learn. This is not to say eventual projects can't be done with a compiler, but that you need some assembler experience to really appreciate what is going on and the issues the compiler faces on your behalf. Since you're not looking to do volume products, it doesn't matter whether the micro costs $5 or $1. I am most familiar with Microchip's offerings, and from their product line I'd stick to the 24 bit core varieties. In particular, I'd start with a small 33F part, but the 24, 30, and 33 series are all the same instruction set. The C30 compiler for these is quite good, unlike the compiler for some of the other PICs. The compiler's calling and stack conventions makes sense (again, unlike with some other PICs), and it's easy to write assembler routines that are callable from C30.


  • \$\begingroup\$ I appreciate the feedback and detail but I really have no interest to understand the bare bones of what is happening, just what is needed for the end result. This is why I code VB.net/C# and not Asm. Sure, ASM is far more flexible and controlling, but I'd rather not worry about the tiny things and concentrate more on the overall result. Just as I am not worried about how data moves to and from memory blocks, like ASM allows, I just let the .NET framework handle all that and I concentrate more on the overall end result. \$\endgroup\$ – Anthony Greco May 30 '12 at 18:57
  • \$\begingroup\$ @Anthony: I wasn't sure what your aim was, so I answered both ways. As I said, for that case I recommend getting something arduino-like. Again, check out the PIC 32 arduino-compatible board from Microchip, although there are lots of other offerings out there too. \$\endgroup\$ – Olin Lathrop May 30 '12 at 19:26
  • \$\begingroup\$ Yup for sure, I am now comparing the Arduino and the Netduino to see which will allow the most flexibility. I'm worried about arduino's memory limits. I appreciate the feedback and since this was marked as a duplicate of a question that has absolutely nothing to do with my question, i will mark yours as the answer, so at least someone gets reputation points for this. Thanks again! \$\endgroup\$ – Anthony Greco May 30 '12 at 19:27

Not the answer you're looking for? Browse other questions tagged or ask your own question.