Starting an open hardware company and building in the open
Starting an open hardware company and building in the open
For nearly as long as the three of us have known each other, we have talked about the things we would make when we had our own company. The seriousness of that statement grew and waned over time. But early this year, a friend who was just getting into working with the Arduino microcontroller platform built an 8-bit binary counter and an idea was born: Why not make a bigger counter? Why not make it a clock? This idea became the start of Maniacal Labs, a company that we plan to run by following the ideals of open source software and hardware.
We have been fans of unique and often barely readable timepieces for a long time, so this seemed like a perfect fit for our first project. Taking that binary counter idea several steps further, we created the Binary Epoch Clock Kit, a new twist on the old binary clock idea.
The clock displays time as a 32-bit binary representation of Unix epoch time. One might ask: "How is this even human readable?" Well that depends on how quick you are at reading binary, converting it to decimal and then converting that number of seconds since 1/1/1970 to a normal date and time. Simple, right?
While it isn’t intended to replace your boring, everyday clock, this project is intended to express our creativity, and designed to allow ample opportunity for the end user to express theirs. We believe that teaching others is one of the core fundamentals of the open source movement. We don’t want to simply offer a neat thing to play with. We strive to provide ways to help build and expand our customers’ knowledge, as we ourselves have learned from others.
Joining a great community
Between the three of us, we have expertise in the fields of software, electrical, and mechanical engineering. And we all have day jobs in very much closed and proprietary industries. We would not be where we are today without the wonderful open source community and maker movement. One of the most visible qualities of these communities is their willingness to help beginners and experts alike. We’re not exactly beginners, but we’re certainly not experts. A few searches on the great StackExchange.com community uncovered a great deal of the process and pitfalls we went through while designing our first product. We were, are, and will continue to be learning along the way. And we hope to repay the community by teaching with the projects that we create.
In a dark and closed world, we would have spent thousands of dollars on development and software licensing fees just to get some simple projects out of the prototype phase. Thankfully, with access to open software and hardware platforms, our first Binary Epoch Clock prototype cost us less than $50 and didn’t require us to sign over our ideas to some corporate overlord. In fact, Maniacal Labs was started with absolutely no outside funding. Like a controlled nuclear reaction, we intend for the company to be self-sustaining (minus the radiation and hazardous waste, of course).
Since our first product’s release, we’ve received a number of recommendations for software and hardware improvements from the community that will likely be in future releases. Open platforms allow us to iterate through new designs quickly, and to design in full public view of the community. We are sharing not just our code and design files, but our process as well.
Lessons learned as a new company
We won’t pretend that our first project is perfect in its current state. Endless hours of discussion and thought went into every aspect of it as we jumped (and stumbled) over hurdles we never would have even considered. Here are just a few of the things we learned along the journey.
Limitations are your friend. It’s easy to get caught up in the desire to throw every feature you might ever want into a product. But if you do, it will quickly become too big, expensive, and complicated. When we designed the Binary Epoch Clock, there were many options for driving the necessary 32 LEDs. The usual choice is to go with one of the many LED driver chips available. These make power management and code easy, but can add a great deal of cost to a circuit. Sure, three dollars extra may not sound like a lot for a one-off project, but when you have to source the parts for 50 kits, that little extra adds up quick, especially when paying for all the components out of your own pockets.
Instead, with some crafty hardware design, we were able to drive all 32 LEDs with the microcontroller itself (an ATMega). This made the code more complicated and required some careful calculations to ensure the LEDs were bright enough without overtaxing the ATMega. But now, the circuit is considerably simpler and cheaper. As an added bonus, we learned a great deal about hardware timers and multiplexing; knowledge that, when shared, might provide the Eureka! moment for someone else.
But it’s important to make sure you can live within any self-imposed limits. There were a lot of things we could have done to make the clock even cheaper to produce. For example, we could have left the ATMega chip internally clocked, dropped the FTDI and ICSP headers, or used a different, cheaper microcontroller altogether. But those decisions would have made the clock no longer compatible with the Arduino platform, taking it from a kit that is easy for a microcontroller novice to play with, to one that requires a more seasoned veteran. A major part of why we do what we do is because we love seeing someone get into electronics for the first time and really learn something. If it had not been for choosing to maintain Arduino compatibility, we might not have seen great hacks like a Proton Pack display by a friend of Maniacal Labs who is only just getting started with the Arduino platform.
It was another limitation that led us to use the great and open source KiCad EDA. EDA stands for Electronic Design Automation—it is what helps us to design the circuit schematic, layout the final PCB, and generate the files needed to send to a PCB manufacturer. We initially looked at using CadSoft EAGLE for the PCB design. Despite being closed source, EAGLE has extremely wide adoption (nearly the industry standard except for the really big companies) and plethora of freely available parts libraries. Unfortunately, our initial budget was next to nothing and while there is a free version, because of the license, we couldn’t use it on a commercial project (even one that’s open source). On top of that, the free version of EAGLE had several limitations. KiCad came to the rescue with a great toolset, more available parts libraries than we expected, and none of the limitations. To top it off, using KiCad meant that every last bit of the clock, including the tools used to create it, was free and open source.
Though we’ve barely begun, the journey to where we are now has been quite a long one, and we have learned much. We are inspired by the likes of Adafruit, SparkFun, Evil Mad Science Laboratories, and others. These companies make it a point to educate, inform, and empower their customers through quality products, detailed instructions, and active participation in the community. As a result, their customers are equipped with not just the tools to be creative, but with the clarity and know-how to express that creativity in awesome ways. We hope that by following the example of these industry giants, our fledgling operation can have a meaningful and positive impact on the community.
Want to take a peek at the innards of our first product? All of the firmware source code and PCB design files for the Binary Epoch Clock can be downloaded from our GitHub repository. It is all available under the MIT license for anyone to use or modify. We always love to see what great new ideas people come up with, so please feel free to send us any hacks or improvements!