Scope:
A lot of times when approaching the subject of product development ARDUINO option arises, in this article I outline the advantages and disadvantages of using ARDUINO as a platform for hardware development.
ARDUINO – brief overview
In order to understand the subject, it is important to understand what is the ARDUINO system.
The ARDUINO system is an open hardware platform- that includes a freeware programming software.
An open hardware platform means that the ARDUINO company advertises its electronics documentation freely, which means anyone can use this hardware for their own use, and also copy it and manufacture for themselves
(The hardware system essentially consists of a microcontroller, and connectors, allowing easy connection from the micro-controller’s GPIOs to external devices).
The ARDUINO programming software is free of charge, and once the user writes a program, he can download the code into the ARDUINO via a simple USB cable.
Thus, the ARDUINO allows creating a micro-controller based hardware easily- skipping the hardware development stage (by using the existing ARDUINO system) and going directly to the programming stage.
ARDUINO pros and cons
Although, as described above, the ARDUINO can save significant time and money there are also disadvantages to this system which are worth mentioning for anyone considering using this system.
ARDUINO pros
- The most significant pro for the ARDUINO system, as mentioned above is the fact that the hardware is already developed, saving the significant stage of hardware development.
- Easy to use programming software: the programming software is based on the assumption that the potential user does not have a special training in technology, therefore it is built as a “plug and play” system. The interface is very user friendly and uncomplex.
- Since the ARDUINO is a very common system, there are a lot of program examples distributed by ARDUINO company, as well as independent sources. This means that the base of the programming will already be written, and there will only be a need to adapt the program to the specific product’s needs.
- Since the ARDUINO system is very common, there is a lot of user experience, the potential bugs of the system are most likely solved or well discussed on the web.
- There are literally thousands of readymade external peripherals available for the ARDUINO core system (referred to as “shield”), so it is most likely that for most products there is an existing shield that can be used.
- Fast time to market: since the ARDUINO allows skipping the hardware development stage the ARDUINO based product can be ready for market distribution relatively fast.
ARDUINO cons
- Lack of hardware flexibility: since the hardware of the ARDUINO is an “of the shelf” system, there will be some parts that do not fit the exact requirement of the specific system, and as opposed to a tailor-made hardware there is no option to make any changes to the system, your simple use it as is.
- Lack of software flexibility: Since the ARDUINO programming software is built to be “plug and play” it does not offer great configuration flexibility, and also ARDUINO code examples are mostly built as a “black box” in a lot of their functionality, and are very difficult to modify, that is not to say that it’s impossible, just very difficult.
- Lack of mechanical flexibility: Again- since the hardware of the ARDUINO is an “of the shelf” system there is no way to adapt it to a specific mechanical size and form, instead the only option is to make the product’s enclosure large enough to contain the ARDUINO system, and to hook the ARDUINO to the enclosure using unattractive solutions such as glue or similar methds. Moreover, the ARDUINO will inherently be bulkier than the tailor-made product, since it contains generic parts such as header connectors for all its GPIOs and so on.
- The ARDUINO programming software lacks advanced features for debugging the programed code such as “break points” and “variables watch”. This makes the task of developing complex programs difficult, and more time consuming.
- No direct support: The ARDUINO support is based on user forums, and not on the company’s direct support, and as developed and helpful as community support can get, it is very important to have dedicated direct support, that can provide timely responses and are more committed to providing a solution to a problem. This can be critical in mass production products.
- Higher product cost: This is perhaps the most critical disadvantage of the ARDUINO, for cost sensitive applications it is important to note that the product cost will be higher than a tailored made system, that does not include unnecessary elements such as the ARDUINO system. The price difference can be very significant, and it is worth checking it before making a decision.
- Program code encryption: In order to program the ARDUINO code into the micro-controller, the person doing the actual programming needs to have the source code in hand, as opposed to other systems that allows programming using only the binary file- that is very practically almost impossible to reproduce. Although ARDUINO programming software does have this option available, it is not very developed and contains bugs that make it difficult to use in a lot of cases (this is true to 1.6.11 version, and perhaps will be improved in later versions).
The third option
There is a third option for the question of using ARDUINO system. Since the ARDUINO is an open hardware system (i.e. all the hardware files are available for free) it is possible to adjust the ARDUINO hardware files to the specific product’s requirements, so that although this will require some hardware development, it will be a quicker development process- throwing out the unnecessary parts, adding necessary parts and adjusting the mechanical dimensions.
This allows keeping the option to use the many advantages of the ARDUINO system, while having a hardware and mechanical adjusted system, at more attractive price.
The system will still suffer some of the disadvantages mentioned above, but will lack the most significant disadvantage of high price and bigger size.
Conclusion
There’s isn’t a conclusive “yes or no” answer to the question whether to use the ARDUINO system, and it is highly dependent on the needs of the specific project, the quantity, development budget and so on, hopefully this article helped to shed some light on this issue, and pointed the reader in the right direction.