Hi all, I just sent an email to my few customers stating that I’ll be moving on from developing Polystack hardware and software. The few sales I’ve made don’t warrant continuing working on it.
I’d like to thank my customers for giving me a chance. Thanks also to all of those who listened when I got excited about the idea, those who contribute to the RC quadcopter community and those who personally contributed to Polystack.
Now, in the spirit of openness (to go along with the software and hardware), I’d like to talk a little bit about what I learned so that those of you with other crazy ideas can avoid the mistakes I made and understand why taking the risk is worth it.
The biggest thing I’ve learned is that modularity is expensive! I didn’t internalize it until the reviews of the Polystack came in and they all commented it was too expensive. What made it expensive? The connectors on the board added a base cost of ~$2-5 to every single board which was then multiplied by at least three. A $15 bill of materials baseline alone makes it impossible to compete with a $30 retail flight controller. Before adding any other components, the retail cost for the full package is $37 minimum. The whole premise is expensive.
I didn’t realize this though until after. I just thought that having great, easy to setup IO would be amazing and it is. It’s just not amazing enough (it turns out) to justify the added expense. The current trend of all-in-ones provides easy setup without the added cost of modularity.
Despite having this failure, I would do it again in a heartbeat. I learned a ton and engineering is fun. Just make sure that if you want to make business out of it, you are genuinely onto something as early as possible. I could have seen the signs that Polystack was too expensive as I talked with people about tentative pricing but I ignored them because I love engineering. Business could wait. The few sales on launch day quickly told me I had missed the mark.
I was disappointed. I had spent eight months of my life working more than full-time to design, prototype, tweak, test, program, contract manufacture, package, label, photograph and sell all of the Polystack boards. But, I still love engineering and believe Polystack is well engineered. It’s just solving a problem few people have. (whoops) Despite weak sales, I learned a ton about electronics design and programming microcontrollers. I feel closer to the CPU and computer engineering than I ever did writing server software at Google. I can now work on complete products from hardware to software.
In the end not all is lost, thanks to MacroFab my production batch wasn’t so large as to bankrupt me when it didn’t sell. With my newfound hardware skills I looked for jobs and began working for Adafruit Industries at the start of September. I’m working on bringing MicroPython to more hardware. I love that it’s all open source work you can find on GitHub. I’m also really excited to have a diverse set of extremely talented co-workers to complement my engineering skills after spending so much time working on my own.
Even though the production batch was small, there is still plenty left. I’d hate to see it go to waste is I’m selling the remaining stuff at a large discount. Note though, that it will no longer be supported and once its gone its gone. You can still drop me a line at firstname.lastname@example.org if you have any questions or comments.
tl;dr Betaflight 3.0 is now available for the Chickadee Tech F3FC and F4FC. Still haven’t bought a Polystack? Buy one (or more) to celebrate 3.0 with 20% off when you enter BETAFLIGHT30 in the cart.
I’m not going to recap everything thats in Betaflight 3.0 so check out the release notes. I will cover the largest addition though because it had a huge impact on Polystack development.
The key feature of Betaflight 3.0 is F4 support. What does that mean? Well, prior to 3.0 Betaflight only supported F1 and F3 series microcontrollers from STMicroelectronics. (You can see their full line here.) One of the key differences between the F4 and the F1 and F3 is that its clock speed is 168MHz versus 72MHz. This means that Betaflight can do more in the same time as the F3s can. This also means that the same code takes less time to run. So, the time between the gyro read and PID output can be twice as fast. This is a big step for Betaflight.
When I was testing the F4FC in the spring I used Raceflight. At the time it was still open source but soon after they switched to a closed source development model. They continue to develop in a closed way. This was an issue for me, I created open source hardware and wanted to run open source software on it too. I wanted to be able to support Polystack’s software which I wouldn’t be able to do with Raceflight. So, I reached out to a couple of the other F4 flight control devs and double checked with Boris that he’d accept pull requests with F4 support. He said yes.
Jason Blackman, developer of the BluejayF4, did the vast majority of the work. He is a rock star. If you don’t want a modular flight controller I suggest you support him for his awesome work.
Overall, Betaflight is a great open source software project. There are many rock star developers who work on it and deserve mondo credit. Its incredible how far its come. Please check out the release notes which list some (but not all) of the awesome Betaflight contributors. This is what its all about.
Hi, I’m Scott and I quit my job at Google in June of last year to work for myself. Although the first few projects didn’t gain much traction, that didn’t dampen the fun I was having and my desire to make something awesome. In September, I caught the hardware bug and created a timing system prototype that kinda worked but not as well as I had liked.
While visiting my Grandma’s house in October I was reading a post by Andy Shen of Shendrones, not sure which, in which he mentioned something about the difficulty of designing for a flight controller’s (or FC for short) normal footprint of 36mm by 36mm and the desire to stack vertically. “Thats it!”, I thought. Create a smaller form factor FC that stacks modules on top rather than requiring wires running everywhere. While I gave up on the smaller form factor for the time being because frames are designed for the 36mm x 36mm form factor, the modular stacking idea stuck. Modular stacking would make builds cleaner and upgradeable. Now when someone wants additional functionality they can reuse their existing FC instead of rebuying it all. All thats need is a spine for this new, modular stackable system that would carry signals and power between modules. It would be the secret sauce.
I spent hours browsing all types of connectors on Digi-Key and Mouser. Finding a connector that is both durable, high density and has a small footprint is not easy. The connector would carry power and signals to connect the base microcontroller board to everything else. I studied Arduino Shields, Raspberry Pi Hats and Beaglebone Capes to see how they stacked so well. They all use normal pin headers, which are great for providing strong connections between modules but they take a ton of room. A standard FC is 36mm by 36mm or 1.4 inches by 1.4 inches for us Americans. With standard spacing of headers, called pitch, you can fit ~12 pins from one edge to the other. I was hoping for many more signals so that you could expand motor outputs for an octocopter, run GPS, on screen display (OSD), telemetry, remote controls and log flight information to a microSD card all at the same time if you wanted to. I needed something with a finer pin pitch to give more pins in less area.
I settled on the 80-pin Hirose DF40 connector because it packs 80 pins into a 18.6mm by 3.4mm footprint and had stacking heights ranging from 1.5mm to 4mm. Although I hadn’t thought of it at first, optimizing the use of vertical space was just as important as horizontal board space in order to fit all potential functionality into a miniquad.
The next challenge was that the DF40 connector was surface mount rather than through hole like the pin headers on the other stackable systems. Unlike on those, these pins wouldn’t be automatically connected to each other. Instead, I’d have to use vias, holes drilled through a circuit board and lined with copper, to pass signal from one side of the board to the other. This created one awesome opportunity and one challenge.
The opportunity we have with using traces and vias to pass the signal from one side to the other is to rewire the connector between the incoming signals on the bottom and the outgoing signals on the top. While stacking systems like Arduino Shields and Adafruit Feathers are limited to essentially one expansion above, two if you are careful about pin conflicts, Polystack could rewire the connector on each mod so that pin conflicts never happen.
In order to allow for mods to consume pins, the connector is divided up into sets of pins that can all perform a certain protocol such as GPIO, SPI and UART. The pins that a mod must exclusively use are consumed by the mod and not passed upwards. This could cause trouble if the mod above uses the same pin positions, however, the mod below also shifts the remaining pins of the same type into the spot where the pins it used are. This way, both mods can have exclusive access to pins which do what it needs.
The challenge with using vias is minimizing the board area required for all 80 of the vias and the traces that run to them. It took a lot of trial and error to come up with a decent layout but I came up with the one below, dubbed the butterfly. Each via is as close to the next as it can be and the traces are too. The pin functionality is designated so that pins are shifted outwards which gives them more room to shift into. This layout is autogenerated by a Python script when you start the mod so don’t worry too much about having to lay this all out.
Once the connection system was established and tested, Polystack was born. Its unique connection system allows for up to seven mods without worrying about pin conflicts!
Fast forward many months of testing, crashing, tweaking, retesting and a couple regulator fires and we have Polystack. Polystack is a new platform for modular microcontrol systems. Originally designed as a modular flight controller for multirotors dubbed FlightStack (in case you hear it in old videos I made), Polystack features an innovative connectivity system that enables unrivaled expansion by stacking modules (or mods) on a base control board. This connectivity allows for flight controllers which can be adapted from a lean mean racing machine to a tricked out autonomous flying machine. Soon this will expand to include all varieties of projects that can be done with an Arduino-compatible control board. Follow its development on our Twitch stream and watch past streams on YouTube.
Check here over the next few weeks for introductions to my company Chickadee Tech, our philosophy and new ways of doing things. Or you can subscribe to our RSS feed. Thanks!