It’s fairly common knowledge that the large number of hardware prototyping platforms has lowered the barriers to entry for creating prototypes for many new product ideas. Armed with an Arduino, a handful of sensors and a few dozen lines of code, a proof-of-concept device can be built in the time it takes some electronic design tools to even load (a slight exaggeration, but you know what I mean).
One question often asked of us here at CircuitBuilder is ‘how can I turn my Arduino-based prototype into something that is ready for mass production?’. Often it seems that the expectation is that because a working prototype already exists most of the work has been done. Sadly this isn’t quite the case. But why not?
First off are the licenses attached to the software running on the microcontroller (often referred to as firmware) – in the case of the Arduino, the core code and associated libraries are released under the LGPL. This means that although you don’t have to release the source code of your product, you do have to release the compiled ‘object file’ so someone, should they want to, can recreate the whole firmware image from scratch (this is detailed more here).
Also on the subject of firmware is the very limited support for debugging your application. For anything but the most basic code you will likely run into unexpected behavior which requires you to dig into the code to see what’s going on. This is usually done with an in-circuit debugger, allowing you to step through each line of code as well as examine registers in memory. However this is quite limited within the Arduino ecosystem, although there are external tools which help here.
Lastly, testing the code is often left until the last moment – the code might run fine in controlled conditions on your lab bench, but in the real world you’ll find all sorts of conditions where it might not! Remember that an end user can (and probably will) mash all the buttons on your carefully designed device in ways that you may not have tested and that your code needs to deal with this gracefully!
Many Arduino boards are based around an Atmel (now Microchip) part – often something like the ATMega328P. Whilst a perfectly reasonable choice for many tasks, its list of features isn’t quite up to modern standards and there are now many alternative parts that offer many more features for significantly less cost.
One such project was completed by CircuitBuilder not long ago – a design existed which was based around an Atmel part and the cost for this device alone was over £1 in quantities of 10,000. In addition an external crystal was required adding another line to the BOM (bill of materials). After listing out exactly what features the microcontroller needed, we suggested a part from ST Electronics which cost one third of the Atmel part, and didn’t need an external crystal either.
The reduction in BOM cost from these components alone would be over £6,000 once the production quantity reached 10,000 so it was a huge saving!
Another aspect of electronic design which is often left until the end of a project is the fun world of product certification. The exact steps required here will depend on the type of product and where it will be sold. For things sold in the EU, CE marking is required and this brings with it a number of rules around testing. For example, if your product includes a radio of any sort (i.e. Bluetooth, WiFi etc.) these tests get a bit more complex. You can reduce some of this complexity by using a pre-certified module (like this one), but you will still need to perform tests on the whole product to make sure it does not interfere with other equipment, and that it can deal with interference from other equipment.
The test house will also zap your device with alarmingly high voltages (often up to 8,000 volts!) to make sure that it will still function correctly after a static shock (officially known as electrostatic discharge, or ESD).
Back to the subject of the Arduino, if you’re simply replicating the schematic you may find some issues during the tests mentioned above – many Arduino designs do not include filtering for ESD or any emissions caused by high frequency signals in the design. This can lead to problems later on, so it’s a good idea to think about this at the early stages and build in filtering to any signals which enter or leave your product (i.e. any cables plugged in to your device in normal use).
There will be a future article on some practical tips for certification, as there is a lot more to it than the brief summary above!
Suffice to say that although you could put an Arduino in a box and call it a product there are several reasons which you shouldn’t. It’s worth taking advice (from CircuitBuilder if you wish!) as it could result in saving quite a bit of money on the cost to build your device, or worst case need a whole redesign if it fails during product testing!