Thanks to my work with BlueStamp Engineering, I have the pleasure of watching people take their first plunge into the world of coding with microcontrollers. It's fun to observe the trepidation of the unknown morph into the first hint of understanding and finally result in a level of comfort with the task. I've spoken with several people who are curious about the best platform to use when introducing students to firmware. As with any engineering solution or teaching method, there is no single best approach, and I've had varying levels of success with a few different systems. My canned response has always been:
“The best way to learn a new system is by recreating another person's project. So if you don't care about the microcontroller, I suggest finding a fun project and using whatever system the original designer used.”
However I've noticed several differences between the microcontroller platforms that students have worked with, each with its own strengths and weaknesses. It is still probably best to pick a first project based on the students' level of interest to provide motivation through the harder parts of the project, but this may help sway the decision.
Quickly becoming the household name in beginner microcontrollers, Arduino is specifically targeting a person who is new to electronics. A beginner can pick up an Arduino Uno from Amazon Prime for about $20 and get going right away thanks to the many example projects and not needing to buy a programmer to get started. New users will immediately enjoy the limited programming language, which is a modified version of C. There is 'the way everyone' accomplishes specific tasks such as dimming an LED with PWM, communicating over SPI, etc... This is particularly handy when trying to learn how to code by looking at examples of completed projects. The downside is that the limitations can make it difficult for an experienced user to come up with a custom approach or tackle a problem in a unique way.
Texas Instruments MSP430 line:
Texas Instruments came out swinging with their MSP-430 'value line' microprocessors led by its flagship 'Launchpad' demo kit, available for just $4.30. Because of its low price and no need for a programmer, it is the cheapest way to get in the microcontroller game. TI's biggest strength is that a developer can start with the simple Launchpad, and cultivate marketable skills with a development environment (CCS or IAR using C or C++). The MSP430 also represents an expansive part line that is well suited for professional designs intended for production, with a part to suit almost any design. However toolsets that offer a pro all of the flexibility he or she may need makes for a steep learning curve. Novices may be intimidated by all of the different settings, or worse, accidentally change (and break) something that is misunderstood.
Microchip has a lot of experience making excellent microcontrollers called 'PICs', with chips ranging from small 5-pin microcontrollers to larger chips capable of DSP operations. The professional development environment and line of parts gives PICs similar costs and benefits to the MSP430. While they don't specifically target beginning coders like Arduino and TI, many novices will use their parts for features or size. Instead of offering a 'starter kit' that allows developers to plug an assembled board directly into a USB port, a circuit needs to be built from the IC on a breadboard so a separate programmer can handle the communication from the computer to the chip. This may seem intimidating at first, however a budding developer may appreciate working with a protoboard that only has the 10 required parts on it instead of a packed SMT development kit, most of which remains unused.
There is no 'bad' way to get into microcontrollers – I've found it is best to allow the student/developer pick their favorite approach for their task. Thanks to the low cost of all of these tools, if one solution becomes too annoying, it is cheap and easy to try another platform. With so little to lose, the key is to just get started!