Let’s talk about how you can bring an idea into a “ready to manufacture” product. In this post, i will be talking about the Little Wire as a specific case example. Therefore you might read the background history of the project as well if you care :)
Firstly, you have to have an idea. That is the basic (or zeroth) step. To have an idea you have to have a need for something. To have a better ideas, involve in many projects, read other people’s project logs/posts, challenge yourselves in many ways. If you do that; eventually you will encounter an obstacle and in order to pass it, you have to innovate. For my specific example, my roommatte at the time was involved in a summer internship and he had to have a microcontroller programmer to train himself at home. He might loan one from the company or i might lend him mine but we wanted a permanent solution.
After you have the need or the idea, the second step is the research. The idea that you have might been realised by an other person on the internet. Even not the same or the full version but partially you might find some ground work to start with. Remember “money is a renewable object but the time isn’t.” If you don’t aim spesifically building an idea from the scratch; research what other people have done. In a side way, the idea that you think is as a “million dolar idea” might have been implemented many times before you think it. So do a reality check before becoming excited. :) For my example, we don’t want to build a serial/paralell port based programmer. There are many pickit2 clones with USB out there for the Microchip microcontrollers but the component count and the complexity didn’t attract us well. I did know that there is USBTinyISP from Adafruit and i had the Attiny2313 available at the bench, and it was much simpler to build on perfboard. Therefore we choosed it as our aim.
Third step is the prototype. After you researched what other people had done at the same field; try to get even with the community by protoyping what they had done. If it is something that you can’t prototype with a resonable time/money or it isn’t feasable to build the same; try to understand their works by looking at their source codes/schematics/blue prints/etc . After this step you might finish your journey if your aim is to develop a product which suits to “works for myself” class. For instance, we wanted to build a ISP programmer with a limited time & money, and we build it by looking at other people’s works. There is no way to go or no need to go beyond that if you just wanted to build a “thing that works”. But in my case, things get more complicated after i finished building the programmer for my friend. For the detail part; we first build USBTinyISP V1.0 on a perfboard but couldn’t get it to work. We obviously made a mistake at some point but with a limited amount of test equipement, we couldn’t debug it properly. Therefore we raised the question that “Is there a simpler solution to our problem?” and found out that the guy from SimpleAVR website build an USBTinyISP compatible programmer with an Attiny45 and small amount of passive components. After reading the build step and etc. we made it working in a first or second trial on a breadboard. The words of wisdom; Don’t stuck with a one idea, be open minded. There might be better / simpler ways of doing it.
Fourth step is the improve. As i said before you don’t come to this far if you just want to build something that works for you. In my case, initially i left the idea before this step since I was able to built a programmer for my roommate; improving part came at next week or so. Having completed the third step; you know what is available on the internet, what people built what projects around that idea. Consequently, you have to improve the existing designs in some ways or you should continue to build your unique (you can call it unique now, because you looked up and nothing similar came out) project safely. Improving part is hard because you have to know what the available projects/products lacks. That knowlade might come from your own experiences, or you might learn from other people’s experiences by reading their project blogs/logs , complains on the forums/comments and etc. The words of wisdom; Read and build, a lot. If you have time/money available, you always learn something and expend your point of view. Also if you read much, you can address the community’s problems better. For my example, i firstly figured that there was no PCB kit version available for this neat project. I initially designed a PCB for this. After my PCBs arrived, i realized that the device can be interfaced with the computer via the libusb easily without defecting the onboard ISP ability. Therefore i added computer controlled GPIO/PWM/ADC/SPI/I2C capabilities as well as its AVR ISP programming ability. I wrote C,C++,C# and the Processing libraries for the computer interface purpose. Lastly, i added a Uart bootloader to the device to make its firmware easily changable/upgradable.
Fifth step is the discussion. Everyone make mistakes. You can’t see eveything by yourselves, you can’t test the device yourselve and also you shouldn’t have. If you work on a project alone, finishing/debugging project will consume much more time. Therefore try to discuss your each major step of your project for your project’s safe. Having said that, it is not very easy to find a good discussion environment. You might go for a forums to discuss your project but if you do it at the pre-mature state of your project, comments of other people might not be very constructive to you. Some even might make you angry! You might say that “haters gonna hate anyway” , but even you might feel a bit depressed. So, try to find a good friends which tells your soft spots in a good language and makes contributing comments. When you get bigger, you might have your own community , like the Dangerous Prototypes, which you can discuss your project almost from the beginnig to the end confortly with a ,rather, large amount of people. For my case, i personally want to thank my friend Omer, for his comments and contributions to the project. It is hard to find a good listener friend with a common technical level/interest. If you find/have one stick with them! :)
Sixth step is the actual production. After iterating through the imroving and discussion steps and decide that you finalized your project, take an action and start the actual production. The note here is that, evolving the project trough “Works for me” to “Ready for shippment” is a very big step. You have to consider mostly all of the possible bug sources and try to release a very good documentation. For the documentation, you might check the Adafruit’s tutorial/product pages or the Dangereous Prototypes’s project log wikis as an examples and inspiration. Moreover, you might used the “what is available at the lab” components for your prototypes, but in order to make the project ready for production you have to prepare a proper Bill of Materials (BOM) file with component IDs and supplier links and etc. If you haven’t done this before, searching a single resistor from Digikey,Mouser or etc. might feels odd to you but it is a neccessary evil and try to become comfortable with it. After you finished the preperation of the BOM files, test procedure and PCB Gerber files; you might make a bulk order of the components and try to assemble them by yourselves. It can be time consuming, therefore you can ask to Sparkfun, Seeedstudio or other OSHW companies that wheter they are interested in producing them for you. I had experiences with the Seeedstudio and they had very interested and kind approach to me and my design. Process is still continuing and soon you may order Little Wire directly from the Seeedstudio.
I guess thoose are all i can remember/think of right now. We might can not be able to print our ICs yet, but we can order 10 pcbs for 10 dollars. This alone is a huge opportunity and use it for your advantage. We live the OSHW age and benefit from it, read/analyse what other people had done improve your tech skills., Don’t be afraid to improvise,innovate,protoype. Have friends!
If you want to say/add something please feel free to drop comments.