Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Learning how to Tinker

Learning how to Tinker

Hardware hacking for web developers.

Presented at Hybrid Conf 2014

Andrew Nesbitt

August 22, 2014
Tweet

More Decks by Andrew Nesbitt

Other Decks in Technology

Transcript

  1. Learning how to tinker
    with
    Andrew Nesbitt

    View Slide

  2. View Slide

  3. Hardware hacking
    for
    Web people

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. BEng Robotics & Automated Systems
    University of Plymouth

    View Slide

  10. View Slide

  11. Advanced Mathematics
    Mechanical Engineering
    Digital Electronics Analogue Electronics
    Computer Science
    Control Theory
    Neural networking Microprocessor Design
    Playing with Robots
    Learning Robotics

    View Slide

  12. Advanced Mathematics
    Observing Robots behind glass
    Learning Robotics
    Advanced Mathematics
    Advanced Mathematics
    Advanced Mathematics
    Advanced Mathematics
    Advanced Mathematics
    Advanced Mathematics
    Advanced Mathematics

    View Slide

  13. Back then robotics was:
    expensive,
    complicated
    and not fun

    View Slide

  14. APIs
    Open Source Hardware
    Smart phones
    High level Programming Languages
    GitHub
    Internet everywhere 3D Printing
    2014

    View Slide


  15. View Slide

  16. Gartner's 2014 Hype Cycle Report
    http://www.gartner.com/newsroom/id/2819918

    View Slide

  17. Internet of things
    Gartner's 2014 Hype Cycle Report
    http://www.gartner.com/newsroom/id/2819918

    View Slide

  18. Internet of things
    Gartner's 2014 Hype Cycle Report
    Software-Defined
    Anything
    http://www.gartner.com/newsroom/id/2819918

    View Slide

  19. View Slide

  20. GitHub HQ

    View Slide

  21. Networked Motion and
    Temperature Sensors

    View Slide

  22. View Slide

  23. Internet of Things
    =
    Open Hardware APIs
    +
    Web Technologies

    View Slide

  24. Arduino

    View Slide

  25. Arduino IDE
    C++
    Compile, transfer, run

    View Slide

  26. Firmata

    View Slide

  27. Cat Laser Toy

    View Slide

  28. !
    var five = require("johnny-five"),

    board = new five.Board();


    function randomFromInterval(from,to){

    return Math.floor(Math.random()*(to-from+1)+from); 

    }


    board.on("ready", function() {

    var servoX = new five.Servo(10);

    var servoY = new five.Servo(9);

    var laser = new five.Led(8);


    laser.on()


    setInterval(function(){

    x = randomFromInterval(80, 120)

    y = randomFromInterval(95, 145)

    servoX.move(x)

    servoY.move(y)

    }, 400)

    })

    View Slide

  29. It's a UNIX system! I know this!

    View Slide

  30. Cat Laser Toy

    View Slide

  31. Cat Laser Toy
    Rabbit
    v
    |

    View Slide

  32. Demo Time

    View Slide

  33. Demo Time

    View Slide

  34. Demo Time

    View Slide

  35. Demo Time

    View Slide

  36. Demo Time

    View Slide

  37. Demo Time

    View Slide

  38. Demo Time

    View Slide

  39. Demo Time

    View Slide

  40. Demo Time

    View Slide

  41. Demo Time

    View Slide

  42. Demo Time

    View Slide

  43. Demo Time

    View Slide

  44. Demo Time

    View Slide

  45. View Slide

  46. Demo Driven Development

    View Slide

  47. LIVE DEMO

    View Slide

  48. View Slide

  49. Sparkfun
    Inventors Kit
    hobbytronics.co.uk/sparkfun-inventors-kit-v3

    View Slide

  50. node-ardx.org

    View Slide

  51. gosphero.com

    View Slide

  52. Fear of failure

    View Slide

  53. View Slide

  54. It's a UNIX system! I know this!

    View Slide

  55. ⌘Z

    View Slide

  56. Prototyping tools

    View Slide

  57. LEGO

    View Slide

  58. EV3

    View Slide

  59. Robot Rabbit Feeder

    View Slide

  60. !
    var Ev3 = require ("ev3-nodejs-bt");

    var Ev3_base = Ev3.base;


    var XboxController = require('xbox-controller');

    var xbox = new XboxController;


    var robot = new Ev3_base("/dev/tty.EV3-SerialPort");


    var maxAngle = 32768;

    var maxSpeed = 100;


    var speeds = { a: 0, b: 0, c: 0, d: 0 };

    View Slide

  61. robot.connect(function(){

    robot.start_program(function(ev3){

    var setSpeed = function(){

    var output = ev3.getOutputSequence(speeds.a,speeds.b,speeds.c,speeds.d);

    ev3.sp.write(output); }


    setInterval(setSpeed, 100)


    xbox.on('left:move', function(position){

    var x = -(position.x / maxAngle)*-maxSpeed

    var y = (position.y / maxAngle)*-maxSpeed

    var left = y-x

    var right = y+x


    speeds.b = left

    speeds.a = right

    })


    xbox.on('a:press', function(){ speeds.d = 100 })

    xbox.on('a:release', function(){ speeds.d = 0 })

    });

    });

    View Slide

  62. View Slide

  63. View Slide

  64. 3D Printing

    View Slide

  65. thingiverse.com

    View Slide

  66. tinkercad.com

    View Slide

  67. shapeways.com

    View Slide

  68. View Slide

  69. cube([30, 30, 30]);

    View Slide

  70. View Slide

  71. union(){!
    cube([30, 30, 30]);!
    cube([60, 10, 10]);!
    }

    View Slide

  72. View Slide

  73. difference() {!
    union(){!
    cube([30, 30, 30]);!
    cube([60, 10, 10]);!
    }!
    translate([30, 30, 30])!
    sphere(20);!
    }

    View Slide

  74. View Slide

  75. require "rubyscad"!
    !
    class MyShape!
    include RubyScad!
    !
    def render()!
    difference do!
    union do!
    cube(size: [30, 30, 30])!
    cube(size: [60, 10, 10])!
    end!
    !
    translate(v: [30, 30, 30]) do!
    sphere(r: 20)!
    end!
    end!
    end!
    end!
    !
    MyShape.new.render

    View Slide

  76. It's a UNIX system! I know this!

    View Slide

  77. LIVE DEMO

    View Slide

  78. 42 #hybridconfcube
    Tweet:
    Any number between 1 and 100

    View Slide

  79. View Slide

  80. View Slide

  81. 3D GitHub Contribution Graph

    View Slide

  82. Community

    View Slide

  83. Makerspaces

    View Slide

  84. hackerspaces.org

    View Slide

  85. NoDebots.io

    View Slide

  86. robotsconf.com
    December 6-7 2014, Florida

    View Slide

  87. makerland.org

    View Slide

  88. View Slide

  89. Wrapping up

    View Slide

  90. Bring everything great
    about internet into the
    real world

    View Slide

  91. !
    Stay on the edge of your
    comfort zone

    View Slide

  92. It's a UNIX system! I know this!

    View Slide

  93. !
    Play with prototypes

    View Slide

  94. Get involved with the
    community

    View Slide

  95. !
    Change the world!

    View Slide

  96. Code: https://github.com/andrew/hybrid-2014

    View Slide

  97. Twitter: @teabass

    View Slide

  98. No rabbits were harmed in the making of this presentation
    Thanks!

    View Slide