Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

¿Por qué usar JS?

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

¿Cómo elegir un microcontrolador ?

Slide 5

Slide 5 text

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:

Slide 6

Slide 6 text

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.

Slide 7

Slide 7 text

Desarrollo nativo en JS

Slide 8

Slide 8 text

Plataforma Tessel

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

* 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 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.

Slide 11

Slide 11 text

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/

Slide 12

Slide 12 text

Plataforma Espruino

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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/

Slide 16

Slide 16 text

*Desarrollo no nativo en JS * Existen numerosas plataformas en el mercado. Se han elegido las más representativas o peculiares.

Slide 17

Slide 17 text

Plataforma Arduino y derivados

Slide 18

Slide 18 text

Plataforma Arduino

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Plataforma Vinciduino

Slide 22

Slide 22 text

Vinciduino

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Plataforma Microduino

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Documentación relacionada: Web de plataforma Microduino: http://www.microduino.cc/ Lenguaje de programación: C/C++

Slide 27

Slide 27 text

Plataforma ChipKIT

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

Plataforma LaunchPad

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

Plataforma Netduino

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Documentación relacionada: Lenguaje de programación: C# (.NET Micro Framework) Web oficial: http://netduino.com/

Slide 36

Slide 36 text

Plataforma FEZ Panda

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

*Plataforma ARM Linux + NodeJS * Existen numerosas plataformas en el mercado. Se han elegido las más representativas o peculiares.

Slide 40

Slide 40 text

Raspberry Pi

Slide 41

Slide 41 text

Olinuxino A13

Slide 42

Slide 42 text

BeagleBone Black

Slide 43

Slide 43 text

Arduino Galileo

Slide 44

Slide 44 text

UDoo

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

¿Cómo comunicarse con hardware mediante JS?

Slide 47

Slide 47 text

- Puerto serie, I2C, SPI, GPIO,... - {Bluetooth, WIFI, RF,...} a UART. - TCP, UDP. - Websockets.

Slide 48

Slide 48 text

Librerías y frameworks

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Ejemplos de interacción con hardware mediante JS

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

Información relacionada: LXJS 2012 - Elijah Insua - Hardware with Javascript and CNC's https://www.youtube.com/watch?v=XbXcdhYwR8I

Slide 53

Slide 53 text

Comunicación con AR.Drone mediante nodeJS

Slide 54

Slide 54 text

nodeJS en AR.Drone para ampliar su funcionalidad

Slide 55

Slide 55 text

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.

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

Lanzador de misiles USB controlado mediante Node.js y librería node-usb

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

Interacción con automóviles mediante CAN-Bus

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

*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.

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

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