Controlling robots using javascript

  • 4,592 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
4,592
On Slideshare
0
From Embeds
0
Number of Embeds
5

Actions

Shares
Downloads
50
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Controlling robots using JavaScript Sudar Muthu (@sudarmuthu) Research Engineer, Yahoo! Labs http://hardwarefun.com http://github.com/sudar
  • 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. Why hardware for a software hacker? Fun!
  • 4. Let’s start with a demo Demo http://hardwarefun.com/projects/asimijs
  • 5. Participate in the demo  Visit http://hardwarefun.com:3000
  • 6. Control the bot at stage http://hardwarefun.com/projects/asimijs#asimijs @hardwarefun
  • 7. Arduino Visual Basic for hardware Includes both Hardware and software Photo credit Arduino team
  • 8. Interfacing Arduino with JavaScript Using serial connection (node-serialport) Using abstraction (like johnny-five or duino) Using serial Bluetooth connection (asimijs)
  • 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. 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. DemoLet there be LIGHT
  • 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. Hardware setup
  • 14. Reading sensor data What you need?Any sensor and a LED
  • 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. 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. 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. How the demo worked Node.js Server Node ClientAdmin page User page User page User page
  • 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. QuestionsThank YouSudar Muthu (@sudarmuthu) http://hardwarefun.com http://gitbub.com/sudar