If you have any interest in either electronic circuits or micro-controllers, you have probably heard of the Arduino. Unless you have actually worked with the Arduino, you may only have a vague idea of what all the excitement is all about. If you are one of those who have wondered what the Arduino is, would like to know more about it, this article will answer most of your questions and give you a good grasp of the concepts.
Since this article is geared toward those with no or little prior knowledge of the Arduino platform, you may be inclined to skip it if you are more experienced. There is however, some useful information for the more experienced. You may often find yourself at a loss for words when describing the Arduino or your Arduino based projects to your family and friends. In that case, you might find this tutorial provides a good framework for improving your communication.
What is an Arduino?
The Arduino is a microcontroller based platform. It is not a microcontroller, but is an entire development/engineering environment and eco-system based on a family of microcontrollers from the Atmel corporation.
There are many microcontrollers from various corporations available, and Atmel is only one of them. Each company supplies their own development boards and integrated development environments (IDEs) for them, including Atmel. In this regard, the Arduino is just another platform. What sets the Arduino platform apart from the ones supplied by the manufacturers is its ease of use and accessibility to non-engineers.
The Arduino platform consists of three distinct areas. Each one is specifically designed to lower the barriers of entry to the world of microcontrollers. The first area is the development board, the second is the IDE, and the third is the programming language & library. We will examine each of the areas in detail and compare them to more traditional microcontroller environments.
The Arduino Board
This first innovation in the Arduino platform is the development board itself. Traditionally, microcontrollers require rather expensive programmers or development boards. Furthermore, these tools only serve to program the actual chip, which then must be deployed in its final circuit. In the world of professional microcontroller development, several engineers work on a project, each one assigned to a different aspect. Typically, the programmer never touches the actual hardware and the hardware engineer never touches the software.
In contrast, the Arduino board is meant to be used by one person who both programs it as well as designs the hardware. It is geared especially toward rapid prototyping. Instead of being a stand-alone programmer, the entire board simply plugs into a computer for programming and can then be deployed into its final use. It meets two design goals in order for this scenario to happen.
First, the board is small, inexpensive, and requires no additional hardware to make it work. Second, it has two rows of pin headers which accept daughter-boards, which are called shields. These shields can even be designed to be stacked, allowing a complete set of hardware to simply be plugged in and ready for deployment.
This setup not only facilitates rapid prototyping, but is inexpensive enough for actual end use in a project with little if any actual hardware design.
The Arduino IDE
The second innovation in the Arduino platform is an easy to use IDE. Just like the board is designed to make it easy to use for non-engineers, likewise the software development platform is designed to be easy to use for non-programmers. It is based on Processing, which is development platform designed for non-programming artists to make use of computer programs for artwork.
Despite its artistic heritage, the bottom line is that the IDE is drop-dead easy to use. You simply fire it up, choose from your own programs or one of the many supplied examples, click upload, and your board is off and running. Software programs are called sketches in the Arduino world, but they are really just programs.
Unlike most commercial IDEs, you don’t need to mess with any technical details to upload your sketches. You simply choose your Arduino variant and click upload. The program will automatically compile and upload to your Arduino. It is also cross-platform, so it is very friendly to the open source community.
The Arduino Language & LibraryThe third (and best IMHO) innovation is the choice of language and the supplied libraries. Like the IDE, the Arduino team made use of another project called Wiring. This project developed the innovative libraries available. In order to appreciate how powerful this system is, let us first examine how traditional microcontroller development is done and then compare it to the Arduino way.
In traditional development, you have the choice of two languages – assembler or C. If the thought of using assembler gives you shudders, you are not alone. Even using a compiled language like C is not much of an improvement. Since most of your code will be stuffing bits into the registers on the microcontroller, you are really not much better off.
In contrast, the Arduino language is C++, and it supplies a vast number of libraries as well as user contributed libraries. The libraries are really powerful. It is more like developing in Java or Python. For example, instead of stuffing bits into registers, you can call simple functions such as
digitalWrite(pin, in/out) or
digitalRead(pin). The first function will turn a pin on or off, and the second one will check for input.
It gets even better. If you want to write to an LCD display, there are libraries available that make that task effortless for many popular displays. The same is true for various types of serial communication, motor control, even connecting to the Internet.
ConclusionThe Arduino platform is not just a microcontroller board. It is both a platform and an eco-system. Third parties regularly develop new shields and new libraries. No matter what your task, there is usually a ready-made solution both in hardware and software available.
The Arduino platform has become so successful that it has eclipsed other platforms such as the Basic Stamp which came before. Not only is it the premier platform for getting started in microcontroller design, but it is being imitated by the open source community for other microcontroller families as well. The Pinguino project is one example of an Arduino clone designed around the PIC family of microcontrollers.
If you are new to the world of microcontrollers, the Arduino is the best place to start. Since it is the most popular platform, the community at large is really active. That makes support easy to get and finding the information you need is even easier. Add to that great support is the large eco-system surrounding it, and you just can’t go wrong with the Arduino.
If you feel intimidated or reluctant to start, just spend some time on the great Arduino website and order the current Arduino board called the Uno. Other than a computer and a serial cable, you won’t need anything else to get started in the wide wonderful world of microcontrollers.