The most basic and common way to start prototyping is the paper or white-board sketch. Sketches are a fast, cheap, and easy way to represent an idea in a physical form. Ideally, a sketch should indicate a rough idea of the components of a system and how they interact. It also allows stakeholders to quickly modify the design. Unfortunately, a sketch helps little in being able to prove whether an idea is technically possible (Fig. 1).
After sketching out the key elements of a prototype, a good next step is to mock it up in software. More and more products today have embedded software that provides much of the value to the customer. Developing software for a high-volume embedded device is complex and a major source of development delay and failure. When prototyping, it’s a good idea to identify the key software components of your application and mock up their architecture and functionality.
Many engineers have a strong urge to start doing low-level embedded software development right away. For prototyping, it’s much more efficient to use software tools that abstract the underlying hardware and software details. High-level and domain-specific programming languages achieve this by providing language semantics that are natural to the problem domain being solved. Furthermore, they can free the domain expert from having to think about low-level details like memory management or concurrency issues.
Selecting open software platforms also makes it possible for developers to reuse intellectual property (IP) for a variety of sources and vendors. This permits the team of engineers to view low-level problems as an abstract idea and focus on solving the problem.
Software tools play a key role in prototyping the mechanical components of the system, too, even allowing you to create a purely digital prototype. Advances in computer-aided design and simulation software have made it possible to create models that are meant to exhibit the same mechanical properties as the real-world counterparts. Engineers now can rapidly pick appropriate mechanical components like motors and the materials for the physical enclosure, without creating the physical system.
Improvements in digital prototyping have helped engineers integrate software designs with computer models to create a purely virtual prototype. By creating this virtual prototype, the initial sketch can be validated and tested before manufacturing the physical system. It’s even possible to connect the software and hardware components of a system in software and co-simulate the whole system to see how it performs. The ability to show potential clients a realistic simulation of the entire device operation can be a good way to validate ideas and get feedback before ever building the first physical prototype.
Once the virtual prototype is tweaked and evaluated, it’s time to move the algorithms and mechanical system into a realworld system. Depending on the application, this can be anything from a desktop PC to an embedded hardware solution.
Regardless of the platform chosen, important considerations must be made to enable quick prototyping. One of the biggest challenges in embedded design is the effort required to create, debug, and validate lowlevel software to integrate all of the embedded system’s hardware components.
Choosing an out-of-the-box hardware platform that provides middleware and board support packages increases productivity and reduces time to prototype. If connection to analog and digital I/O is part of your prototype, it’s imperative to use tools that help you connect to sensors and actuators quickly. Selecting a platform with easy access and reusable IP for communicating to peripheral devices like digital pins and analog-to-digital converters (ADCs), as well as protocols like Inter-Integrated Circuit (I2C), greatly reduces the burden on the engineers assembling the embedded system. Prototyping on a prepackaged hardware solution makes it much easier than developing custom hardware, which may require bringing up an operating system and developing custom device drivers.
A functional prototype is created by combining the software, mechanical, and electrical systems. It attempts to simulate the final design by providing a solution that demonstrates the features of the design. This helps engineers check design flaws, iterate on both the hardware and software of the prototype, and quickly iterate through more functional prototypes. A functional prototype makes it easier to gain buy-in for clients, customers, and investors for developing the real product (Fig. 2).
Success often comes down to who can more quickly prove the value of the idea, rather than who has the better idea. The innovator who can produce an idea the fastest, test out a hypothesis, and iterate on a design the quickest is often the victor. Many startups have failed by trying to invent the perfect product instead of developing a compelling prototype with a subset of the features and specifications intended for the final product.
This pared-down yet functional prototype generates the excitement to attract those key first customers or venture capitalists. It enables innovators to buy more time to turn a prototype into a final product. The bottom line is that prototyping allows innovators to succeed faster and ultimately uproot their competition.