I really like the simplicity of the Arduino IDE, but there are some issues compared to alternatives.
- Cost of boards and sensors
- Management of large projects
- Support for Real-Time OS
- Support for H/W level debuggers
I did start my development with Arduino DUE ($45) and Pololu AltIMU-10 ($50) and had some issues with Timer Control and I2C interface. The TC issues were addressed with my own version of TC library. The TWI and Wire libraries were not "fast" enough for effective polling the IMU sensors trough 100 kHz I2C line. I did create my own I2C library allowing the speed increase to 5 MHz (running only at 4 MHz to give some extra tolerances). Gradually there were other issues and I started to look for alternatives.
I was positively very surprised for the the new Discovery boards from STMicroelectronics. They are very, very low cost and high performance with rich functionality.
1. STM32F401C-DISCO is sold for $14.50
- 32 bit with floating point
- 84 MHz, 64 KB RAM, 256 KB Flash
- H/W level debugging w/o any extra H/W or special cables
- 9 DOF IMU sensors (replacing my AltIMU-10), connected through SPI (5 MHz)
- Buil-in microphone and full audio support
- 8 LEDS
2. STM32F429I-DISCO is sold for $24.00
- 32 bit with floating point
- 180 MHz, 256 KB RAM, 2 MB Flash
- H/W level debugging w/o any extra H/W or special cables
- 3-axis gyro
- 2.4" QVGA TFT LCD
- 6 LEDS
Note that with $14.50 I am getting a lot of more than I got with my $95 ($45+$50).
On the negative side, it was a challenge to find a good (for my needs) low cost (free) IDE. Finally I did end with emIDE that is based on the Code::Block development. At the moment, I am still very clumsy with that, but the emIDE development team is giving 1st class support.
In ideal case, I would like to use Arduino IDE for all my development projects accepting the fact that there are differences in library support. Already now the combined support for AVR and SAM with the "same" libraries are causing some issues. It would be nice to have a large (as large as possible, but not any larger) common core library, and different libraries for different processor families and in some cases for family members.
I am interested to do development for DUE, Galileo, and STM32F4 (and STM32F5 and STM64F6). When Arduino IDE can support that?