Yes, You Can Use Arduino for Commercial-grade, Only If You Do This

I need to reimphasize this:

Yes, Arduino is a toy. And by a toy, I mean Scratch-the-programming-language toy. Arduino is the Scratch of embedded world.

But can you use Arduino for industrial or commercial-grade projects?

The answer is also YES.

Before we continue, I need to make sure that Arduino can refer to many things:

  • Arduino Boards (UNO, Nano, Micro, etc.)
  • Arduino IDE (The program you use to type code and upload code)
  • Arduino Framework (The entire embedded software libraries so you can use Serial.begin(), millis(), delay(), etc.)
  • Arduino Community (forum.arduino.cc)

In this article, we're going to refer Arduino as the Boards and Framework.

Why Did People Think Arduino is a Toy?

Because like any other toys, Arduino does:

  • Simplify a lot of things
  • Is cheap enough
  • Is easy enough to get started with

Arduino literally has lowered the barrier to entry embedded world. Before this, you have to use complicated boards (do you know BASIC Stamp?) with weird setup and boring documentation.

From there, Arduino has been associated with fun and cool projects, sometimes even a literal kid was teaching us to explore Arduino (remember Super-Awesome Sylvia?), no wonder if people start thinking Arduino == Toy.

And you must understand, that ironically, Arduino isn't aimed for embedded engineers.

Arduino Is Aimed for This Market Segment

Arduino is designed to be used by hobbyists and artists. People with no embedded background. So those people can make interactive art projects without much knowing technical stuff.

Yes, I know that Arduino is now expanding their business and try to capture industrial IoT (with Arduino PRO series). But for the majority of their market, it's still hobbyists.

Fortunately, Arduino as a board is just another embedded board, just like STM32 Development Board. Which is perfect for embedded engineers to use for many applications, including industrial/commercial projects.

You Can Use Arduino If You Only Do This

By treating Arduino just like other embedded tools.

What does that mean? Arduino, in its core, is just an microcontroller chip with some external components. So you can use it safely by:

  1. Enforcing high-standard embedded environments
  2. Insanely good coding standard
  3. Superb firmware architecture design (this one is very important)
  4. Understanding the hardware limitation
  5. Thorough testing and certification process

In fact, Arduino UNO contains ATMega328P. That microcontroller is actually a commercial-ready chip. So don't worry. Atmel (now Microchip) even provides automotive-grade chip of ATMega328P. Do you still think it's a toy?

ATMega328P is available with the automotive-grade variant
You can get automotive-grade variant of ATMega328P

Okay, What About Arduino Framework? It's Sub-Standard.

Yes Arduino Framework simplifies lots of things. But saying it as sub-standard software is an insult.

Treat Arduino Framework like CMSIS or mbed framework. Problem's solved.

In fact, Arduino and countless libraries have been used, tested, reported, and fixed by hundreds or thousands engineers around the world. Ditching Arduino Framework to favor your own in-house solution is like ditching AES-128 algorithm to make your own cryptographic algorithm. It's a bad idea.

Now, to make Arduino framework more polished, do these:

  1. Ditch Arduino IDE and switch to VSCode + PlatformIO
  2. Start separating your code into logical module. We call this modular programming
  3. Use useful C and C++ features (like classes, virtual function, polymorphism, or even std::function if you feel fancy today)
  4. Write proper unit-tests and do proper testing process
  5. Use static analyzer and advanced linter
  6. Lastly, you have to learn how a professional, industrial, commercial-grade firmware are being done.

That's all you need to do to use Arduino for serious applications.

For the Point 6, if you are interested developing a better firmware, I made a paid guide where I show you the exact workflow I use to build firmware for my company and my freelance clients. Check it out here: fwguide.rosmianto.com

 

 

Whenever you're ready, there are 2 ways I can help you:

1. FREE Firmware Development Email Course. A free 7-Day Email Course to teach you the foundational concepts you should know to start firmware development. Full of practical tips and industrial insights.

2. FREE Embedded Freelancing Email Course. Another free Email Course to help you grasp the basics of embedded freelancing and make more money as an embedded engineer.

Related posts