Pro Yearly is on sale from $80 to $50! »

Learning how to Tinker

Learning how to Tinker

Hardware hacking for web developers.

Presented at Hybrid Conf 2014

8ddbf811da78bb0daeeb3cacd7cf743f?s=128

Andrew Nesbitt

August 22, 2014
Tweet

Transcript

  1. Learning how to tinker with Andrew Nesbitt

  2. None
  3. Hardware hacking for Web people

  4. None
  5. None
  6. None
  7. None
  8. None
  9. BEng Robotics & Automated Systems University of Plymouth

  10. None
  11. Advanced Mathematics Mechanical Engineering Digital Electronics Analogue Electronics Computer Science

    Control Theory Neural networking Microprocessor Design Playing with Robots Learning Robotics
  12. Advanced Mathematics Observing Robots behind glass Learning Robotics Advanced Mathematics

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

  14. APIs Open Source Hardware Smart phones High level Programming Languages

    GitHub Internet everywhere 3D Printing 2014
  15. <moo/>

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

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

  18. Internet of things Gartner's 2014 Hype Cycle Report Software-Defined Anything

    http://www.gartner.com/newsroom/id/2819918
  19. None
  20. GitHub HQ

  21. Networked Motion and Temperature Sensors

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

  24. Arduino

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

  26. Firmata

  27. Cat Laser Toy

  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)
 }) 

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

  30. Cat Laser Toy

  31. Cat Laser Toy Rabbit v |

  32. Demo Time

  33. Demo Time

  34. Demo Time

  35. Demo Time

  36. Demo Time

  37. Demo Time

  38. Demo Time

  39. Demo Time

  40. Demo Time

  41. Demo Time

  42. Demo Time

  43. Demo Time

  44. Demo Time

  45. None
  46. Demo Driven Development

  47. LIVE DEMO

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

  50. node-ardx.org

  51. gosphero.com

  52. Fear of failure

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

  55. ⌘Z

  56. Prototyping tools

  57. LEGO

  58. EV3

  59. Robot Rabbit Feeder

  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 };
  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 })
 });
 });
  62. None
  63. None
  64. 3D Printing

  65. thingiverse.com

  66. tinkercad.com

  67. shapeways.com

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

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

  72. None
  73. difference() {! union(){! cube([30, 30, 30]);! cube([60, 10, 10]);! }!

    translate([30, 30, 30])! sphere(20);! }
  74. None
  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
  76. It's a UNIX system! I know this!

  77. LIVE DEMO

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

  79. None
  80. None
  81. 3D GitHub Contribution Graph

  82. Community

  83. Makerspaces

  84. hackerspaces.org

  85. NoDebots.io

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

  87. makerland.org

  88. None
  89. Wrapping up

  90. Bring everything great about internet into the real world

  91. ! Stay on the edge of your comfort zone

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

  93. ! Play with prototypes

  94. Get involved with the community

  95. ! Change the world!

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

  97. Twitter: @teabass

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

    Thanks!