The world of development boards in the hobbyist and educational market is exploding; every year there are new boards with new chips — cheaper, faster and with more bells and whistles. Some of the most common questions we get about our boards at events are: “So, is this thing kinda like a Raspberry Pi?” or “So, what is the difference between a microcontroller and a microprocessor?"
A [development board] is a printed circuit board containing a microprocessor/microcontroller and the minimal support logic needed for an engineer to become acquainted with the microprocessor on the board and to learn to program it.
When I started writing this, I found it nearly impossible to get what I wanted to say down to a single, concise blog post. After much thinking and frustrated writing, I decided to make this blog post a series, with this post being an introduction to set some base knowledge on the subject of development boards. From here I plan to write three more posts: the next on microcontrollers with a lens on boards that are programmed using Arduino; followed by a post focusing solely on single-board computers that are popular or could be popular in the classroom; and finally one diving into microcontrollers that do not fall cleanly into any other posts for one reason or another. So, let's get started!
What is the Difference Between a Microcontroller and a Microprocessor?
These two words get used interchangeably by people at times when talking about development boards. We have become so accustomed to computers being an everyday occurrence that everything just must be a microprocessor. In fact, there are way more microcontrollers in our lives at the moment than microprocessors. For this argument we will compare an Arduino Uno (microcontroller) and a Raspberry Pi (microprocessor). So, what is the difference? The difference essentially comes down to three things: the first is process, the second is speed, and finally application.
Think of a microcontroller as a person who is really, really good at being focused on a single, repetitive action. We all know those people in our lives who are horrible at multitasking. A microcontroller is that person. It does one thing, over and over and over again. It physically cannot do two things at once.
A microprocessor, on the other hand, is really good at multitasking. In fact, it is running the computer or phone that you are reading this post on right now. While you are reading there are tens if not hundreds of processes going on in the background of your device that the microprocessor is keeping track of and prioritizing — basically playing air traffic control or traffic cop for information.
Then comes speed. An ATmega328P microcontroller, the bread-and-butter chip behind Arduino, runs at 8MHz or 16MHz, which translates to roughly 8 million or 16 million instructions per second. That is crazy fast! But, what is the speed of a microprocessor? The Raspberry Pi 3 runs at 1.2GHz. A lot faster than a microcontroller! Now, this is kind of comparing apples to oranges, but I think it illustrates my point. For you visual people it comes down to the picture below. The microcontroller is the little red pickup, and the Raspberry Pi 3 is the big rig.
Now, a lot of people may ask, “Then why not just always use the Pi (big rig)”? My answer is: Have you ever driven a big rig? Put fuel in a big rig? Tried to park a big rig? It’s more complicated, more expensive and harder to use. The little red pickup is economical; it’s perfect for going to the hardware store to get a few 2x4s or a load of gravel. The big rig is for loading an entire house worth of lumber.
The third and probably most visual difference between the two chips is their application. Generally, a microprocessor is used in applications that need a lot of computer power, which usually lands in the area of something visual on a screen, or managing multiple tasks at the same time as in a website server. These things happen virtually in memory for the most part and are outputted through a monitor. A microcontroller has no visual output, no way to hook up a monitor or keyboard. A microcontroller is designed to control physical things. Turn things on and off, read sensors, spin motors, etc. You give it instructions by writing code and then uploading those instructions to the chip from a host computer. On the flip side, on a microprocessor you can physically write code on the microprocessor to control the microprocessor… nutty!
When looking at different development boards with an eye toward the classroom, there are a number of advantages and trade-offs to be made for both microcontrollers and a microprocessor-based development board. Many times these trade-offs span beyond the boards themselves into things like supporting hardware and peripherals, other components to make things work and the level of programming experience needed just to use the boards. Through the next few posts of this series we will explore just that: What are some good development boards for both microcontroller and microprocessor and some potential applications in the classroom. There is no sense in going nuts on expensive, hard-to-use hardware when all you want to do is blink some LEDs!
Let us know what questions you'd like for us to answer in this series in the comments below.