Monday, September 23, 2013

Toronto Maker Faire and New Products

A big thanks to everyone that visited us at the Toronto Maker Faire.  We enjoyed meeting everyone.

Our table at the Toronto Maker Faire

At the Maker Faire, we also brought out a few new products.  First we have our Encoder 5132 - a Quadrature encoder that is pin compatible with the US Digital E4P -  We had originally intended to use the E4P in our robot designs, but a few months ago we tried to order some more E4P's and noticed the following:

The E4P is not recommended for new product development!  Yikes!  So that revelation led us to design and build the Encoder 5132, making sure that it was a pin for pin replacement for the E4P.  You can see more specifications of our encoder at  The good news is that we are making it for sale for everyone at a much cheaper price than the E4P ($25 vs $40 -- see, and we're throwing in the cable.  The bad news is that it actually takes me a long time to lathe the shaft needed for the Encoder 5132, as I needed to get the tolerances under 0.5mm.  However, now I have an excuse to CNC convert my lathe!!

Quadrature Encoder 5132
For those of you who are unfamiliar with quadrature encoders, they are basically rotation sensors that can tell you how many rotations/degrees the shaft has turned.  They put out a signal on two wires like this:
Signals from quardature encoder with the shaft rotating clockwise
Each pulse is basically one degree of turn.  The reason for having two signals (A and B) is so that you can tell whether the shaft is turning clockwise or counter clockwise by observing which signal is rising first.  Our DMCC Mk.6 board has two Quadrature Encoder inputs that take the signals and count how many degrees the shaft has rotated.  So, with a simple 'C' library call to our DMCC Library you can get the exact position (well, to 1 degree) the shaft has turned, or even the velocity of the shaft.

// -------------------------- 
// Quadrature Encoder Interface (QEI) functions 
// -------------------------- 

// getQEI - Gets the QEI for the desired motor 
//     Prints an error if QEI for motor is not received 
// Parameters:
//     fd - connection to the board (value returned from DMCCstart) 
//     motor - motor number desired 
// Returns: QEI for given motor 
//     always returns 0 if an error occurs 
unsigned int getQEI(int fd, unsigned int motor); 

// getQEIVel - Gets the QEI velocity for the desired motor 
//     Prints an error if QEI velocity for motor is not received 
// Parameters: 
//     fd - connection to the board (value returned from DMCCstart) 
//     motor - motor number desired 
// Returns: QEI velocity for given motor 
//     always returns 0 if an error occurs 
int getQEIVel(int fd, unsigned int motor);

After we got the encoder replacement working, we needed something to showcase at the Toronto Maker Faire, so we built Orbit the robot! (also avaliable in kit form).

Orbit Robot
The top plate, bottom plate, large gears, and small gears are all Laser cut from 1/8" acrylic.  The white vertical pieces are CNC milled Delrin plastic, and the rest of the mechanical parts and motor is from Vex Robotics.  We added in a Beaglebone Black and our DMCC Mk.6 Dual Motor Controller Cape, and voila! - Instant Robot.

We had sold our assembled Orbit Robot on the first day of the show, so we were scrambling to quickly build another demo robot.  It was a lot harder to build when we realized we forgot to bring the proper screwdriver (small phillips) to the show!

Building a new Orbit Robot at the Toronto Maker Faire

Wednesday, September 18, 2013

We'll be at the Toronto Maker Faire, showing our DMCC and a few robots.  We hope to see you there.

Sunday, September 15, 2013

opkg upgrade on a Beaglebone black is officially evil.  Just don't do it.  Bad things happen.  Just flash to the latest image and do an opkg update.  You should be good to go on your Beaglebone black.

Saturday, September 14, 2013

Updating Beaglebone black out of the box using ethernet and ssh seems to run into problems with opkg update; opkg upgrade step.

Steps to reproduce:

  1.  Get a brand new Beaglebone black out of the box
  2. Upgrade the image to the 06-20-2013 image using an MMC card
  3. rebooted Beaglebone connected via Ethernet
  4. ssh'ed into the Beaglebone black
  5. ran "opkg update", everything ok
  6. did "opkg upgrade", things work for a while and then you get
    Downloading bad address ''Downloading bad address ''Downloading bad address ''Downloading bad address ''
Steps to fix:

My quick hack is to edit /etc/hosts and add in the IP address of
So, my /etc/hosts file now looks like

root@beaglebone:~# cd /etc
root@beaglebone:/etc# vi hosts
root@beaglebone:/etc# cat hosts       localhost.localdomain           localhost beaglebone
Now, opkg upgrade seems to work fine.

Please note that this is a HACK.  Please remove the line from your /etc/hosts after the upgrade is done.


The upgrade finished, but had lots of errors of not enough space, and then it dropped the ssh connection.  Rebooting it and attempting to restart opkg upgrade fails.

I'm beginning to think the correct way is to avoid opkg upgrade, or as put it:

'opkg upgrade'

Fix: Do not run this command or else Bad Things Will Happen.

Thursday, September 12, 2013

First few boards have been built.  Calling it a night and building more tomorrow.
Our web store is now launched at, where you can actually buy the Dual Motor Controller Capes (DMCC Mk.6).

Wednesday, September 11, 2013

100 DMCC Mk.6 Boards
Got another shipment of DMCC Mk.6 blank boards.  Time to start assembling them!

Our store is also open now at if you want to buy one of these assembled boards.