{"id":13395618,"url":"https://github.com/hybridgroup/cylon","last_synced_at":"2025-05-14T06:13:50.055Z","repository":{"id":11266903,"uuid":"13671114","full_name":"hybridgroup/cylon","owner":"hybridgroup","description":"JavaScript framework for robotics, drones, and the Internet of Things (IoT)","archived":false,"fork":false,"pushed_at":"2020-10-02T13:36:21.000Z","size":20046,"stargazers_count":4211,"open_issues_count":47,"forks_count":362,"subscribers_count":202,"default_branch":"master","last_synced_at":"2025-04-11T00:51:42.447Z","etag":null,"topics":["arduino","beaglebone-black","bluetooth-low-energy","chip","drones","gpio","i2c","intel-edison","intel-joule","internet-of-things","iot","javascript","raspberry-pi","robotics","sphero"],"latest_commit_sha":null,"homepage":"https://cylonjs.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hybridgroup.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-18T06:57:08.000Z","updated_at":"2025-04-09T13:42:16.000Z","dependencies_parsed_at":"2022-08-07T06:01:18.077Z","dependency_job_id":null,"html_url":"https://github.com/hybridgroup/cylon","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hybridgroup%2Fcylon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hybridgroup%2Fcylon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hybridgroup%2Fcylon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hybridgroup%2Fcylon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hybridgroup","download_url":"https://codeload.github.com/hybridgroup/cylon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254083753,"owners_count":22011902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","beaglebone-black","bluetooth-low-energy","chip","drones","gpio","i2c","intel-edison","intel-joule","internet-of-things","iot","javascript","raspberry-pi","robotics","sphero"],"created_at":"2024-07-30T18:00:26.521Z","updated_at":"2025-05-14T06:13:50.014Z","avatar_url":"https://github.com/hybridgroup.png","language":"JavaScript","funding_links":[],"categories":["Framework","JavaScript","Uncategorized","Robotics and Physical computing","IoT"],"sub_categories":["Uncategorized","TR-069"],"readme":"[![Cylon.js](http://i.imgur.com/U3paNhR.png)](http://cylonjs.com)\n\nCylon.js is a JavaScript framework for robotics, physical computing, and the Internet of Things (IoT).\n\nIt provides a simple, but powerful way to create solutions that incorporate\nmultiple, different hardware devices concurrently.\n\nWant to use Node.js for robots, drones, and IoT devices? You are in the right place.\n\nWant to use Ruby on robots? Check out our sister project, [Artoo][].\n\nWant to use Golang to power your robots? Check out our sister project,\n[Gobot][].\n\n[Artoo]: http://artoo.io\n[Gobot]: http://gobot.io\n\n## Build Status:\n\n[![Build Status](https://secure.travis-ci.org/hybridgroup/cylon.png?branch=master)](http://travis-ci.org/hybridgroup/cylon) [![Code Climate](https://codeclimate.com/github/hybridgroup/cylon.png)](https://codeclimate.com/github/hybridgroup/cylon) [![Code Climate](https://codeclimate.com/github/hybridgroup/cylon/coverage.png)](https://codeclimate.com/github/hybridgroup/cylon)\n\n## Getting Started\n\n### Installation\n\nAll you need to get started on a new robot is the `cylon` module:\n\n    npm install cylon\n\nWith the core module installed, now install the modules for whatever hardware\nsupport you need. For the Arduino + LED blink example, we'll need the `firmata`, `gpio`, and `i2c` modules:\n\n    npm install cylon-firmata cylon-gpio cylon-i2c\n\n## Examples\n\n### Arduino + LED\n\nThe below example connects to an Arduino over a serial connection, and blinks an\nLED once per second.\n\nThe example requires that the Arduino have the Firmata sketch installed; which\ncan be obtained either through the Ardunio IDE or the `gort arduino upload\nfirmata` command available in [gort](http://gort.io).\n\n```javascript\nvar Cylon = require('cylon');\n\n// define the robot\nvar robot = Cylon.robot({\n  // change the port to the correct one for your Arduino\n  connections: {\n    arduino: { adaptor: 'firmata', port: '/dev/ttyACM0' }\n  },\n\n  devices: {\n    led: { driver: 'led', pin: 13 }\n  },\n\n  work: function(my) {\n    every((1).second(), my.led.toggle);\n  }\n});\n\n// connect to the Arduino and start working\nrobot.start();\n```\n\n### Parrot ARDrone 2.0\n\n```javascript\nvar Cylon = require('cylon');\n\nCylon.robot({\n  connections: {\n    ardrone: { adaptor: 'ardrone', port: '192.168.1.1' }\n  },\n\n  devices: {\n    drone: { driver: 'ardrone' }\n  },\n\n  work: function(my) {\n    my.drone.takeoff();\n\n    after((10).seconds(), my.drone.land);\n    after((15).seconds(), my.drone.stop);\n  }\n}).start();\n```\n\n### Cat Toy (Leap Motion + Digispark + Servos)\n\n```javascript\nvar Cylon = require('cylon');\n\nCylon.robot({\n  connections: {\n    digispark: { adaptor: 'digispark' },\n    leapmotion: { adaptor: 'leapmotion' }\n  },\n\n  devices: {\n    servo1: { driver: 'servo', pin: 0, connection: 'digispark' },\n    servo2: { driver: 'servo', pin: 1, connection: 'digispark' },\n    leapmotion: { driver: 'leapmotion', connection: 'leapmotion' }\n  },\n\n  work: function(my) {\n    my.x = 90;\n    my.z = 90;\n\n    my.leapmotion.on('hand', function(hand) {\n      my.x = hand.palmX.fromScale(-300, 300).toScale(30, 150);\n      my.z = hand.palmZ.fromScale(-300, 300).toScale(30, 150);\n    });\n\n    every(100, function() {\n      my.servo1.angle(my.x);\n      my.servo2.angle(my.z);\n\n      console.log(my.servo1.currentAngle() + \", \" + my.servo2.currentAngle());\n    });\n  }\n}).start();\n```\n\n### Multiple Spheros + HTTP API Plugin\n\nTo use the HTTP API plugin, first install it's NPM module:\n\n    $ npm install cylon-api-http\n\nThen it can be used in scripts:\n\n```javascript\nvar Cylon = require('cylon');\n\n// tell the HTTP API plugin to listen for requests at https://localhost:4000\nCylon.api(\"http\", { port: 4000 });\n\nvar bots = [\n  { port: '/dev/rfcomm0', name: 'Thelma' },\n  { port: '/dev/rfcomm1', name: 'Louise' }\n];\n\nbots.forEach(function(bot) {\n  Cylon.robot({\n    name: bot.name,\n\n    connections: {\n      sphero: { adaptor: \"sphero\", port: bot.port }\n    },\n\n    devices: {\n      sphero: { driver: \"sphero\" }\n    },\n\n    work: function(my) {\n      every((1).second(), function() {\n        console.log(my.name);\n        my.sphero.setRandomColor();\n        my.sphero.roll(60, Math.floor(Math.random() * 360));\n      });\n    }\n  });\n});\n\n// start up all robots at once\nCylon.start();\n```\n\n## Fluent Syntax\n\nFor those more familiar with jQuery, D3, or other fluent-style JavaScript\nlibraries, Cylon.JS also supports a chainable syntax:\n\n\n```javascript\nvar Cylon = require('cylon');\n\nCylon\n  .robot()\n  .connection('arduino', { adaptor: 'firmata', port: '/dev/ttyACM0' })\n  .device('led', { driver: 'led', pin: 13 })\n  .on('ready', function(bot) {\n    setInterval(function() {\n      bot.led.toggle();\n    }, 1000);\n  });\n\nCylon.start();\n```\n\n## Hardware Support\n\nCylon.js has an extensible syntax for connecting to multiple, different hardware\ndevices. The following 36 platforms are currently supported:\n\nPlatform  | Support\n--------  | -------\n[ARDrone](http://ardrone2.parrot.com/)                                                                | [cylon-ardrone](https://github.com/hybridgroup/cylon-ardrone)\n[Arduino](http://www.arduino.cc/)                                                                     | [cylon-firmata](https://github.com/hybridgroup/cylon-firmata)\n[Arduino YUN](http://arduino.cc/en/Main/ArduinoBoardYun?from=Products.ArduinoYUN)                     | [cylon-firmata](https://github.com/hybridgroup/cylon-firmata)\n[AT\u0026T M2X](https://m2x.att.com)                                                                       | [cylon-m2x](https://github.com/hybridgroup/cylon-m2x)\nAudio                                                                                                 | [cylon-audio](https://github.com/hybridgroup/cylon-audio)\n[Beaglebone Black](http://beagleboard.org/Products/BeagleBone+Black/)                                 | [cylon-beaglebone](https://github.com/hybridgroup/cylon-beaglebone)\n[Bebop](http://www.parrot.com/products/bebop-drone/)                                                  | [cylon-bebop](https://github.com/hybridgroup/cylon-bebop)\n[Bluetooth LE](http://en.wikipedia.org/wiki/Bluetooth_low_energy)                                     | [cylon-ble](https://github.com/hybridgroup/cylon-ble)\n[Crazyflie](http://www.bitcraze.se/)                                                                  | [cylon-crazyflie](https://github.com/hybridgroup/cylon-crazyflie)\n[Digispark](http://digistump.com/products/1)                                                          | [cylon-digispark](https://github.com/hybridgroup/cylon-digispark)\n[Electric Imp](https://electricimp.com/product/)                                                      | [cylon-imp](https://github.com/hybridgroup/cylon-imp)\n[Intel Edison](http://www.intel.com/content/www/us/en/do-it-yourself/edison.html)                     | [cylon-intel-iot](https://github.com/hybridgroup/cylon-intel-iot)\n[Intel Galileo](http://www.intel.com/content/www/us/en/do-it-yourself/galileo-maker-quark-board.html) | [cylon-intel-iot](https://github.com/hybridgroup/cylon-intel-iot)\n[Intel IoT Analytics](https://software.intel.com/en-us/intel-iot-developer-kit-cloud-based-analytics-user-guide) | [cylon-intel-iot-analytics](https://github.com/hybridgroup/cylon-intel-iot-analytics)\n[Joystick](http://en.wikipedia.org/wiki/Joystick)                                                     | [cylon-joystick](https://github.com/hybridgroup/cylon-joystick)\n[Keyboard](http://en.wikipedia.org/wiki/Computer_keyboard)                                            | [cylon-keyboard](https://github.com/hybridgroup/cylon-keyboard)\n[Leap Motion](https://www.leapmotion.com/)                                                            | [cylon-leapmotion](https://github.com/hybridgroup/cylon-leapmotion)\n[MiP](http://www.wowwee.com/mip/)                                                                     | [cylon-mip](https://github.com/hybridgroup/cylon-mip)\n[MQTT](http://mqtt.org/)                                                                              | [cylon-mqtt](https://github.com/hybridgroup/cylon-mqtt)\n[Nest](http://nest.com/)                                                                              | [cylon-nest](https://github.com/hybridgroup/cylon-nest)\n[Neurosky](http://store.neurosky.com/products/mindwave-mobile)                                        | [cylon-neurosky](https://github.com/hybridgroup/cylon-neurosky)\n[OpenCV](http://opencv.org/)                                                                          | [cylon-opencv](https://github.com/hybridgroup/cylon-opencv)\n[Phillips Hue](http://www2.meethue.com/)                                                              | [cylon-hue](https://github.com/hybridgroup/cylon-hue)\n[Pebble](http://www.getpebble.com/)                                                                   | [cylon-pebble](https://github.com/hybridgroup/cylon-pebble)\n[Pinoccio](https://pinocc.io)                                                                         | [cylon-pinoccio](https://github.com/hybridgroup/cylon-pinoccio)\n[PowerUp 3.0](http://www.poweruptoys.com/products/powerup-v3)                                         | [cylon-powerup](https://github.com/hybridgroup/cylon-powerup)\n[Rapiro](http://www.rapiro.com/)                                                                      | [cylon-rapiro](https://github.com/hybridgroup/cylon-rapiro)\n[Raspberry Pi](http://www.raspberrypi.org/)                                                           | [cylon-raspi](https://github.com/hybridgroup/cylon-raspi)\n[Salesforce](http://www.force.com/)                                                                   | [cylon-force](https://github.com/hybridgroup/cylon-force)\n[Skynet](http://skynet.im/)                                                                           | [cylon-skynet](https://github.com/hybridgroup/cylon-skynet)\n[Spark](http://www.spark.io/)                                                                         | [cylon-spark](https://github.com/hybridgroup/cylon-spark)\nSpeech                                                                                                | [cylon-speech](https://github.com/hybridgroup/cylon-speech)\n[Sphero](http://www.gosphero.com/)                                                                    | [cylon-sphero](https://github.com/hybridgroup/cylon-sphero)\n[Sphero BLE](http://sphero.com/bb8)                                                                    | [cylon-sphero-ble](https://github.com/hybridgroup/cylon-sphero-ble)\n[Tessel](https://tessel.io/)                                                                          | [cylon-tessel](https://github.com/hybridgroup/cylon-tessel)\n[WICED Sense](http://www.broadcom.com/products/wiced/sense/)                                          | [cylon-wiced-sense](https://github.com/hybridgroup/cylon-wiced-sense)\n\nOur implementation of GPIO (General Purpose Input/Output) allows for a shared\nset of drivers supporting 14 different devices:\n\n- [GPIO](https://en.wikipedia.org/wiki/General_Purpose_Input/Output) \u003c=\u003e [Drivers](https://github.com/hybridgroup/cylon-gpio)\n  - Analog Sensor\n  - Button\n  - Continuous Servo\n  - Direct Pin\n  - IR Range Sensor\n  - LED\n  - Makey Button (high-resistance button like the [MakeyMakey](http://www.makeymakey.com/))\n  - Maxbotix Ultrasonic Range Finder\n  - Motor\n  - Relay\n  - RGB LED\n  - Servo\n  - Temperature Sensor\n  - TP401 Gas Sensor\n\nWe also support 14 different I2C (Inter-Integrated Circuit) devices\nthrough a shared `cylon-i2c` module:\n\n- [I2C](https://en.wikipedia.org/wiki/I%C2%B2C) \u003c=\u003e [Drivers](https://github.com/hybridgroup/cylon-i2c)\n  - BlinkM RGB LED\n  - BMP180 Barometric Pressure + Temperature sensor\n  - Direct I2C\n  - HMC6352 Digital Compass\n  - JHD1313M1 LCD with RGB Backlight  \n  - LCD\n  - LIDAR-Lite\n  - LSM9DS0G 9 Degrees of Freedom IMU\n  - LSM9DS0XM 9 Degrees of Freedom IMU\n  - MAG3110 3-Axis Digital Magnetometer\n  - MPL115A2 Digital Barometer \u0026 Thermometer\n  - MPU6050 Triple Axis Accelerometer and Gyro\n  - PCA9544a 4-Channel I2C Mux\n  - PCA9685 16-Channel 12-bit PWM/Servo Driver\n\nIn addition to our officially supported platforms, we have the following 8 user contributed platforms:\n\nPlatform  | Support\n--------  | -------\n[APC UPS](http://www.apcupsd.org/) | [cylon-apcupsd](https://github.com/afoninsky/cylon-apcupsd)\n[iBeacon](https://developer.apple.com/ibeacon/)                                   | [cylon-beacon](https://github.com/juliancheal/cylon-beacon)\n[Myo](https://www.myo.com/) | [cylon-myo](https://github.com/adaemi/cylon-myo)\n[One-Wire](https://en.wikipedia.org/wiki/1-Wire) | [cylon-one-wire](https://github.com/rkelly92/cylon-one-wire)\n[Parrot Rolling Spider](http://www.parrot.com/usa/products/rolling-spider/)       | [cylon-rolling-spider](https://github.com/ChrisTheBaron/cylon-rolling-spider)\n[PCDuino](http://www.pcduino.com/)                                                | [cylon-pcduino](https://github.com/alexwang2013/cylon-pcduino)\n[Telegram](https://telegram.org/) | [cylon-telegram](https://github.com/afoninsky/cylon-telegram)\n[WeMo](http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) | [cylon-wemo](https://github.com/ChrisTheBaron/cylon-wemo)\n\nWe'll also have many more platforms and drivers coming soon, [follow us on Twitter][Twitter] for updates.\n\n[Twitter]: https://twitter.com/cylonjs\n\n## Browser \u0026 Mobile Support\n\nCylon.js can be run directly in-browser, using the `browserify` NPM module.\nYou can also run it from withing a Chrome connected app, or a PhoneGap mobile app.\n\nFor more info on browser support, and for help with different configurations, you can find more info [in our docs](https://cylonjs.com/documentation/guides/browser-support/).\n\n## API Plugins\n\nCylon.js has support for different API plugins that can be used to interact with your robots remotely.\nAt this time we have support for [http/https](https://github.com/hybridgroup/cylon-api-http), [mqtt](https://github.com/hybridgroup/cylon-api-mqtt), and [socket.io](https://github.com/hybridgroup/cylon-api-socketio) with more coming in the near future.\n\nTo use an API plugin, install it alongside Cylon:\n\n    $ npm install cylon-api-http cylon-api-socketio\n\nThen, all you need to do is call `Cylon#api` in your robot's script:\n\n```javascript\nvar Cylon = require(\"cylon\");\n\n// For http\nCylon.api('http');\n\n// Or for Socket.io\nCylon.api('socketio');\n```\n\nThen visit `https://localhost:3000/` and you are ready to control your robots from a web browser!\n\n\u003cimg src=\"http://cylonjs.com/images/screenshots/robeaux.jpg\" style=\"margin-top: 15px; width: 100%\"\u003e\n\nYou can check out more information on the Cylon API in the docs [here](http://cylonjs.com/documentation/guides/api).\n\n## CLI\n\nCylon uses the Gort [http://gort.io](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!\n\nCylon also has its own CLI to generate new robots, adaptors, and drivers. You can check it out at [https://github.com/hybridgroup/cylon-cli](https://github.com/hybridgroup/cylon-cli).\n\n## Documentation\n\nWe're busy adding documentation to our website, check it out at [cylonjs.com/documentation][docs].\n\nIf you want to help with documentation, you can find the code for our website at on the [https://github.com/hybridgroup/cylon-site](https://github.com/hybridgroup/cylon-site).\n\n[docs]: http://cylonjs.com/documentation\n[docs site]: https://github.com/hybridgroup/cylon-site\n\n## Contributing\n\nFor our contribution guidelines, please go to [CONTRIBUTING.md](https://github.com/hybridgroup/cylon/blob/master/CONTRIBUTING.md).\n\n## Release History\n\nFor the release history, please go to [RELEASES.md](https://github.com/hybridgroup/cylon/blob/master/RELEASES.md).\n\n## License\n\nCopyright (c) 2013-2016 The Hybrid Group. Licensed under the Apache 2.0 license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhybridgroup%2Fcylon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhybridgroup%2Fcylon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhybridgroup%2Fcylon/lists"}