For last few months i have been playing around with Arduino. I came to conclusion that this platform is probably only one which I can recommend and develop for. Let me try to explain how I arrived to that conclusion...
It's easy to use for novices
This is especially important for me, since I'm mostly software kind of person. I don't solder and probably never will. But using just a few wires and so many good tutorials on the web together with availability of sub-$10 sensors and peripherals on Chinese sites or ebay it seems that we are currently in situation where anyone can get into hardware. And everyone should, at least to know what is possible. Arduino was design with teaching in mind in the first place.
There are lot of good examples
This basically boils down to: It's googlable. I'm aware this is not real verb, but what I mean by it is: there are enough info about every single peace of hardware you might buy if you just enter it's designation and arduino in google. That's a huge benefit and only other embedded platform which comes close to it is probably Raspberry Pi.
There is support for different architectures
This is probably point which is not obvious at first, but makes me most excited about Arduino. Let me try to list just some of them (this is somewhat random selection, not exhaustive comparison of characteristics of all the Arduino boards):
- Arduino Uno - ATmega328, probably best one to get started
- Arduino Mega - ATmega2560, as the name implies, it's probably second board you will buy when Uno becomes too small for your project
- Arduino Due - Atmel SAM3X8E ARM Cortex-M3 CPU, first official Arduino board which isn't AVR. This makes my point about different architectures clear, but read on...
- Pinguino - PIC18 8-bit or PIC32 32-bit CPUs, so if you dislike AVR you don't have to use it :-)
- The Maple - STM32F103RB 72MHz ARM Cortex M3, exists longer than Due and included here to show that Arduino wasn't driver for multi-platform CPU support
- Energia - MSP430 16MHz board for under $10
- pcDuino - A10 1GHz ARM Cortex A8, this is full-fledged Linux machine with Arduino IDE support (it can also run Android, but we are not interested in that).
- Papilio FPGA - Spartan 3 or Spartan 6 FPGA boards with support for Arduino IDE. If your design does signal processing, this is right path forward with your code, but you will have to learn VHDL and/or Verilog also! It supports two different CPUs implemented in FPGA: AVR8 - Clone of the AtMega103 chip with standard AVR peripherals and ZPUino - Arduino on steroids: 100Mhz, 32-bit, 96Mhz, up to 8MB code space.
Open hardware respects your freedoms
Having all this CPUs and boards available (and in open hardware fashion which means with full documentation) makes me confident that I'm not wasting my time implementing something today. You will have to read schematics and examine data-sheets anyway, so having all documentation (and files required to produce your own boards) is very beneficial.