embedded software boot camp

What is Arduino?

Friday, February 18th, 2011 by Michael Barr

Believe it or not, artists, hobbyists, and other “makers” have discovered embedded computing. Increasingly, they’re turning to an open source hardware platform called Arduino to put firmware inside their creations. Over 100,000 of these inexpensive embedded systems have apparently been sold for use in prototyping and in a range of low-volume “products.”

What is Arduino?

Arduino is the name of a family of related circuit boards, which includes the Arduino One shown in the photo below. The official website of the Arduino project is http://www.arduino.cc.

Arduino Uno Circuit Board

Like many open source projects, there appears to be a lot of branching from the original design. So what follows is a generalization. Arduino is based on the Atmel AVR microcontrollers, such as the ATmega328. The ATmega328 is an 8-bit MCU with on-chip memory in the form of 32K flash, 2K SRAM, and 1K EEPROM. In the Arduino designs, the processor is generally clocked at 16MHz.

There are also a whole host of pin-compatible extension boards, containing displays, buttons, sensors, actuators, network interfaces and/or wire-wrap prototyping areas.

The Arduino IDE is an open source cross-platform tool (i.e., written in Java) that is based on the avr-gcc compiler (a variant of the GNU compiler for 8-bit AVRs). Though you can program in the “Arduino language,” this is really just a set of function calls that gets translated into C–so you can also program in C or C++ if you prefer.

An open source bootloader (0.5K) makes downloading your programs to the Arduino board easy.

Should you care about Arduino?

As a professional embedded software developer, I don’t have much use for a prototyping board like the Arduino. I’m generally handed a custom board by a hardware designer on my team. And many of you design both the hardware and the software for your projects. So why should we care about Arduino?

I don’t think I know the answer to this question yet. But it is very interesting to find embedded software being used by such a diverse group of artists, hobbyists, and entrepreneurs. What do you think?

Tags: , ,

14 Responses to “What is Arduino?”

  1. [...] This post was mentioned on Twitter by Michael Barr and billodo, Embedded Gurus. Embedded Gurus said: What is Arduino? by Michael Barr http://bit.ly/gEjQzP [...]

  2. Cuno says:

    One possible answer is: Arduino may be a sign of a disruptive innovation on the horizon. At least that’s the “alpha geek” theory of Tim O’Reilly: http://oreilly.com/pub/a/mac/2002/05/14/oreilly_wwdc_keynote.html.

    Whether Arduino, Netduino (http://www.netduino.com/netduinoplus/specs.htm), and the like will turn into such a disruptive innovation, only time will tell.

    We currently consider using a Netduino Plus for a small customer project (50 to 100 units). Where does prototyping stop, and “real” embedded system design begin?

    What does it mean that companies like ours, which do have hardware know-how but want to mainly focus on software, choose to leverage low-cost off-the-shelf microcontroller hardware (preferrably with entire ecosystems and open source communities around them) for low-volume projects?

    What does it mean if companies can suddenly afford to build their own special-purpose devices, where it used to be out of reach for them (in terms of know-how and money)?

    I don’t know the answers, so I am glad that you started this line of questions!

  3. Lundin says:

    I never understood why someone who is already “professional” would invest the time to learn about how boards like this work. In the time it would take me to figure out how the MCU, the compiler & IDE, the debugger, the bootloader etc etc works, I could already have a simple, custom PCB designed, delivered and mounted, for material and mounting costs < $100. I'd likely be done with the program as well.

    Or I could hand-solder some Frankenstein of my own, that will go even faster and suffice for the prototype stage. Most of the time they work nicely, and then I'm not even a hardware person.

    And then I could pick a MCU I already know in-depth, with tools I already know in-depth. If I were smart I would have picked an MCU with a modern single-wire debugging interface too. That alone will save me from weeks of troubleshooting some icky custom USB/RS232 junk interface.

  4. Miro Samek says:

    I think that Arduino platform (both the hardware and the software ecosystem around it) is important for “professionals”, because it attracts new people to the filed. Thousands of kids, and other “non-professionals” use Arduino to learn about microcontrollers and electronics. This is great. But at the same time it is in the best interest of the embedded community to help these newcomers develop the right skills, as opposed to learning from “spaghetti” code.

    To this end, it would be nice if the newcomers learned the modern, structured way of developing software using event-driven programming, state machines, frameworks, patterns, and modeling. In my last post “Rapid Prototyping with QP and Arduino” (http://embeddedgurus.com/state-space/2011/02/rapid-prototyping-with-qp-and-arduino/), I’ve described the port of QP/C++ framework to the Arduino platform. I’ve already received several letters from users, who applied QP in their Arduino projects ranging from robotics, through electric bikes, cameras to photograph wild wombats, to USB Arduino shields.

  5. Kyle Bostian says:

    I have an Arduino in my desk at work and one on my workbench at home. I’ve used both the Arduino IDE and AVRStudio to generate software for it. It’s served as a platform to test code, evaluate IC’s, run automated tests (eg clicking a relay on and off to get a large number of power cycles on a system, or reading a voltage and logging it periodically) and it serves as my USB-to-TTL async serial converter (as well as SPI.) I know this was all possible with the Basic Stamp or other more traditional micro evaluation boards before the Arduino came along, but it has changed the way I work.

  6. Joey says:

    I have used the Arduino for simple prototyping and what not, and it is a huge time saver. While I die a little bit inside whenever I use their compiler and API, it does make simple testing really quick and easy.

    My problems with the compiler/API is that you write basically a required setup and a loop function that basically get pasted into a main.cpp when you press the compile button. Also, they use the API call AnalogWrite when there are no Analog outs, but only PWM.

    All the software is free, it is programmable through USB, and the hardware is only about $25. Lundin, are you seriously going to design a custom board for testing with fully tested firmware and programmability in less time, cost, and effort than $25 + shipping, 10 minutes of driver/software setup, and programming time? I doubt it.

    I would not say you would want to use this in a product by any means. Use it as Kyle stated…for testing and quick 1-off home applications.

    Also, I would like to mention another prototyping board that I feel blows the Arduino out of the water…the mbed. It is an ARM chip rather than AVR, so you have a much more powerful processor. The API is much friendlier and easier to use. You have more control over the actual chip and code. There is an interface chip that allows you to use an online cloud compiler, which can be an annoyance, but can be turned off and bypassed if you compile using a Keil compiler. It also is in a DIP package, so you can fit it into a breadboard for your test applications.

    Again, I would not put the mbed into any sort of production unit.

  7. Tim Gee says:

    Another great prototype/feasibility platform is Bug Labs: http://www.buglabs.net/

    This platform is great for products made up of embedded system devices integrated with broader information systems.

  8. David says:

    Arduino is for learning and playing, like Curuxa: http://curuxa.org

  9. Ashleigh says:

    I heard a similar prediction of disruptive technology over 20 years ago, when some bright spark worked out that you could use a PC and a soundblaster card to do the things that used to be done on specialised DSP boards. Their view at the time: we don’t need clever hardware designers.

    That was 20 years ago and I see no sudden drop in the jobs market for embedded hardware designers.

    I’m also kind of scared that hobbyists will think they know everything after using these toys. They will know something – more than before – but this is not the same as somebody who can design a product where we can build them reliably by the thousands at low cost.

    I’d consider using them for small volume / tinkering / 1-offs or pieces of test gear. But only if I could not adapt an existing design / board with some hacks to do what I wanted. Because using my own designs I know the hardware and firmware, I can turn something out quickly. Learning something new, and learning it well, is a difficult and time consuming matter – and no matter what the short cuts sooner or later you need to know the real deal.

  10. - Anything that gets more people interested and knowledgeable about engineering is a good thing.
    - There may be business opportunities to provide add-ons/extensions to the Arduino platform.
    - And if some of these prototype experiments lead to a real product, then they will come looking for folks like us (we are a design house) to spin a custom board that is production ready.
    There is nothing very innovative about Arduino – eval boards for many MCU’s serve the same purpose including nifty ones like the STM32 Primer series with free tools and lots of online examples and code.

  11. Giovanni Giorgi says:

    I have discovered Arduino a month ago. I have never used breadbords, leds and so on. It was simply too difficult to do stuff, coded them and then test. Arduino is very easy to use, and I was able to do a small proximity sensor after only two hours of study, trial and errors.
    Arduino rocks!

  12. Nick Merriam says:

    I plan on using Arduino to introduce my children to embedded software. But I can’t really think of another reason that an embedded professional would use Arduino.

  13. Karthik says:

    I have been working in C and C++ for long time and I was new to Embedded. I wish to admit that I cannot do the HW assembling, soldering etc . And I needed a microcontroller platform to test different software algorithms I am developing for my WORK.

    I have been effectively using Arduino to evaluate my algorithms. I could get the HW quite fast & use Development environment to start my work quite easily & quickly.

    It has been so popular that lot of engineering graduates in South India are using Arduino platform.

    Additionally, for me and for some of my friends Arduino is a good ( & also quite cheap ) platform to learn & do hobby projects. Its quite true that one can get EV platforms of other products. I find Arduino quite straight-forward & easy to start using it for my purpose, of course knowing very well what it can support.

    After playing around for some time with Arudino family, I was confidently taking up projects on different target platforms with dual core processors.

    It satisfy me and I am happy using Arduino still.

    Note:
    Thanks Miro Samek for the QP – Arduino port. I believe I am going to have fun with QP & Arduino.

Leave a Reply