Archive for July, 2011

tabulaRasa Source Code

The source code and schematics for the tabulaRasa (along with other stuff) are now available:

https://bitbucket.org/pucktronix

I hope to use eventually use the bitbucket site as the landing page for my code and electronics work.


Tips for a Successful Open-source Hardware Project – Shipping

There are two parts of the final step in an open-source project: manufacturing and shipping. The only real trick in finishing your project is to do both of these things as quickly and carefully as possible.

If you can, get someone to help you assemble the project. You can do it assembly-line style, and probably knock it out in an afternoon or two, depending on the numbers. It’s best to start on it as quickly as you can. Sometimes the task of assembly can seem too daunting to start, but it becomes much more manageable once you’ve started.

For shipping, I don’t recommend anything fancier than USPS first-class mail. I’ve shipped out dozens of PCBs, Kits, Components, etc, and have only had one package delayed or lost (we still haven’t determined that it’s actually lost), and that package was sent from the US to Germany. You’ll have to fill out a customs form for each package sent internationally, but other than that, the process is as simple as dropping addressed packages / envelopes off at the post office.


Tips for a Successful Open-source Hardware Project – Raising Funding

I decided to fund the two projects (Octomod and tabulaRasa, if anyone missed part one) in slightly different ways.


The Octomod was funded through word-of-mouth, Twitter, Facebook, and various online forums.

This had the advantage of allowing me to interact with almost everyone who decided to buy a circuit board. I really like the forum method, because I received a lot of valuable feedback and many great suggestions on the designs. On the other hand, these methods forced me to buy the materials up front. I also had to deal with taking orders and collecting money, which can get complicated – making a free, functional storefront through WordPress also seems to be nearly impossible.

For the tabulaRasa, in addition to the social networks and forums, I decided to apply to Kickstarter.

Kickstarter is a way to raise funds for a project, by allowing people to commit a certain amount of money in exchange for a “reward” if the full funding amount is met. If full funding isn’t reached, no money exchanges hands. This has two advantages – 1) the project owner doesn’t have to invest money in the project upfront (although I did, and I’m sure many others do as well), and 2) the people who are funding only end up paying if the project is fully funded.

A couple of things I’ve learned after the Kickstarter experience:

I’m not sure that the video Kickstarter requires really made a difference in my case – but it can’t hurt.

Make sure to set a good financial goal – not too high and not too low.

Likewise, I realized I allowed for too many different funding tiers – this complicated things when it came time to provide the rewards. In the future, I’d go with only 3 or 4 funding levels, and minimize the number of different reward types.

You definitely want to be responsive to questions and comments – both on Kickstarter and on email.

Also, I found it important to remain flexible and willing to change the project. The music I make with my electronics doesn’t require a volt per octave tuning scale, so I designed the tabulaRasa without any sort of calibrated tuning. Many people contacted me asking about v/octave capabilities, so I spent some time doing the math and implementing a tuning algorithm. I made a video demonstrating it working, and had a bunch of people kick-in funding.

The last step of the process was ordering and assembling the boards, which I’ll cover in the next post.

Tips for a Successful Open-source Hardware Project – Design Considerations

Here are some things I’ve observed while developing the tabulaRasa and the USB-Octomod. Both projects are open-source hardware/software packages for use in modular synthesizers.

For me, the process divides up into three stages: design, funding, and production. I’ll cover each stage in a separate post.

Design


Make sure to spend plenty of time brainstorming, prototyping, scrapping, and remaking your project.

You want to explore as many angles as possible. Often a redesign or code rewrite will make implementing new features easier, or allow you to optimize some aspect of the design. Both the Octomod and the tabulaRasa went through multiple stages of sketching, prototyping, pcb design (and fabrication) before I decided they were done.

Aim to use common, versatile components.

You don’t want to use a single-supplier component in a design, unless there is no other option. The Octomod uses a Teensy 2.0 microcontroller unit which is available from only one source. Within a few days of announcing the availability of PCBs, the Teensy 2.0 went out of stock, and stayed that way for months. Besides limiting the usefulness of the PCBs, this left me fielding questions about the availability of a product over which I had no control. Some people are experiencing a similar issue with the SD card socket used in the tabulaRasa. Since the part is available from Sparkfun, I assumed it would be relatively simple for people to get. However, I didn’t consider that shipping to European countries from Sparkfun is either expensive or impossible. (Not sure which it is, I just know I got some questions about alternate sources.)

Using a minimal amount of components is also an advantage.

My initial designs for the tabulaRasa used a separate DAC chip, interfaced to the mcu through SPI. Although this theoretically provides for much higher bit resolution, most DACs require 16 or more bits to be transmitted per sample. The additional chip also added significant cost to the project. I instead used a simple PWM DAC, using an RC lowpass filter to smooth out the built-in PWM output of the ATmega. Simple, cheap, and still of a high-enough quality for my needs.

Open-source is an asset.

Many of the technical questions I received (usually related to compilation or misunderstanding of OSC) were easily solved because users could send me the exact error messages or line numbers they received. (On the other hand, asking users to compile their own code also led to confusion. I had a few people try to compile Arduino code in Processing, and vice-versa.)


More to come on how I raised money for construction on Kickstarter, and my thoughts on the manufacturing process.