VeloKey: A post mortem

VeloKey is a Keyboard for your bike.  I know.  I know what you are going to ask: “Why do you need a keyboard for your bike?”  Well, I guess you don’t.  This is the story of a failed project.  We break down why and how this project failed in hopes to learn from the experience.

First let me remind you why we thought VeloKey might have made a viable product.

Project goals:  Many people ride bikes indoors for hours at a time.  They use a computer to: run a training program (virtual world), watch videos, browse the web, and read email.  These activities could be made easier with a cycling specific computer interface.

A full QWERTY keyboard would be too cumbersome to operate while you are pumping out the Watts, so we simplified the interface to three scroll wheels, a display, and a few buttons.  If you need to author your manifesto, then by all means use a different interface.  VeloKey is meant for typing the first few characters of a web address, not a dissertation.

Features:

  • Wireless — you don’t want to be burdened with cords on the bike.  VeloKey uses the Bluetooth HID interface.
  • Full Keyboard — Letters, numbers, symbols, arrow keys
  • Full Mouse — Works like an etch-a-sketch, left/right clicks
  • Display — Select keys, change modes.
  • Magnetic handlebar mount — Allows rider to remove the VeloKey, and use with both hands.

Project design:

  • Open source hardware — Like all of our designs this was important to us.  We are empowered by open hardware, and we will always publish our designs in the hope that others find them useful.
  • Off the shelf open hardware components — This really sped up development time.
  • High quality scroll wheels — this subtle clicking of these wheels are addictive like popping bubble wrap.
  • Custom back plane — Anool whipped up the board that ties the circuit together.
  • 3D printed case — Snap together, magnetic base, Garmin quarter turn mount

Hardware:

The design is centered around the Feather M0.  This M0 has plenty of program memory if you are used to programming AVR 328s found in the Arduino Unos.  Its a fantastic little ship with multiple hardware serial ports, can act as an HID keyboard and mouse (which backs up the Bluetooth) and is well documented.

We used an arduino pro mini to provide guaranteed encoder readings.  Kevin did have some luck reading the encoders directly from the M0, but never all three at the same time and also not with background tasking.  Using the Pro-Mini was a quick and rely able way to implement the encoders.  The Pro-Mini is connected to the M0 via a serial link.

The EZKey module provides the Bluetooth HID interface so that VeloKey does not require any software modifications on the host computer.  The EZKey is connected to the M0 via a serial link.

Software:

The software was developed using Arduino.  Upon startup, VeloKey launches into a software defined default mode (typically mouse mode).  Scrolling the middle wheel allows you to change modes from mouse, to keyboard, to program, to movie.  Modes are defined in an extensible object oriented manor so that VeloKey will play nicely with community defined modes.  The Pro-Mini translates encoder events into serial events and sends them to the M0 where the events are handled.

The beginning of an extensible API was created to test VeloKey as a gaming platform.  A few basic sprites and widgets were defined and the API was used to create Pong and Asteroids.

Cause of death: Lack of interest.

The main reason VeloKey Failed was negative feedback from three sources.  First, the local bike shop said that “VeloKey” solved a non-existent problem.  A virtual training company rejected hardware in favor of their phone app. And finally, a beta tester said that it was too distracting.  Three strikes and VeloKey is out.

Contributing technical factors:

If it weren’t for these technical factors, we’d probably still pursue a crowd funding campaign.  After all we have a lot of effort invested in VeloKey.  Before we launched, we’d have to solve this technical issues and that would take more investment of time that we felt would not pay returns.

  1. Feather M0 lock-ups.  Frequently the M0 locks up especially when interfacing with the Bluetooth module.
  2. Flaky Bluetooth.  Several beta testers had trouble pairing the Bluetooth on Windows and Mac.
  3. Draining battery.  The Feather M0 has no way to shut off current completely.  This meant that VeloKey could not be left on the bike, but would need to stay on the charger between uses.

Other uses?

VeloKey or something like it may be useful as a mobile computer interface, or game platform.  We tested it out with Pong and Asteroids.  The update rate was a little on the slow side for any graphic intensive games.

Introducing VeloKey, the keyboard for your bike.

2015-02-28_0810260

Let’s face it, indoor training kinda sucks.  But our friends at Zwift.com have made it suck a lot less.  Actually they made it kinda fun.  Zwift allows you to ride with real friends and cyber friends in a virtual world.  You interact with the environment with (besides your bike) a keyboard, a mouse and a phone app.  It is great as is, but we’ve come up with a more intuitive interface we call VeloKey.

IMG_20160301_190323938

VeloKey is a Bluetooth interface to Zwift that consists of two a 1.8 inch dis,play thumbwheels, and a power up button.

VeloKey’s main screen allows you to navigate the Zwift world, and control the camera angles with ease.

IMG_20160301_192023109

Double-click the right scrollwheel to kick into Etch-a-mouse mode: left thumbwheel controls left-right mouse motions and the right thumbwheel controls the up-down mouse movement.  Pressing either thumbwheel acts as a mouse button.  Press both button’s in succession to get a double click on the connected computer.

IMG_20160301_193057374 (1)

Double click the left scrollwheel to activate the keyboard mode complete with caps, lowercase, letters and numbers, and don’t forget backspace.

IMG_20160301_193111135 (1)

VeloKey make riding indoors even more fun!

IMG_20160225_192746874

 

VeloKey is an Open Hardware project.  Download source files here.

WyoManiacal Display, no good can come of this!

Maniacal Labs has teamed up with WyoLum to make something amazing.

They’ve taken 24 TiM boards and assembled them into a 64×48 array of RGB addressable LED awesomeness with a refresh rate of 60 frames a second.

See the gallery below, sure, but don’t miss the opprotunity to see it in person March 13 at the NoVa Mini Maker Faire!

 

 

 

Voice Page Down

Voice Page Down

I asked my friend Steve, when he injured his spine, what would make his life easier.  He didn’t have to think about it.  The biggest thing he missed was the simple act of reading a book.  It gives me great pleasure to make his recovery more bearable in this small way.

IMAG0025

The first solution was a simple blue button that send the ASCII code for “Right Arrow” over bluetooth.  We called the project “Page Down”.  He was able to press the button with his forearm and was finally able to read books on his Kindle.  YAY! But occasionally the button would be held too long and cause multiple pages to turn.  With no back arrow, this was a major nuisance.

We also got Steve an Amazon Echo that he got to test the same day as “Page Down”.  The Echo responded well to Steve’s voice commands which allowed him to tune in pod-casts, and listen to music and radio.  That gave me the idea for a voice actived page turner.  Thus Voice Page Down (VPD) was born.

We live in a magical time.  VPD would have been a huge undertaking 10 or even 5 years ago.  Today, it is practially a drag and a drop.  The bulk of VPD is an Arduino Shield stack: AlaMode for the micro-controller, EasyVR for the voice recognition, Power Boost Shield for power management, and finally the Bluefruit EZ-key for the Bluetooth communication.  The whole project took a week of spare time including the enclosure.  Now it is ready to share.

Voice Page Down_annotated

If you are still reading, you might be interested to pick up on some more details.  The enclosure is assembled with the WyoLum Lada system.  Lada combines 3D printed corners with laser cut faces to make custom enclosures.  An early Lada design included a PCB notch out to hold a PCB like a stand-off.  Since most PCB’s have mounting points, this turned out not to be all that useful.  But in this case, it was just what the doctor ordered.  The AlaMode usually relies on a host raspberry pi for support and only has a single mount point.  The specialized Lada corners worked perfectly, supporting three of the four PCB corners.  Components on the fourth corner disallowed any Lada, so we just left it off.

The other cool thing is the custom speaker mount.  Amazingly, the speaker did not come with any mounting system.   A tiny OpenScad script added a ring to 4 Lada corners and walla *

Screenshot from 2015-05-17 15:55:28

Panel mounted buttons and switches would be a nice upgrade.  But perfect is the enemy of good enough, so I just provided access with panel cut outs for the Bluefruit pariing button, power switch, reset, and usb charging port.

IMAG0138

 

All design files and code are available on github.

Evolution of a Gear-Clock

News Flash: I love to make things.

The explosion of home use fabrication technologies has given modern humans powers, god-like powers that we could only dream of even 10 years ago.  Digital design and fabrication are now accessible to practically everyone.   Those that do not have fabrication facilities at home can use services like Shapeways, 3D hubs, Oshpark, and Ponoko. to fill the gap and create practically whatever they can dream up.  What are you doing with your god-like powers?

I’ve been asking myself this same question lately and it turns out that I use them to make clocks.  Funny thing is I’m not really a clock person, but I know that I need to learn how to use these tools: 3D printing, laser cutting, circuits, and clocks seem to be the go-to target for my aspirations.

This led to ClockTHREE and ClockTHREEjr word clocks and also a Kandy, a two-sided race timer.  But none of these clocks have moving parts.  I figure I need to understand mechanical issues to really employ my god-like powers when inspiration hits.

Motivated by clocks like this one from Brian Wagner I set out to design my own version of the gear clock.  GearClock1.

Screenshot from 2015-03-01 10:33:49

Like Brian’s clock, the hour wheel rotates indicating the hour at the top.  Unlike Brian’s clock, and others, this clock uses a idler gear to push hour ring out to the radius of the minute hand.  The parts are a made with laser-cut acrylic and 3D printed PLA.  A single hand is attached to the drive axle to indicate the minute on a stationary disk, concentric with the hour ring.  AlaMode, which comes with a DS3231 real time clock, was used in conjunction with the Adafruit motor shield to control movement.  Blue accents really make this clock pop.  But the clock had mechanical issues and would bind up frequently.

I realized that if I replaced the idler gear with a planetary gear, It could drag an hour hand along for the ride like a normal clock.  GearClock2.

GearClock2

GearClock2

After first getting the gear ratio wrong (how many hours in the day are there again?) I got it right.  Kevin Osborn jazzed up the design with some sick filigree hands and taught me how to draw in InkScape and import into OpenSCAD.  He also printed all of the many iterations of gears on this and previous clocks.  Thanks Kevin!

The clock looks pretty basic, and it is, but remember my goal is to learn mechanics and I learned a lot with this clock.  Form follows function.  I take that to mean, first make it work, then worry about how it looks.  It can also mean: make it work really well, and its shape will appeal.  We are getting there.  The good news is this clock really works.  We have it set up on a hutch in our kitchen and use it every day.  But I have to admit, the shape is a little awkward and the electronics are unsightly.  The cheap 48-step motors tick every 75 seconds, which is more than frequent enough for a wall clock, but we can do better.

GearClock3 is the same basic mechanical design with a 200 step pancake motor and electronics housed in a separate box.

IMAG0662

An Arduino pro-mini, a Pololu stepper driver, and a Chonodot make up the electronics package.  I really like this stepper driver.  It is very easy to use: set the step pin to HIGH to move forward one step.  No complex driver software is required.

Aesthetically, this clock has many of the right elements although a flash of colored acrylic would really make the numbers pop.  Everyone loves GearClock3, but the first thing they ask is: can you do seconds?

GearClock4 adds a second hand.GearClock4

I’ve come to appreciate the difficulty of the standard hour, minute second clocks: Three concentric hands driven at three rates with a ratio of 3600:1 between the hour and second hands.  A 12:1 ratio was already working with the planetary gear.  The 60:1 ratio was solved by using two reduction stages that take the motion off center, then back on.  After several experiments with the gear lash settings, I finally found a combination that works well and makes a pleasant tick (not too loud).  One issue is setting this clock.  You have to fast forward the second hand, which means you’d like to move the seconds hand as fast as possible.  This second hand can turn a complete revolution in 0.2 seconds which means it can fast forward though twelve hours in less than two and a half minutes.  A sealed bearing on the reduction gear allows this and should work for years to come.

What’s next?  Anool is working on a custom circular PCB that will that will bring the electrics up to par with the mechanics.   The PCB will host the real time clock, an Arduino compatible ATMEGA328, hall effect sensors to detect hand position, and a DS3231 real time clock, and GPS unit for time synchronization.  Stay tuned to our GitHub repo for updates….

DSCN9935