Difference between revisions of "Microcontrollers for Beginners"

From OpenCircuits
Jump to navigation Jump to search
 
(19 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 +
One of the first questions that comes up is: Which microcontroller should you use?  This page gives you an answer and the reasons behind it.  Also included are some links to useful products for beginners.
 +
 +
 
== Assumptions ==
 
== Assumptions ==
 
You:
 
You:
*  Do not have a lot of money
+
*  Do not have a lot of money.
 
*  Do not have a lot of electronics gear or experience.
 
*  Do not have a lot of electronics gear or experience.
 
*  Do not have a lot of programming experience.
 
*  Do not have a lot of programming experience.
 
*  Do want quick gratification.
 
*  Do want quick gratification.
 
*  Do not want to do really fancy stuff right off the bat.
 
*  Do not want to do really fancy stuff right off the bat.
*  Do not want to make a lot of decisions befor you can get down to work.
+
*  Do not want to make a lot of decisions before you can get down to work.
  
 
== Use the Arduino ==
 
== Use the Arduino ==
Line 12: Line 15:
 
Use the Arduino Because:
 
Use the Arduino Because:
  
*It is a development board
+
*It is a development board and a development environment. 
 
*It is inexpensive.
 
*It is inexpensive.
 
*There is a broad amount of activity on the web, and a lot aimed at non technical users.
 
*There is a broad amount of activity on the web, and a lot aimed at non technical users.
*It and its software ( including a full development environment) is free, maintained, and open source.
+
*Its software ( including a full development environment) is free, maintained, and open source.
*There is a lot of library support for common tasks.
+
*There is a lot of library support for common tasks.  '''Really Really''' a lot, more than I have seen for any other single uC environment.
 
*You do not even need a programmer, comes with a serial bootloader.
 
*You do not even need a programmer, comes with a serial bootloader.
 
*There are a bunch of "Shields" available as add ons: [http://adafruit.com/index.php?main_page=index&cPath=17_21 Shields Stuff to stick on your arduino!]
 
*There are a bunch of "Shields" available as add ons: [http://adafruit.com/index.php?main_page=index&cPath=17_21 Shields Stuff to stick on your arduino!]
 +
*Connecting Arduino projects to a PC is easy using a programing environment on the PC that is similar to the one for the Arduino ( Processing ).
 +
*Making this one choice saves you from a bunch of other questions.  If you choose a PIC you still have to decide: which PIC what board or circuit, crystal or resonator, which language, which compiler for the language, which hardware programmer?
 
*This answer is a little bit of a cheat because it does not recommend a microcontroller, it it a development board and a development environment.  But that is a powerful choice for a beginner, it does an end run around a bunch of possible problems.
 
*This answer is a little bit of a cheat because it does not recommend a microcontroller, it it a development board and a development environment.  But that is a powerful choice for a beginner, it does an end run around a bunch of possible problems.
  
 
=== Arduino Limitation and Why they Do Not Matter ===
 
=== Arduino Limitation and Why they Do Not Matter ===
  
( needs work )
+
*Even with the Arduino there are choice of which one to get.  But it is hard to make a really big mistake, and the info. on each choice is pretty available and easy to understand.
 +
*The development environment does not include a simulator.  Lots of times simulators are not useful because of the dependence on external events and the limited and difficult use of "stimulus files".  Generally simulator are not really easy to use.  But it would be nice to have one.
 +
 
 +
( needs more work )
 +
 
 +
== Not a Beginner ==
 +
 
 +
Use the Arduino.  Within its own environment you are using C ( or C++ ) and you can do almost anything the chip can do.  Only when you have special needs for chips with special characteristics do you need to move on.  And the code is good high speed stuff ( I know not quite as fast as assembler ) And then you should still probably stick to C.  C is thoroughly professional even if some times you have to use assembly to have real hair on your chest ( and is that really good? Not my favorite chests ).
  
 
== Use Something Else ==
 
== Use Something Else ==
Line 53: Line 65:
 
== Other ==
 
== Other ==
  
 +
*[http://www.eevblog.com/2009/11/ EEVblog #45 – Arduino, PICAXE, and idiot assembler programmers] I normally to not like videos, but this is worth the 20 minutes it takes.
 
*Google "Microcontrollers for Beginners" many of the references will not agree with the above.  I have looked at a lot of them and am not convinced, maybe you will be.
 
*Google "Microcontrollers for Beginners" many of the references will not agree with the above.  I have looked at a lot of them and am not convinced, maybe you will be.
 
*[[Arduino Links]]
 
*[[Arduino Links]]
 
*[http://forum.allaboutcircuits.com/showthread.php?t=21358 Which uC (Microcontroller)? - discussion]
 
*[http://forum.allaboutcircuits.com/showthread.php?t=21358 Which uC (Microcontroller)? - discussion]
 +
*[http://www.uchobby.com/index.php/2008/12/07/where-to-start-with-microcontrollers/ Where to start with Microcontrollers]
 
*[http://www.instructables.com/id/How-to-choose-a-MicroController/ How to choose a MicroController]
 
*[http://www.instructables.com/id/How-to-choose-a-MicroController/ How to choose a MicroController]
 +
*[http://todbot.com/blog/2006/09/25/arduino-the-basic-stamp-killer/ Arduino, the Basic Stamp killer]
 +
*[http://en.wikipedia.org/wiki/Arduino Arduino From Wikipedia, the free encyclopedia]
 +
* [http://scott.sherrillmix.com/blog/programmer/easypic4-first-impressions/ "EasyPic4 First Impressions"]: Scott Sherrill-Mix says the "EasyPic4" at least appears to be the easiest way for beginners to start. It uses the PIC 16F877A.
 +
 +
== Inexpensive Starter Kits ==
 +
New to electronics, these kits have the Arduino plus other parts you may well want.
 +
Most of these kits seem to be priced close to, or even lower than the sum of the components.
  
 +
*[http://www.sparkfun.com/commerce/product_info.php?products_id=9284  Arduino Starter Kit] about $60.
 +
*[http://www.adafruit.com/index.php?main_page=product_info&products_id=68  Arduino Starter Pack - 1.0] about $65. from AdaFruit
 +
*[http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193 Arduino Budget Pack - Duemilanove w/328] about $50, reduced version from AdaFruit.
 +
*[http://antipastohw.blogspot.com/2007/12/review-adafruit-arduino-starter-pack.html Review: Adafruit Arduino Starter Pack] Review.
 +
*[http://aaroneiche.com/2009/06/29/arduino-starter-rundown/ Arduino Starter Rundown Comparing the two] Review of the two above.
 +
*[http://aaroneiche.com/2009/07/16/arduino-starter-rundown-part-2/ Arduino Starter Rundown -part 2] 5 more kits reviewed.
 +
*[http://www.hacktronics.com/Arduino/Arduino-Starter-Kit/flypage.tpl.html Arduino Starter Kit] about $40.
 +
*[http://moderndevice.com/ Bare Bones Board Kit] As basic as you can get about $16. Not the standard pin out, rs232 ttl, no cable, no nothing but the board.  Pretty good if you have some idea on how to fill in the blanks.
 +
*[http://www.makershed.com/SearchResults.asp?Search=arduino Maker Shed: Search on Arduino] From Make, a bunch of products.
  
  
 
[[Category:Microcontroller]][[Category:Arduino]]
 
[[Category:Microcontroller]][[Category:Arduino]]

Latest revision as of 01:26, 14 August 2010

One of the first questions that comes up is: Which microcontroller should you use? This page gives you an answer and the reasons behind it. Also included are some links to useful products for beginners.


Assumptions[edit]

You:

  • Do not have a lot of money.
  • Do not have a lot of electronics gear or experience.
  • Do not have a lot of programming experience.
  • Do want quick gratification.
  • Do not want to do really fancy stuff right off the bat.
  • Do not want to make a lot of decisions before you can get down to work.

Use the Arduino[edit]

Use the Arduino Because:

  • It is a development board and a development environment.
  • It is inexpensive.
  • There is a broad amount of activity on the web, and a lot aimed at non technical users.
  • Its software ( including a full development environment) is free, maintained, and open source.
  • There is a lot of library support for common tasks. Really Really a lot, more than I have seen for any other single uC environment.
  • You do not even need a programmer, comes with a serial bootloader.
  • There are a bunch of "Shields" available as add ons: Shields Stuff to stick on your arduino!
  • Connecting Arduino projects to a PC is easy using a programing environment on the PC that is similar to the one for the Arduino ( Processing ).
  • Making this one choice saves you from a bunch of other questions. If you choose a PIC you still have to decide: which PIC what board or circuit, crystal or resonator, which language, which compiler for the language, which hardware programmer?
  • This answer is a little bit of a cheat because it does not recommend a microcontroller, it it a development board and a development environment. But that is a powerful choice for a beginner, it does an end run around a bunch of possible problems.

Arduino Limitation and Why they Do Not Matter[edit]

  • Even with the Arduino there are choice of which one to get. But it is hard to make a really big mistake, and the info. on each choice is pretty available and easy to understand.
  • The development environment does not include a simulator. Lots of times simulators are not useful because of the dependence on external events and the limited and difficult use of "stimulus files". Generally simulator are not really easy to use. But it would be nice to have one.

( needs more work )

Not a Beginner[edit]

Use the Arduino. Within its own environment you are using C ( or C++ ) and you can do almost anything the chip can do. Only when you have special needs for chips with special characteristics do you need to move on. And the code is good high speed stuff ( I know not quite as fast as assembler ) And then you should still probably stick to C. C is thoroughly professional even if some times you have to use assembly to have real hair on your chest ( and is that really good? Not my favorite chests ).

Use Something Else[edit]

If the assumptions do not apply to you, or you have some special requirements then:

At least use a development Board[edit]

You are ready to go at almost the cost of components, you can get a kit or prebuilt. Some of these are:

  • USB Bitwacker
  • PIC Kit 2 or clone
  • Insert your favorite here.

Use a high level language[edit]

The best language may be C: this is written about the PIC but applies to other processors as well Use C for PIC Programming!

but almost any is better than assembler -- this is despite what the hard core says.

Down to the Metal[edit]

Lots of people like the PIC. I like the PIC. One of the great things about the PIC is that it is so popular. That means lots of code on the web, lots of programmers, languages.... There are also lots of different model PIC. That means you can buy just the right size PIC and not even pay 50 cents to much. And you can pay in the range of 50 cents for the chip. This can matter a lot when you are making a few thousand of your circuits. You can fine tune assembly language for the chip, design your own circuit board. But it is a not quick way to get results. If this approach interests you then consider the PIC. You can also buy the microcontroller on its own and work in a way similar to the PIC. And of course there are other families of microcontrollers. Move in this direction when and if you hit the limitations of the Arduino.

Room for Opposing Views[edit]

If you do not agree with the above, add your comments here or add a link to a new page to explain your opinion. Please do not re-edit my views ( but you may edit to strengthen the argument).

Other[edit]

Inexpensive Starter Kits[edit]

New to electronics, these kits have the Arduino plus other parts you may well want. Most of these kits seem to be priced close to, or even lower than the sum of the components.