While originally developed for educational purposes, the Arduino may just find a home in the IOT. Its form-factor looks like a hobby and education product and it's marketed as such.
What many people don't realize, however, is that the only thing needed to make an Arduino an Arduino is the right MCU and the firmware inside of the chip, so as a platform it just might work in commercial applications.
The name "Arduino" is a trademark owned by the inventors, but the design and code are open-source, allowing engineers to adapt it to other MCU platforms. I recently read that a million Arduinos have been sold. I bought my first in 2012. At the time, it seemed like the great hobby and education tool it's presented as. In that form, however, it has limited application in the commercial embedded space. The Arduino hardware form-factor and language overhead add too much burden for size-sensitive and cost-sensitive applications. The 8-bit MCUs just don't have enough memory or compute cycles left over to be very useful in applications more in need of performance.
That being said, the Arduino architecture and language have the potential to become a more universal platform. Many 32-bit MCU-based Arduino-compatible designs are arriving: The PIC32 ChipKIT and the ARM-M3 Arduino Due, for instance, have shown up recently. Both use the same code-compatible language and operationally compatible IDE despite radically different internal architectures. Other boards, like the Freescale Freedom, are at least pin-compatible with the Arduino, allowing use of its add-on hardware shields. That's a big part of the beauty of open-source in this case. People who are experts in 32-bit MCUs can port the language and IDE to their products without being held up by patent or copyright issues. We don't have to wait for one company to do it all.
In addition to two standard Arduinos, I own a ChipKIT uc32 Arduino-compatible. The 32-bit, 80 MHz MCU with 512K Flash and 32K SRAM changes the Arduino equation significantly. While the original often struggles with more than one complex peripheral (e.g., WiFi and a bitmapped display), the 32-bit system does not.
Here's my case for considering the Arduino a legitimate and viable platform for commercial applications:
- It's quite cross-platform -- code for one variant usually runs on another
- It just needs the right firmware to make a chip Arduino-compatible -- the whole board isn't necessary
- A lot of great community support -- many new peripherals get driver support quite soon after introduction
- Libraries for a very large set of peripherals
- Easy to get up and running -- all of the MCU configuration is handled by the language
These days, it's not uncommon for non-electronics or software engineers to be tasked with adding electronic controls to a device. This practice will likely only become more common as the IOT spins into full gear. An interface designed for newcomers to the MCU world can considerable shorten the learning curve.
As I mentioned above, it's the firmware that really makes the chip an Arduino. For any given variant, the stand-alone MCU chip needs just two things to allow it to use the Arduino language: a UART or USB interface and an Arduino bootloader. For a USB-enabled MCU, the extra hardware needed above the MCU may add up to little more than a connector.
Finally, once an MCU has been turned into Arduino-compatible and built into something, it doesn't have to stay that way. The same chip can be used with the bootloader, or used with native code. This can allow for rapid prototyping and longer term performance optimization without hardware changes.
A 32-bit Arduino-compatible platform will not be appropriate for all applications. No language is. But, if the current 32 bit trend continues, it could have a big future in the IOT. What do you think? Does the Arduino language, given the right MCU, have a future in the professional world?