Can Arduino Be Used to Build my IoT Project
The Short Answer: Yes
The Long Answer: Yes, for simple to moderately complex use cases
Arduino has developed from a simple educational/hobbyist environment into one of the broadest ecosystems on the market. While the original Arduino boards were solely based on Atmel Atmega chips (and the Uno still is), Arduino is now supported on boards ranging from the Arm Cortex Series to specialized System on Chip designs like the MRK1000. When you then include the wide range of third-party boards and shields that also support Arduino, it’s hard to find a richer development environment. There are even some better IDE’s coming online now, like PlatformIO to provide a more complete development workflow. Additionally, PlatformIO is great for fixing a major issue common in Arduino project, that libraries are stored in the documents folder and are not associated with a given project. Libraries in PlatformIO are specified in the library.json file, which is commited to version control.
Arduino really shines in Internet of Things devices, because a lot of the heavy lifting is often done by APIs in the cloud, rather than on the device. Most chips used on Arduino boards have plenty of pins available for orchestrating servo’s or gathering data from sensors and communicating it back to the cloud. SoC based boards are great for this, as they are often low power and easy to work with when it comes time to move to production.
I said at the beginning that Arduino is great for simple to moderately complex workloads. There is one key area where Arduino falls short of more “professional” development environments, Debugging. Anyone who has spent some time working with Arduino know the primary way programs are debugged is by printing over serial or blinking LEDs. This is fine if most of what you are doing is communicating with the cloud, driving motors and gathering data, but if you are working on a project that requires a lot of on device computation, Arduino may not be the best fit.