Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Controlling robots using JavaScript Sudar Muthu (@sudarmuthu) Research Engineer, Yahoo! Labs http://hardwarefun.com http:/...
Who am I? Research Engineer by profession Creates robots as hobby Prefers Arduino Prefers JavaScript at work Why not ...
Why hardware for a software hacker?           Fun!
Let’s start with a demo       Demo  http://hardwarefun.com/projects/asimijs
Participate in the demo           Visit    http://hardwarefun.com:3000
Control the bot at stage               http://hardwarefun.com/projects/asimijs#asimijs @hardwarefun
Arduino Visual Basic for hardware Includes both Hardware and software                         Photo credit Arduino team
Interfacing Arduino with JavaScript Using serial connection (node-serialport) Using abstraction (like johnny-five or dui...
Using Serial ConnectionYou need node-serialport - https://github.com/voodootikigod/node-serialportvar SerialPort = require...
Using Abstraction Build on top of node-serialport -  https://github.com/voodootikigod/node-serialport Options include Jo...
DemoLet there be LIGHT
Codevar five = require("johnny-five"),  board = new five.Board();board.on("ready", function() { // Create an Led on pin 13...
Hardware setup
Reading sensor data   What you need?Any sensor and a LED
Reading sensor datavar five = require("johnny-five"),  board, led, photoresistor;board = new five.Board();board.on("ready"...
Using serial Bluetooth connection Bluetooth shield gives wireless capability to Arduino A Bluetooth connection appears a...
Using serial Bluetooth connectionvar SerialPort = require("serialport").SerialPort,  bt = new SerialPort("/dev/cu.FireFly-...
How the demo worked                Node.js Server                                 Node ClientAdmin page                  U...
Links AsimiJS – The demo that I showed initially  http://hardwarefun.com/projects/asimijs Asimi – A simple bot using Ard...
QuestionsThank YouSudar Muthu (@sudarmuthu)  http://hardwarefun.com  http://gitbub.com/sudar
Upcoming SlideShare
Loading in …5
×

Controlling robots using javascript

7,206 views

Published on

Controlling Robots using JavaScript. Slides from my talk at jsfoo. Details at http://sudarmuthu.com/blog/controlling-robots-using-javascript

Published in: Technology

Controlling robots using javascript

  1. 1. Controlling robots using JavaScript Sudar Muthu (@sudarmuthu) Research Engineer, Yahoo! Labs http://hardwarefun.com http://github.com/sudar
  2. 2. Who am I? Research Engineer by profession Creates robots as hobby Prefers Arduino Prefers JavaScript at work Why not combine both of them? .. and that’s what I am going to talk about today
  3. 3. Why hardware for a software hacker? Fun!
  4. 4. Let’s start with a demo Demo http://hardwarefun.com/projects/asimijs
  5. 5. Participate in the demo  Visit http://hardwarefun.com:3000
  6. 6. Control the bot at stage http://hardwarefun.com/projects/asimijs#asimijs @hardwarefun
  7. 7. Arduino Visual Basic for hardware Includes both Hardware and software Photo credit Arduino team
  8. 8. Interfacing Arduino with JavaScript Using serial connection (node-serialport) Using abstraction (like johnny-five or duino) Using serial Bluetooth connection (asimijs)
  9. 9. Using Serial ConnectionYou need node-serialport - https://github.com/voodootikigod/node-serialportvar SerialPort = require("serialport").SerialPort, arduino = new SerialPort("/dev/tty/ACM1");// when data is received from arduinoarduino.on("data", function (data) { arduino.write(new Buffer[data]); console.log("Got: " + data);});// if there was any errorarduino.on("error", function (data) { console.log("Error: " + data);});
  10. 10. Using Abstraction Build on top of node-serialport - https://github.com/voodootikigod/node-serialport Options include Johnny-five - https://github.com/rwldrn/johnny-five and duino - https://github.com/ecto/duino Load the firmdata program into Arduino It provides the necessary abstraction Write code using a node.js library Profit 
  11. 11. DemoLet there be LIGHT
  12. 12. Codevar five = require("johnny-five"), board = new five.Board();board.on("ready", function() { // Create an Led on pin 13 (new five.Led(13)).strobe(1000);});
  13. 13. Hardware setup
  14. 14. Reading sensor data What you need?Any sensor and a LED
  15. 15. Reading sensor datavar five = require("johnny-five"), board, led, photoresistor;board = new five.Board();board.on("ready", function() { // Create a new `photoresistor` hardware instance. photoresistor = new five.Sensor({pin: "A2”, freq: 250}); led = new five.Led(13); // "read" get the current reading from the photoresistor photoresistor.on("read", function( err, value ) { if (value > 50) { led.on(); } else { led.off(); } console.log( value, this.normalized ); }); // Inject the `sensor` hardware into the Repl instances context; // allows direct command line access board.repl.inject({ pot: photoresistor });});
  16. 16. Using serial Bluetooth connection Bluetooth shield gives wireless capability to Arduino A Bluetooth connection appears as serial port in your computer Using node-serialport you can talk wirelessly to Arduino And that’s what I did for demo ;)
  17. 17. Using serial Bluetooth connectionvar SerialPort = require("serialport").SerialPort, bt = new SerialPort("/dev/cu.FireFly-CCFA-SPP");// when data is received from bluetoothbt.on("data", function (data) { bt.write(new Buffer[data]); console.log("Got: " + data);});// error reading bluetooth serial portbt.on("error", function (data) { console.log("Error: " + data);});
  18. 18. How the demo worked Node.js Server Node ClientAdmin page User page User page User page
  19. 19. Links AsimiJS – The demo that I showed initially http://hardwarefun.com/projects/asimijs Asimi – A simple bot using Arduino http://hardwarefun.com/project/asimi Getting started with hardware programming http://hardwarefun.com/tutorials/getting-started-with- hardware-programming Getting started with Arduino http://hardwarefun.com/tutorials/getting-started-with-arduino- and-avr Node-serialport https://github.com/voodootikigod/node- serialport Johnny Five https://github.com/rwldrn/johnny-five
  20. 20. QuestionsThank YouSudar Muthu (@sudarmuthu) http://hardwarefun.com http://gitbub.com/sudar

×