From Prototype to Product
Reddit user shaunhurley asked "for an example project / tutorial /guide / course that goes from start to finish that walk's through all the steps of achieving a functional prototype". Graduating from college in 1986, I could not recall (either in college courses or since) ever seeing anything like this. It did seem that I had read and responded to many Reddit posts for information or guidance on parts of this process, but never the whole process. With a professional background in industrial automation, I have had a side hussle in the recent past, making custom control modules based on AVR processors and Arduino. So, I accepted the challenge to impart my knowledge on how to go from prototype to product.
Disclaimer: the information presented here is simply my experience and perspective. There may very well be many other approaches to solving the problems poised in any particular step (this is by no means an all exhaustive list). Furthermore, software, products and companies named in various steps are mentioned simply for your information. I have no formal relationship with any, nor do I necessarily endorse any particular one.
So, lets get started!
Get an Idea
This is not tongue in cheek. Anything worth doing is worth doing well. Why do you want to embark on this project, if you don't have an idea? For me its "because someone needs something". It could be something you have been interested in. You could do some market research and find an idea. Without a sound idea, you may not be able to complete steps further on.
Design Specification
This takes your idea and builds on it. Start writing down details:
- What is it?
- Who is it for?
- How big/small does it need to be?
Keep in mind that this step is still a high-level overview.
Block Diagram
Why do I need a block diagram? Depending on how complex your product is going to be, it simplifies everything when you can visualize it on one page. This could be simply one block, or could be several blocks. For example, an audio spectrum analyzer with graphic display would have an audio input block, a central processing block and a graphic display block.
Schematic / Part Selection
It is beyond the scope of this instructable to explain all of the nuances of schematic design. Grab a tool, watch some YouTube tutorials and jump in.
You have a few options for this step:
- Google "[NAME OF BLOCK]+circuit diagram" or "[NAME OF BLOCK]+schematic". Narrow your search results to IMAGES.
- Google "[NAME OF BLOCK]+IC". Some functions are already included in an IC and a datasheet often shows a typical circuit.
- Google "[NAME OF BLOCK]+tutorial". These do exist. There are websites that offer electronics education, that have published articles that break down popular circuit blocks. Not only do you learn more theory about what the block is doing, but these also assist you in selecting appropriate parts.
FYI: Schematic Design Tools
There have been many schematic design tools developed and used over the years. Two free tools that I have found work well toward product development are:
Breadboard
I probably own two dozen MB-102 breadboards. Why? They have knobs and matching cut-outs, so that you can connect boards together to make even bigger breadboards. I often dedicate one breadboard per block so that I can still visualize my circuit per my block diagram.
The benefit of starting with a breadboard is the ability to connect various components together, to build functional circuits. My starter kit included a breadboard and a variety of jumper wires with Dupont connectors, giving me the ability to start developing circuits early on.
Code
Caveat: if you are designing purely analog circuits, you can skip this step.
I assumed that since this instructable was precipitated by a post in r/Arduino, that the product we are developing is based on a microcontroller. I design mainly on Atmega328 and ATTiny 85 Atmel processors, so I prototype with through-hole components (even if I think the final product will have SMD components). I have a number of programmers available to assist me.
But ESP32/ESP-12E processors are all surface mount? I have a selection of these processors installed on prototype break out boards, so they still work in my bread board environment.
Test
Power it up. Do you see smoke? Blinking lights? At this point your design should be near enough complete that you can see how it functions. This step will help you stream line your code and verify circuits are working appropriately.
Perf Board/ Prototype Board
This step is kind of old school and some of you may skip this (and the next) step. Some of you may be tempted to do this step and skip steps 10 through 24, but you'll find that to move your product to mass production, you'll need those steps.
This step takes the components you're using and assists you in laying out a better board. Breadboards are functional, but their layout is not ideal for parts placement in a permanent form.
Tip: use IC sockets. Integrated circuits are often the most expensive parts in your project and some are sensitive to things like heat and static. Also, MCU's tend to be inserted and removed a number of times for reprogramming in the testing phase. If you are leaning towards a final product with SMT components, adding a programming header at this step may be an advantage.
Test
Never assume you placed the components and made all the connections. Testing at this stage is simply functional, with an opportunity to see if parts placement offers improvement or new issues. Testing also includes code enhancements.
Schematic
You now have a functional prototype. With this, you can finalize the schematic, which is needed as the base for generating all other required documentation. Update your schematic with appropriate part numbers. Ensure your schematic contains the correct symbols (especially things like transistors and anything polarized). Don't forget to add mounting holes.
Assign PCB Footprints (THT)
We now start the process to move from schematic to PCB. These steps (11 to 17) could be skipped if you plan on going to SMT components and you created a perf board prototype (steps 8 to 9). Some of us continue with this step because we are comfortable assembling and troubleshooting with through hole devices.
Netlist
A netlist is simply a list of the electrical connections that describe a circuit. It is a formatted ASCII file, so you could read it if you want. Fortunately, in KiCAD, generating a netlist is as simple as clicking an icon (the software does all the work).
PCB
PCB layout is half art and half science. A full list of PCB design rules is beyond the scope of this instructable. Suffice it to say that you start the process by importing the netlist you created. What you will see is all the part footprints connected by white lines (also known as the rats nest). Do not rush this step: the aim is to make the PCB as compact as possible, not only to reduce cost (PCB's are priced in square meters), but will also help reduce further costs in things like the size of the final enclosure, connectors, etc.
I approach a PCB design in a logical manner, which reduces trace lengths between components. Once I have a logical layout I will draw a box in a drawing layer, 100 mm by 100 mm. Why? JLCPCB (a Chinese company that I use to produce my circuit boards) offers a prototyping special of five boards for $2 USD. Other companies have similar offers. My aim is to move my layout to this square, which now requires that I break up the functional blocks to make them fit. Of course, depending on your product, this approach may or may not work: even though many of my designs do, I have designed a product that far exceeded this limitation, for which I paid standard pricing for PCB's and surface mount assembly.
Things to keep it mind:
- arrange protruding PCB mounted connectors in one area: installing a circuit board into an enclosure with connectors on different sides is often difficult (if not impossible).
- arrange PCB mounted switches in rows or columns, so they appear in a logical line in the finished product.
- I tend to design with panel mount switches, potentiometers, etc. and use wiring harnesses terminated by a connector.
- If your PCB's are very small, you can panelize boards. Many (most?) PCB manufacturers have minimum sizes they can produce and this may be necessary. Since you are paying per panel, you can get more boards for the same price. Panelizing requires you to complete one board layout and then adds one more step to produce a panel before you continue.
The True Cost of Custom PCBs: Understanding the Factors that Affect the Bottom Line
Plot (create Gerber Files)
To create your Gerber files (the files needed by the board manufacturer), you need to know who that company will be and follow their guidelines. Working with JLCPCB, I follow their guidelines to plot. This process generates multiple files (in my case, 13 files for JLCPCB). Depending on who your board maker is, my final step is to import all of my Gerber files into a compressed archive file (i.e. a ZIP file), to be uploaded to JLCPCB.
Order PCB's
I know this is starting to sound like a sales plug for JLCPCB, but that is the only company I have engaged for PCB production. The quoting, assembly and ordering process are integrated and with the documentation previously completed, the ordering process takes me five minutes. $2 for boards, $1.50 for shipping (I can wait two weeks for them) and 50 cents for the PayPal processing fee: $4 USD, with exchange, costs me ~$5.50 CAD (all in) for five prototyping boards.
Assemble
Tip: If you need more components, order them at the same time you place your order for your boards, or soon after.
When your boards arrive, assemble the first board. The silk screen will be your guide. If your product contains sockets for IC's, you could just remove the chips from your breadboard or perf board prototype and reuse them.
Test
Again, this should be a short functional test, looking for issues.
Adjust Your Schematic (SMT)
I design a lot of custom circuits, or "one offs", so rarely go to this extent. At 60-something, my eyesight and my soldering skills are poor, affecting my ability to assemble SMT components by hand. However, if you have any expectation that your product would go to mass production for wide-scale distribution, you will need to produce an SMT version (it is extremely difficult to sell a product now utilizing through-hole technology). You may only have to adjust components for the transition, but many IC's have vastly different layouts and footprints and need to be replaced. Again, Chinese companies like JLCPCB offer exceptional prices on components, as well as competitive pricing for SMTA services.
Tip: (look at step 26) add the appropriate programming header to your schematic, if you haven't already.
Assign PCB Footprints (see Step 11)
Netlist (see Step 12)
PCB (see Step 13)
Plot (create Gerber Files) (see Step 14)
Fabrication Output (BOM and CPL Files)
Working with your desired board maker, follow their guidance on how to generate a bill of material and a component placement list (also know as a "pick and place" list or a centroid file).
Order PCB's/SMTA
If you want to assemble your own boards, JLCPCB will provide a "solder paste stencil" (for a fee) with a PCB order.
Assemble
Wait! You said we would order our boards pre-assembled by JLCPCB! Depending on your service provider and the service you paid for, there may be a few components that still need to be added. For example, JLCPCB will only install SMD's on one side of the board. Also, JLCPCB's assembly service only installs surface mount devices, leaving you to install things like through hole connectors.
Program
Your new PCB's have arrived, but now the MCU is soldered to the board. How do you program it? If you caught my tip, you added a programming header to your board.
Notes on programmers:
- An In Circuit System Programmer (ICSP) uses a 2x3 male header (older style uses a 2x5 male header).
- A USB-to-TTL converter uses Vcc (3.3 or 5V), GND, Rx, Tx, CTS and DTR signals. These are often identified by a 1x6 female header.
Test
Design Enclosure
Which came first: The chicken or the egg? I tend to leave the enclosure design until I have a completed circuit board, but depending on your product, the enclosure may dictate elements of your PCB layout.
There are a plethora of options for enclosures:
- standardized project boxes made of plastic, aluminum, diecast aluminum, etc. (Hammond is a big name in this category)
- 3D printing offers a multitude of materials to work with.
- I've seen prototypes assembled in card board boxes.
Notes on design software:
Again, beyond the scope of this instructable, there are many tutorials and free software choices available.
- TinkerCAD (online)
- FreeCAD
- Autodesk Fusion 360 (personal use license is free)
- Blender
Manufacture the Enclosure
I suppose this step is as simple or difficult as what tools you have at your disposal. If investing in a lot of tools seems daunting, you could look for a local maker space: membership would not only provide the tools, but also like minded individuals who could assist you. My local maker space offers memberships on a monthly basis, with the ability to stop my membership at any time.
Final Assembly
Simply install the PCB into the enclosure and hook everything up.
Test
Congratulations!
You now have a complete, functional new product to market. Don't get disappointed: there will be a lot of rejection along the way (especially if you are trying to promote an unsolicited product).
Consider making and selling your own products. Amazon and Ebay may be out of your league, but sites like Etsy or Tindie may be more your speed. Tindie is a framework for the sale of tech products, made by makers. Please do not confuse Tindie with Tinder.