All Projects → hybridgroup → Cylon

hybridgroup / Cylon

Licence: other
JavaScript framework for robotics, drones, and the Internet of Things (IoT)

Programming Languages

javascript
184084 projects - #8 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to Cylon

Johnny Five
JavaScript Robotics and IoT programming framework, developed at Bocoup.
Stars: ✭ 12,498 (+223.61%)
Mutual labels:  robotics, arduino, raspberry-pi, i2c, gpio, chip, iot, beaglebone-black
gobot
Golang framework for robotics, drones, and the Internet of Things (IoT)
Stars: ✭ 7,869 (+103.75%)
Mutual labels:  beaglebone-black, gpio, i2c, internet-of-things, sphero, intel-joule, intel-edison
Blynk Library
Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc.
Stars: ✭ 3,305 (-14.42%)
Mutual labels:  arduino, raspberry-pi, bluetooth-low-energy, iot, internet-of-things
Make
📖📖📖📖📖 写给软件工程师看的硬件编程指南
Stars: ✭ 170 (-95.6%)
Mutual labels:  arduino, raspberry-pi, iot, internet-of-things
Waterius
Передача показаний воды по Wi-Fi. Watermeter Wi-Fi transmitter.
Stars: ✭ 295 (-92.36%)
Mutual labels:  arduino, i2c, iot, internet-of-things
Swiftygpio
A Swift library for hardware projects on Linux/ARM boards with support for GPIOs/SPI/I2C/PWM/UART/1Wire.
Stars: ✭ 1,188 (-69.24%)
Mutual labels:  raspberry-pi, i2c, gpio, iot
Pjon
PJON (Padded Jittering Operative Network) is an experimental, arduino-compatible, multi-master, multi-media network protocol.
Stars: ✭ 2,615 (-32.29%)
Mutual labels:  arduino, raspberry-pi, iot, internet-of-things
Blynk Server
Blynk is an Internet of Things Platform aimed to simplify building mobile and web applications for the Internet of Things. Easily connect 400+ hardware models like Arduino, ESP8266, ESP32, Raspberry Pi and similar MCUs and drag-n-drop IOT mobile apps for iOS and Android in 5 minutes
Stars: ✭ 8 (-99.79%)
Mutual labels:  arduino, raspberry-pi, iot, internet-of-things
Diozero
Java Device I/O library that is portable across Single Board Computers. Tested with Raspberry Pi, Odroid C2, BeagleBone Black, Next Thing CHIP, Asus Tinker Board and Arduinos. Supports GPIO, I2C, SPI as well as Serial communication. Also known to work with Udoo Quad.
Stars: ✭ 167 (-95.68%)
Mutual labels:  arduino, raspberry-pi, i2c, gpio
Ofxgpio
Library C++ for raspberrypi and orangepi, GPIO interfaces compatible with openframeworks.
Stars: ✭ 155 (-95.99%)
Mutual labels:  raspberry-pi, i2c, gpio, internet-of-things
Periph
Go·Hardware·Lean
Stars: ✭ 1,700 (-55.98%)
Mutual labels:  raspberry-pi, i2c, gpio, chip
Sitewhere
SiteWhere is an industrial strength open-source application enablement platform for the Internet of Things (IoT). It provides a multi-tenant microservice-based infrastructure that includes device/asset management, data ingestion, big-data storage, and integration through a modern, scalable architecture. SiteWhere provides REST APIs for all system functionality. SiteWhere provides SDKs for many common device platforms including Android, iOS, Arduino, and any Java-capable platform such as Raspberry Pi rapidly accelerating the speed of innovation.
Stars: ✭ 788 (-79.6%)
Mutual labels:  arduino, raspberry-pi, iot, internet-of-things
Cutehmi
CuteHMI is an open-source HMI (Human Machine Interface) software written in C++ and QML, using Qt libraries as a framework. GitHub repository is a mirror!
Stars: ✭ 90 (-97.67%)
Mutual labels:  raspberry-pi, gpio, iot, internet-of-things
Gort
Command Line Interface (CLI) for RobotOps
Stars: ✭ 425 (-89%)
Mutual labels:  robotics, arduino, bluetooth-low-energy, iot
Iot 433mhz
🌐 IoT System to control 433 MHz RC power sockets, PIR, Door Sensors and much more.
Stars: ✭ 301 (-92.21%)
Mutual labels:  arduino, raspberry-pi, iot
Arduino Device Lib
Arduino Library for TTN Devices
Stars: ✭ 155 (-95.99%)
Mutual labels:  arduino, iot, internet-of-things
Ssd1306
Driver for SSD1306, SSD1331, SSD1351, IL9163, ILI9341, ST7735, PCD8544, Nokia 5110 displays running on Arduino/ESP32/Linux (Rasperry) platforms
Stars: ✭ 303 (-92.15%)
Mutual labels:  arduino, raspberry-pi, i2c
Blinker Doc
blinker中文文档
Stars: ✭ 139 (-96.4%)
Mutual labels:  arduino, raspberry-pi, iot
Wirehome.core
Wirehome.Core is a home automation system written in C# targeting .NET Core. It runs on Linux, Windows and macOS.
Stars: ✭ 180 (-95.34%)
Mutual labels:  arduino, raspberry-pi, iot
Parse Embedded Sdks
The Embedded SDKs for the Parse Platform
Stars: ✭ 244 (-93.68%)
Mutual labels:  arduino, raspberry-pi, iot

Cylon.js

Cylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things (IoT).

It provides a simple, but powerful way to create solutions that incorporate multiple, different hardware devices concurrently.

Want to use Node.js for robots, drones, and IoT devices? You are in the right place.

Want to use Ruby on robots? Check out our sister project, Artoo.

Want to use Golang to power your robots? Check out our sister project, Gobot.

Build Status:

Build Status Code Climate Code Climate

Getting Started

Installation

All you need to get started on a new robot is the cylon module:

npm install cylon

With the core module installed, now install the modules for whatever hardware support you need. For the Arduino + LED blink example, we'll need the firmata, gpio, and i2c modules:

npm install cylon-firmata cylon-gpio cylon-i2c

Examples

Arduino + LED

The below example connects to an Arduino over a serial connection, and blinks an LED once per second.

The example requires that the Arduino have the Firmata sketch installed; which can be obtained either through the Ardunio IDE or the gort arduino upload firmata command available in gort.

var Cylon = require('cylon');

// define the robot
var robot = Cylon.robot({
  // change the port to the correct one for your Arduino
  connections: {
    arduino: { adaptor: 'firmata', port: '/dev/ttyACM0' }
  },

  devices: {
    led: { driver: 'led', pin: 13 }
  },

  work: function(my) {
    every((1).second(), my.led.toggle);
  }
});

// connect to the Arduino and start working
robot.start();

Parrot ARDrone 2.0

var Cylon = require('cylon');

Cylon.robot({
  connections: {
    ardrone: { adaptor: 'ardrone', port: '192.168.1.1' }
  },

  devices: {
    drone: { driver: 'ardrone' }
  },

  work: function(my) {
    my.drone.takeoff();

    after((10).seconds(), my.drone.land);
    after((15).seconds(), my.drone.stop);
  }
}).start();

Cat Toy (Leap Motion + Digispark + Servos)

var Cylon = require('cylon');

Cylon.robot({
  connections: {
    digispark: { adaptor: 'digispark' },
    leapmotion: { adaptor: 'leapmotion' }
  },

  devices: {
    servo1: { driver: 'servo', pin: 0, connection: 'digispark' },
    servo2: { driver: 'servo', pin: 1, connection: 'digispark' },
    leapmotion: { driver: 'leapmotion', connection: 'leapmotion' }
  },

  work: function(my) {
    my.x = 90;
    my.z = 90;

    my.leapmotion.on('hand', function(hand) {
      my.x = hand.palmX.fromScale(-300, 300).toScale(30, 150);
      my.z = hand.palmZ.fromScale(-300, 300).toScale(30, 150);
    });

    every(100, function() {
      my.servo1.angle(my.x);
      my.servo2.angle(my.z);

      console.log(my.servo1.currentAngle() + ", " + my.servo2.currentAngle());
    });
  }
}).start();

Multiple Spheros + HTTP API Plugin

To use the HTTP API plugin, first install it's NPM module:

$ npm install cylon-api-http

Then it can be used in scripts:

var Cylon = require('cylon');

// tell the HTTP API plugin to listen for requests at https://localhost:4000
Cylon.api("http", { port: 4000 });

var bots = [
  { port: '/dev/rfcomm0', name: 'Thelma' },
  { port: '/dev/rfcomm1', name: 'Louise' }
];

bots.forEach(function(bot) {
  Cylon.robot({
    name: bot.name,

    connections: {
      sphero: { adaptor: "sphero", port: bot.port }
    },

    devices: {
      sphero: { driver: "sphero" }
    },

    work: function(my) {
      every((1).second(), function() {
        console.log(my.name);
        my.sphero.setRandomColor();
        my.sphero.roll(60, Math.floor(Math.random() * 360));
      });
    }
  });
});

// start up all robots at once
Cylon.start();

Fluent Syntax

For those more familiar with jQuery, D3, or other fluent-style JavaScript libraries, Cylon.JS also supports a chainable syntax:

var Cylon = require('cylon');

Cylon
  .robot()
  .connection('arduino', { adaptor: 'firmata', port: '/dev/ttyACM0' })
  .device('led', { driver: 'led', pin: 13 })
  .on('ready', function(bot) {
    setInterval(function() {
      bot.led.toggle();
    }, 1000);
  });

Cylon.start();

Hardware Support

Cylon.js has an extensible syntax for connecting to multiple, different hardware devices. The following 36 platforms are currently supported:

Platform Support
ARDrone cylon-ardrone
Arduino cylon-firmata
Arduino YUN cylon-firmata
AT&T M2X cylon-m2x
Audio cylon-audio
Beaglebone Black cylon-beaglebone
Bebop cylon-bebop
Bluetooth LE cylon-ble
Crazyflie cylon-crazyflie
Digispark cylon-digispark
Electric Imp cylon-imp
Intel Edison cylon-intel-iot
Intel Galileo cylon-intel-iot
Intel IoT Analytics cylon-intel-iot-analytics
Joystick cylon-joystick
Keyboard cylon-keyboard
Leap Motion cylon-leapmotion
MiP cylon-mip
MQTT cylon-mqtt
Nest cylon-nest
Neurosky cylon-neurosky
OpenCV cylon-opencv
Phillips Hue cylon-hue
Pebble cylon-pebble
Pinoccio cylon-pinoccio
PowerUp 3.0 cylon-powerup
Rapiro cylon-rapiro
Raspberry Pi cylon-raspi
Salesforce cylon-force
Skynet cylon-skynet
Spark cylon-spark
Speech cylon-speech
Sphero cylon-sphero
Sphero BLE cylon-sphero-ble
Tessel cylon-tessel
WICED Sense cylon-wiced-sense

Our implementation of GPIO (General Purpose Input/Output) allows for a shared set of drivers supporting 14 different devices:

  • GPIO <=> Drivers
    • Analog Sensor
    • Button
    • Continuous Servo
    • Direct Pin
    • IR Range Sensor
    • LED
    • Makey Button (high-resistance button like the MakeyMakey)
    • Maxbotix Ultrasonic Range Finder
    • Motor
    • Relay
    • RGB LED
    • Servo
    • Temperature Sensor
    • TP401 Gas Sensor

We also support 14 different I2C (Inter-Integrated Circuit) devices through a shared cylon-i2c module:

  • I2C <=> Drivers
    • BlinkM RGB LED
    • BMP180 Barometric Pressure + Temperature sensor
    • Direct I2C
    • HMC6352 Digital Compass
    • JHD1313M1 LCD with RGB Backlight
    • LCD
    • LIDAR-Lite
    • LSM9DS0G 9 Degrees of Freedom IMU
    • LSM9DS0XM 9 Degrees of Freedom IMU
    • MAG3110 3-Axis Digital Magnetometer
    • MPL115A2 Digital Barometer & Thermometer
    • MPU6050 Triple Axis Accelerometer and Gyro
    • PCA9544a 4-Channel I2C Mux
    • PCA9685 16-Channel 12-bit PWM/Servo Driver

In addition to our officially supported platforms, we have the following 8 user contributed platforms:

Platform Support
APC UPS cylon-apcupsd
iBeacon cylon-beacon
Myo cylon-myo
One-Wire cylon-one-wire
Parrot Rolling Spider cylon-rolling-spider
PCDuino cylon-pcduino
Telegram cylon-telegram
WeMo cylon-wemo

We'll also have many more platforms and drivers coming soon, follow us on Twitter for updates.

Browser & Mobile Support

Cylon.js can be run directly in-browser, using the browserify NPM module. You can also run it from withing a Chrome connected app, or a PhoneGap mobile app.

For more info on browser support, and for help with different configurations, you can find more info in our docs.

API Plugins

Cylon.js has support for different API plugins that can be used to interact with your robots remotely. At this time we have support for http/https, mqtt, and socket.io with more coming in the near future.

To use an API plugin, install it alongside Cylon:

$ npm install cylon-api-http cylon-api-socketio

Then, all you need to do is call Cylon#api in your robot's script:

var Cylon = require("cylon");

// For http
Cylon.api('http');

// Or for Socket.io
Cylon.api('socketio');

Then visit https://localhost:3000/ and you are ready to control your robots from a web browser!

You can check out more information on the Cylon API in the docs here.

CLI

Cylon uses the Gort http://gort.io Command Line Interface (CLI) so you can access important features right from the command line. We call it "RobotOps", aka "DevOps For Robotics". You can scan, connect, update device firmware, and more!

Cylon also has its own CLI to generate new robots, adaptors, and drivers. You can check it out at https://github.com/hybridgroup/cylon-cli.

Documentation

We're busy adding documentation to our website, check it out at cylonjs.com/documentation.

If you want to help with documentation, you can find the code for our website at on the https://github.com/hybridgroup/cylon-site.

Contributing

For our contribution guidelines, please go to CONTRIBUTING.md.

Release History

For the release history, please go to RELEASES.md.

License

Copyright (c) 2013-2016 The Hybrid Group. Licensed under the Apache 2.0 license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].