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

Javascript meets hardware - Codemotion 2013

Javascript meets hardware - Codemotion 2013

D0d62e96926cd2a798ee588350330ded?s=128

Julio Galarón

October 20, 2013
Tweet

More Decks by Julio Galarón

Other Decks in Programming

Transcript

  1. meets hardware Julio Galarón Touriño - @jgalaron

  2. ¿Por qué usar JS?

  3. None
  4. ¿Cómo elegir un microcontrolador ?

  5. Paso 1 : Hacer una listas de las interfaces necesarias.

    Paso 2 : Examinar que tipo de arquitectura necesita el software. Paso 3 : Seleccionar una arquitectura. Paso 4 : Identificar las necesidades de memoria. Paso 5 : Empezar con la búsqueda del microcontrolador. Paso 6 : Examinar los costes y Costs and Power Constraints Paso 7 : Verificar la disponibilidad. Paso 8 : Seleccionar un KIT de desarrollo. Paso 9 : Investigar qué compiladores y dev-tools son necesarios. Paso 10: Empezar a investigar con la plataforma. Con conocimientos en hardware:
  6. Iniciación al hardware: Paso 1 : Buscar una plataforma bien

    documentada y con numerosos ejemplos. Paso 2 : Precio del KIT de desarrollo bajo. Paso 3 : *IDE de programación multiplataforma. Paso 4 : *Open hardware/software. * No es estrictamente necesario.
  7. Desarrollo nativo en JS

  8. Plataforma Tessel

  9. None
  10. * Ejemplo de blinking led (el “Hello world” del hardware)

    var tessel = require('tessel'); var servos = require('servo-pca9685') .connect(tessel.port('A')); var degrees = 0; setInterval(function () { servos.moveServo(1, degrees); degrees = degrees == 0 ? 180 : 0; }, 500); #include <Servo.h> Servo servo; uint8_t degrees = 0; void setup() { servo.attach(9); } void loop(){ servo.write(degrees); delay(500); degrees = degrees == 0 ? 180 : 0; } * Ejemplo de control de un motor servo. Izquierda código JS para plataforma Tessel, derecha código en C para Arduino.
  11. Documentación relacionada: Web de oficial: http://tessel.io/ Lenguaje de programación: Javascript

    NodeJS Información relacionada: http://makezine.com/magazine/first-look-javascript-micro-controllers-for-web-developers/
  12. Plataforma Espruino

  13. None
  14. * Ejemplo de blinking led (el “Hello world” del hardware).

    Izquierda código JS para plataforma Espruino, derecha código en C para Arduino. setInterval (function(){ a=!a; digitalWrite (LED1,a); },1000); void setup(){ pinMode(LED1,OUTPUT); } void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000); }
  15. Documentación relacionada: Web oficial: http://www.espruino.com Lenguaje de programación: Javascript Información

    relacionada: http://makezine.com/magazine/first-look-javascript-micro-controllers-for-web-developers/
  16. *Desarrollo no nativo en JS * Existen numerosas plataformas en

    el mercado. Se han elegido las más representativas o peculiares.
  17. Plataforma Arduino y derivados

  18. Plataforma Arduino

  19. None
  20. Documentación relacionada: Web oficial: http://arduino.cc Lenguaje de programación: C/C++ Listado

    de placas Arduino y compatibles: https://en.wikipedia.org/wiki/List_of_Arduino_boards_and_compatible_systems
  21. Plataforma Vinciduino

  22. Vinciduino

  23. Documentación relacionada: Web oficial: http://vinciduino.com/esp/ Lenguaje de programación: C/C++ Entrada

    en foro de Arduino sobre el desarrollo de la placa Vinciduino: http://arduino.cc/forum/index.php?topic=78781.0
  24. Plataforma Microduino

  25. None
  26. Documentación relacionada: Web de plataforma Microduino: http://www.microduino.cc/ Lenguaje de programación:

    C/C++
  27. Plataforma ChipKIT

  28. None
  29. Documentación relacionada: Web oficial: http://www.microchip.com/pagehandler/en-us/chipKIT-Development-Platform.html Lenguaje de programación: C/C++ Review

    en español de la plataforma chipKit: http://www.neoteo.com/chipkit-el-arduino-de-microchip
  30. Plataforma LaunchPad

  31. None
  32. Documentación relacionada: Lenguaje de programación: C/C++ Review en español sobre

    la plataforma Launchpad y el IDE Energía: http://webdelcire.com/wordpress/archives/2127 Proyecto LaunchPad Energía: https://github.com/energia/Energia/wiki/Getting-Started Web de la plataforma LaunchPad en TI: http://www.ti.com/ww/en/launchpad/msp430_head.html Wiki de la plataforma Launchpad MSP430: http://processors.wiki.ti.com/index.php/MSP430_LaunchPad_%28MSP-EXP430G2%29
  33. Plataforma Netduino

  34. None
  35. Documentación relacionada: Lenguaje de programación: C# (.NET Micro Framework) Web

    oficial: http://netduino.com/
  36. Plataforma FEZ Panda

  37. None
  38. Documentación relacionada: Lenguaje de programación: C# (.NET Micro Framework) Wiki

    sobre desarrollo con la plataforma Fez: http://wiki.tinyclr.com/index.php?title=Main_Page Web oficial: http://www.ghielectronics.com/catalog/product/256
  39. *Plataforma ARM Linux + NodeJS * Existen numerosas plataformas en

    el mercado. Se han elegido las más representativas o peculiares.
  40. Raspberry Pi

  41. Olinuxino A13

  42. BeagleBone Black

  43. Arduino Galileo

  44. UDoo

  45. Documentación relacionada: Web de la plataforma UDoo: http://www.udoo.org/ Web de

    la plataforma Olinuxino A13: https://www.olimex.com/Products/OLinuXino/A13/A13-OLinuXino-WIFI-DEV/ Web de la plataforma Raspberry: http://www.raspberrypi.org/ Web de la plataforma Arduino Galileo: http://arduino.cc/en/ArduinoCertified/IntelGalileo Web de la plataforma BeagleBone Black: http://beagleboard.org/Products/BeagleBone%20Black
  46. ¿Cómo comunicarse con hardware mediante JS?

  47. - Puerto serie, I2C, SPI, GPIO,... - {Bluetooth, WIFI, RF,...}

    a UART. - TCP, UDP. - Websockets.
  48. Librerías y frameworks

  49. s4a (Scratch for Arduino): http://seaside.citilab.eu/scratch/arduino http://www.arduteka.com/tag/s4a/ WebSocket en Node.js: http://socket.io/

    http://einaros.github.com/ws/ Frameworks para control de placas Arduino mediante Javascript: Johnny-Five : https://github.com/rwldrn/johnny-five Breakoutjs : http://breakoutjs.com/ Nododuino : http://semu.github.com/noduino/ Comunicación mediante puerto serie con Node.js: https://github.com/voodootikigod/node-serialport Comunicación mediante I2C y SPI con Node.js: https://npmjs.org/package/i2c https://github.com/RussTheAerialist/node-spi GPIO: https://github.com/EnotionZ/GpiO
  50. Ejemplos de interacción con hardware mediante JS

  51. Ejemplo de comunicación con máquina CNC mediante nodeJS

  52. Información relacionada: LXJS 2012 - Elijah Insua - Hardware with

    Javascript and CNC's https://www.youtube.com/watch?v=XbXcdhYwR8I
  53. Comunicación con AR.Drone mediante nodeJS

  54. nodeJS en AR.Drone para ampliar su funcionalidad

  55. var arDrone = require('ar-drone'); var client = arDrone.createClient(); client.takeoff(); client.after(5000,

    function() { this.clockwise(0.5); }).after(3000, function() { this.stop(); this.land(); }); * Ejemplo de comunicación con AR-Drone mediante nodeJS.
  56. Documentación relacionada: Librería para el control de AR.Drone 2.0 mediante

    nodeJS: https://github.com/felixge/node-ar-drone NodeJS en AR.Drone: https://gist.github.com/maxogden/4152815 LXJS 2012 - Felix Geisendörfer - Programming flying robots with Node.js: http://www.youtube.com/watch?v=jl5v3bsMH_E Flying robots & node.js: http://nodecopter.com/ RC Helicopter, Arduino and of course, the Kinect: http://channel9.msdn.com/coding4fun/kinect/RC-Helicopter-Arduino-and-of-course-the-Kinect
  57. Lanzador de misiles USB controlado mediante Node.js y librería node-usb

  58. Documentación relacionada: Librería para control lanzador misiles USB Node.js: https://github.com/tristil/usb-rocket-launcher-node

    Librería NodeJs para control de dispositivos USB HID https://github.com/hanshuebner/node-hid
  59. Interacción con automóviles mediante CAN-Bus

  60. Documentación relacionada: Proyecto OpenXC de Ford: http://openxcplatform.com/

  61. *Plataformas software para IOT. Envío, actuación, visualización de datos y

    data logging * Existen numerosas plataformas en el mercado. Se han elegido las más representativas o peculiares.
  62. None
  63. None
  64. None
  65. None
  66. Información relacionada: Carriots: http://carriots.com Ducksboard: http://ducksboard.com/ https://github.com/iloire/ducksnode Cosm: https://cosm.com/ https://github.com/cosm/cosm-arduino

    If this then that: https://ifttt.com/wtf