Sphero + Pebble

For this Cylon example, we're going to hook up to a Sphero, and control it using pebble accelerometer.

Before we get started, make sure you've got the cylon-sphero module installed.

To get started, let's import the Cylon module:

var Cylon = require('cylon');

Then we setup API to listen on port 8080:

  host: '',
  port: '8080',
  ssl:  false

With that set up, we can start defining our robot:


We setup connections an devices for sphero and pebble:

connections: {
  sphero: { adaptor: 'sphero', port: '/dev/tty.Sphero-YBW-RN-SPP' },
  pebble: { adaptor: 'pebble' }

devices: {
  sphero: { driver: 'sphero' },
  pebble: { driver: 'pebble' }

Then we create and set variable heading and speed to 0:

heading: 0,
speed:  0,

And now we can start defining our robot's work.

work: function(my) {

Every second we will change update sphero direction using calculated heading value:

every((0.1).second(), function() {
  my.sphero.roll(100, my.heading);

When we receive data from pebble accelerometer we calculate new heading value:

my.pebble.on('accel', function(data) {
  values = data.split(",");
  x      = values[0];
  y      = values[1];

  my.speed   = Math.round(Math.max(Math.abs(x)/6, Math.abs(y)/6));
  my.heading = Math.round(((180.0 - (Math.atan2(y,x) * (180.0 / Math.PI)))));

And with all that done, we can finally start the robot.