It’s risky to dive right into creating a product without knowing if it’s technically feasible and whether there’s a market for it. Rapid prototyping lets companies quickly build a rough working version as a proof of concept. The prototype can be incrementally refined based on feedback, or the project can be cancelled without having invested too many resources.
For Internet of Things applications that need custom hardware as well as software, inexpensive prototyping toolkits eliminate the need to design and create printed circuit boards before starting on the software. The toolkits also speed up software development by providing libraries that support common functionality like connectivity and communications. Depending on the tool selected, developers can create a prototype in just a few days.
Selecting a Prototyping Tool
IoT developers have lots of choices of prototyping tools. Arduino and Raspberry Pi are two of the most popular. Companies need to understand the features the tools provide to choose the prototyping tool that will work best for them.
Raspberry Pi is a full microcomputer and runs a version of Linux. Because it’s a full computing environment, it can run any desktop software, but it lacks some flexibility that IoT developers may need. For instance, the Raspberry Pi needs extra hardware to read analog sensors. And because it’s a full computer, programs created on a Raspberry Pi don’t directly translate to the production version of an IoT device that will have limited battery and computational power.
Arduino provides a programmable microprocessor and tools for programming it, including an integrated development environment and function library. Programming is in C++, not a special-purpose language, so software developers don’t need special training to get started.
Because the Arduino is simply a board, developing for it requires managing the memory, power, and computing limitations the final IoT product will have to handle. There are also add-ons to Arduino called “shields” that extend basic functionality with features like Ethernet and Wi-Fi. The inherent limitations plus the extension products mean that prototyping with Arduino can get started quickly but also address many real-world concerns.
Developing a Prototype With Arduino
Getting started with Arduino is as easy as obtaining the board, connecting it to a computer with a USB cable, installing drivers, and downloading the software. Boards often come in starter kits that include breadboards and components to set up the board with the resistors, inputs, and outputs needed. Start by diagramming the circuit needed to gather the input signals and generate the outputs; you should prepare the board with the necessary components before you begin writing code.
Arduino calls its programs “sketches,” but they’re really just C++ functions. Every Arduino sketch requires a setup() function and a loop() function. The setup() function runs when the sketch starts up. Any initializations, such as setting variable values or establishing pin modes for input or output, should be performed here. The loop() function is continuously invoked and is where the program can respond to inputs and generate outputs.
The Arduino Language Reference documents all the features of the language. The operators and control structures will be familiar to any C++ programmer. A few predefined constants and library functions help with reading input, generating output, and common math, communication, and other actions. There are also many third party libraries available providing reusable code for other functions.
Developers can work in the Arduino Software IDE or use one of several other popular IDEs, including Visual Studio and Eclipse. The third party development tools provide more features than the included IDE, including support for other programming languages like Python and enhanced debugging including the ability to step through code and inspect the values in variables. Developers can also fall back on the println function to use a serial output and send the value to the serial monitor.
From Prototype to Production
Once you’ve got a working prototype, you can transition to a production design. In some cases you can use the Arduino board in production, but more often you’ll want to design a custom PCB that includes only the circuitry needed for your application. It’s also necessary to make sure a production version handles issues you may not have considered in a proof-of-concept prototype, such as battery or communication failures. Think about how troubleshooting and upgrading will work when the product is deployed in the field; you may want to build in the ability to replace an individual component or output debugging information.
Lastly, keep in mind the aesthetics of the product. Some customers will care as much about what it looks like on the outside as how well it performs on the inside. Design a housing that’s clean and appealing, and you’ll boost your product’s chances of success.