SlideShare una empresa de Scribd logo
1 de 53
Descargar para leer sin conexión
Hardware Hacking en
Ruby: Arduino y RAD
    Esti Álvarez y Svet Ivantchev
        http://www.efaber.net
       Conferencia Rails 2008
Sistemas integrados
Physical Computing
¿Qué es Arduino?




  http://www.arduino.cc
¿Por qué Arduino?

• Es Open Source
• Es multiplataforma (Linux, Mac, Windows)
• Se puede programar con cable USB
• Pensado para hacer prototipos
• El hardware es barato (30€)
La familia Arduino
El Hardware
El Hardware
• 14 pins IO digitales
• 6 pins Input analógicos
• 6 pins Output analógicos (PWM)
• 16Kb memoria Flash (Apollo 11: 74 Kb)
• 1Kbyte RAM (Apollo 11: 4Kb)
• Microcontrolador ATMega168 a 16MHz
• Alimentación por USB o pila de 9V
Otras piezas

• Sensores “binarios”: interruptores,
  termostatos, switches magnéticos, de
  posición, de luz, etc
• Sensores “analógicos”: termistores,
  accelerómetros.
• “Actuadores”: leds, motores, servos, LCDs
Hardware Hacking con Arduino y RAD
Hardware Hacking con Arduino y RAD
El Software




http://arduino.cc/en/Main/Software
Hardware Hacking con Arduino y RAD
Hello World: Hardware


             Pin 13
   Arduino
Hello World: Software
/* Blink
 * The basic Arduino example.Turns on an LED on for one second,
 * http://www.arduino.cc/en/Tutorial/Blink */

int ledPin = 13;             // LED connected to digital pin 13

void setup() {               // run once, when sketch starts
  pinMode(ledPin, OUTPUT);   // sets the digital pin as output
}

void loop() {                // run over and over again
  digitalWrite(ledPin, HIGH);// sets the LED on
  delay(1000);               // waits for a second
  digitalWrite(ledPin, LOW); // sets the LED off
  delay(1000);               // waits for a second
}
Demo
Hardware Hacking con Arduino y RAD
Demo
Hardware Hacking con Arduino y RAD
Difuminado RGB: Hardware

               pin 9

     Arduino   pin 10

               pin 11

               PWM
PWM
/* Code for cross-fading 3 LEDs, RGB, or one tri-color LED */
int redPin = 9;    int greenPin = 10; int bluePin = 11;
int redVal = 255; int greenVal = 1; int blueVal = 1;
int i = 0;      // Loop counter

void setup() {
  pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  i += 1;      // Increment counter
  if (i < 255) {
    redVal   -= 1; greenVal += 1; blueVal   = 1;
  } else if (i < 509) {
    redVal    = 1; greenVal -= 1; blueVal += 1;
  } else if (i < 763) {
    redVal += 1; greenVal = 1; blueVal -= 1;
  } else {
    i = 1;
  }
  analogWrite(redPin,   redVal); analogWrite(greenPin, greenVal);
  analogWrite(bluePin, blueVal);
  delay(10); // Pause for 10 milliseconds before resuming the loop
}
RAD: Ruby Arduino
     Development
• Añadir a Arduino las ventajas de programar
  en Ruby
• Convenciones y helpers inspirados en Rails
• Testing Framework aprovechando el
  dinamismo de Ruby
• Entorno de simulación gráfica usando “Shoes
  GUI”
RAD: Ruby Arduino
    Development
$ sudo gem install rad
$ rad hello_world
Successfully created your sketch directory.
...
Added   hello_world/hello_world2.rb
Added   hello_world/Rakefile
Added   hello_world/config
Added   hello_world/config/hardware.yml
Added   hello_world/config/software.yml
RAD: Ruby Arduino
     Development
$ ls -l hello_world
-rw-r--r--   1 esti     esti    31 Rakefile
drwxr-xr-x     4 esti   esti    136 config
drwxr-xr-x    42 esti   esti   1428 examples
drwxr-xr-x    7 esti    esti   238 hello_world
-rw-r--r--@   1 esti    esti   106 hello_world.rb
drwxr-xr-x    5 esti    esti   170 vendor
Hello World
class HelloWorld < ArduinoSketch

  output_pin 7, :as => :led

  def loop
    led.blink 500
  end

end
Compilar y transferir


$ rake make:upload
Demo
Hardware Hacking con Arduino y RAD
Twitter Lámpara
Twitter Lámpara
Twitter Lámpara
Twitter Lámpara
Twitter Lámpara
TwitAmbiLight

• Comunicación por puerto serie
• Datos del REST API de Twitter
• Los colores de nuestra lámpara dependerán
  del humor de nuestros followers en Twitter.
TwitAmbiLight: Ingredientes
 • 1 Arduino y 1 breadboard
 • 1 LED RGB y 3 resistencias de 220 ohms
 • 1 Cable USB y unos cuantos de conexión
   $ gem install toholio-serialport
   $ gem install twitter
   $ gem install mbbx6spp-twitter4r
TwitAmbiLight: Hardware
TwitAmbiLight: Hardware
                                       +5 V   +5 V   +5 V




                              pin 11
   USB
         Arduino              pin 10

                              pin 9

                              PWM




                   Internet
TwitterAmbiLight: Software Ordenador
 # Se conecta al API de Twitter y busca colores en formato RGB
 # Hexadecimal entre los replies a @raduino
 # Ejemplo: @raduino #FF0000

 %w(rubygems twitter serialport).each {|g| require g}
 gem 'mbbx6spp-twitter4r'

 # params para puerto serie
 port_str = quot;/dev/tty.usbserial-A4001lmtquot; # puede cambiar para ti
 baud_rate = 9600
 data_bits = 8
 stop_bits = 1
 parity = SerialPort::NONE
 sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits,
 parity)

 ...
def get_color_from_twitter
  client = Twitter::Client.new(:login => 'raduino',
                               :password => 'mypass')
  last_status = client.status(:replies).first
  color = last_status.text.gsub('@raduino', '').strip || ''
end

5.times do
  puts quot;Cojo el colorquot;
  color = get_color_from_twitter
  puts quot;Devuelve #{color}quot;
  if color.match(/#[A-F0-9]{6}$/i)
    puts quot;Envio en color al puerto seriequot;
    sp.write color
  end
  puts quot;-------------quot;
  sleep(10)
end
sp.close
TwitterAmbiLight: Software Arduino
class TwitAmbiLight < ArduinoSketch
  output_pin 9, :as => :red_led
  output_pin 10, :as => :green_led
  output_pin 11, :as => :blue_led

 r = 255; g = 255; b = 255

 @first_byte = byte;
 @byte1 = byte; @byte2 = byte; @byte3 = byte
 @byte4 = byte; @byte5 = byte; @byte6 = byte

 serial_begin
 def setup
   red_led.digitalWrite HIGH
   green_led.digitalWrite HIGH
   blue_led.digitalWrite HIGH
 end
 ...
...
def loop
  if serial_available
    # Si el primer byte es #, leer los 6 siguientes
    @first_byte = serial_read
    if @first_byte == '#'
      @byte1=serial_read; serial_print quot;Primer caracter:quot;;serial_println @byte1
      @byte2 = serial_read; serial_print quot;2 caracter:quot;; serial_println @byte2
      @byte3 = serial_read; serial_print quot;3 caracter:quot;; serial_println @byte3
      @byte4 = serial_read; serial_print quot;4 caracter:quot;; serial_println @byte4
      @byte5 = serial_read; serial_print quot;5 caracter:quot;; serial_println @byte5
      @byte6 = serial_read; serial_print quot;6 caracter:quot;; serial_println @byte6

      r = 255 - h2d(@byte1)   * 16 + h2d(@byte2)
      g = 255 - h2d(@byte3)   * 16 + h2d(@byte4)
      b = 255 - h2d(@byte5)   * 16 + h2d(@byte6)
    end
    serial_print quot;Rojo: quot;;    serial_println r
    serial_print quot;Verde: quot;;   serial_println g
    serial_print quot;Azul:quot;;     serial_println b
    red_led.analogWrite(r);   green_led.analogWrite(g); blue_led.analogWrite(b)
    delay(100)
  end
end
...
...

 def h2d(c)
   if c >= 48 && c <= 57
     # c esta entre 0 y 9
     return c - '0'
   elsif c >= 'A' && c <= 'F'
     # c esta entre A y F
     return c - 65 + 10
   end
 end

end
Demo
Opciones Wireless
                   Zigbee
                                 GSM/GPRS             802. 11          Bluetooth
                  802.15.4
                Moritorizado y                                         Conectividad
 Aplicación        control
                                  Voz y datos      Internet rápido
                                                                     entre dispositivos

  Duración        ~ semanas          ~ días           ~ horas             ~ horas
   batería

  Ancho de
                  250 kbps       Hasta 2 Mbps      Hasta 54 Mbps         720 kbps
   banda

Alcance típico 100-1000 metros    Kilómetros       150-300 metros     10-100 metros


                                 Infraestructura
   Ventajas     Bajo consumo
                                    existente
                                                     Velocidad         Comodidad
XBee   XBee Arduino Shield
WiTwitAmbiLight: Hardware
                                                             +5 V   +5 V   +5 V




                                                    pin 11
                serie
     Xbee                                           pin 10
                               Arduino
                                                     pin 9




                    802.15.4




     Xbee

            serie



                                         Internet
Demo
Nunchuck como sensor

           •   Interfaz I2C standard

           •   Accelerómetro de 3 ejes

           •   Joystick analógico de 2 ejes

           •   2 botones
Ejemplo Nunchuck
                                          +5 V




                            pin 11
       serie
Xbee                        pin 10
                  Arduino
                            pin 9
                            PWM




       802.15.4




       serie                        i2c
Xbee              Arduino
Demo
Referencias

• Getting Started with Arduino. Make Magazine
• http://www.arduino.cc/
• http://rad.rubyforge.org/
• http://github.com/atduskgreg/rad/tree/master
• http://todbot.com/blog/bionicarduino/
Algunos ejemplos

• http://www.cs.colorado.edu/~buechley/LilyPad/
  build/turn_signal_jacket.html
• http://vimeo.com/1261369
• http://vimeo.com/1650051
• http://www.botanicalls.com/kits/

Más contenido relacionado

La actualidad más candente

Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012assdl
 
S4 a + arduino
S4 a + arduinoS4 a + arduino
S4 a + arduinoVisemi VI
 
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017joaquinin1
 
Taller Internet de las Cosas, por Ulises Gascón
Taller Internet de las Cosas, por Ulises GascónTaller Internet de las Cosas, por Ulises Gascón
Taller Internet de las Cosas, por Ulises GascónHuelva Inteligente
 
Introducción a Asterisk + IVR en AEL2
Introducción a Asterisk + IVR en AEL2Introducción a Asterisk + IVR en AEL2
Introducción a Asterisk + IVR en AEL2Saúl Ibarra Corretgé
 
Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?mrquesito
 
Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...
Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...
Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...Yamil Lambert
 
Taller arduino processing
Taller arduino processingTaller arduino processing
Taller arduino processings3th
 
Arduino presentacion
Arduino presentacionArduino presentacion
Arduino presentacionRoyer T
 
Introducción a Arduino - Parte I
Introducción a Arduino - Parte IIntroducción a Arduino - Parte I
Introducción a Arduino - Parte IVíctor R. Ruiz
 
Presentacion Arduino PowerPoint
Presentacion Arduino PowerPointPresentacion Arduino PowerPoint
Presentacion Arduino PowerPointcristianperea
 
ARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreLuis Manuel Diaz
 

La actualidad más candente (19)

Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012Taller de introducción a Arduino FesTICval 2012
Taller de introducción a Arduino FesTICval 2012
 
S4 a + arduino
S4 a + arduinoS4 a + arduino
S4 a + arduino
 
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
 
Arduino práctico librerias
Arduino práctico   libreriasArduino práctico   librerias
Arduino práctico librerias
 
Taller Internet de las Cosas, por Ulises Gascón
Taller Internet de las Cosas, por Ulises GascónTaller Internet de las Cosas, por Ulises Gascón
Taller Internet de las Cosas, por Ulises Gascón
 
Intro al beaglebone black makerspe
Intro al beaglebone black   makerspeIntro al beaglebone black   makerspe
Intro al beaglebone black makerspe
 
Arduino
ArduinoArduino
Arduino
 
Introducción a Asterisk + IVR en AEL2
Introducción a Asterisk + IVR en AEL2Introducción a Asterisk + IVR en AEL2
Introducción a Asterisk + IVR en AEL2
 
Ethernet Shield
Ethernet ShieldEthernet Shield
Ethernet Shield
 
Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?Taller de Arduino - ¿Qué es Arduino?
Taller de Arduino - ¿Qué es Arduino?
 
Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...
Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...
Arduino Historia, IDE, lenguaje de programacion y proyectos por Msc. Yamil La...
 
Taller arduino processing
Taller arduino processingTaller arduino processing
Taller arduino processing
 
Introducción a Arduino
Introducción a ArduinoIntroducción a Arduino
Introducción a Arduino
 
Tipos de arduino y sus caracteristicas
Tipos de arduino y sus caracteristicasTipos de arduino y sus caracteristicas
Tipos de arduino y sus caracteristicas
 
Enviando arduino xbee-primeros-pasos-1
Enviando arduino xbee-primeros-pasos-1Enviando arduino xbee-primeros-pasos-1
Enviando arduino xbee-primeros-pasos-1
 
Arduino presentacion
Arduino presentacionArduino presentacion
Arduino presentacion
 
Introducción a Arduino - Parte I
Introducción a Arduino - Parte IIntroducción a Arduino - Parte I
Introducción a Arduino - Parte I
 
Presentacion Arduino PowerPoint
Presentacion Arduino PowerPointPresentacion Arduino PowerPoint
Presentacion Arduino PowerPoint
 
ARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libre
 

Similar a Hardware Hacking con Arduino y RAD

Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015Jose Antonio Vacas
 
Fundamentos de programacion robotica con Arduino
Fundamentos de programacion robotica con ArduinoFundamentos de programacion robotica con Arduino
Fundamentos de programacion robotica con ArduinoChristian Farinango
 
T3ch fest leganes_final
T3ch fest leganes_finalT3ch fest leganes_final
T3ch fest leganes_finalRober Garamo
 
2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libresobijuan_cube
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOLeida Zuñiga
 
Arduino práctico comunicaciones
Arduino práctico   comunicacionesArduino práctico   comunicaciones
Arduino práctico comunicacionesJose Antonio Vacas
 
Curso intensivo de arduino createc3 de mayo 2014
Curso intensivo de arduino createc3 de mayo 2014Curso intensivo de arduino createc3 de mayo 2014
Curso intensivo de arduino createc3 de mayo 2014Jose Antonio Vacas
 
Curso intensivo de arduino createc3 d marzo 2014
Curso intensivo de arduino createc3 d marzo 2014Curso intensivo de arduino createc3 d marzo 2014
Curso intensivo de arduino createc3 d marzo 2014Jose Antonio Vacas
 
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab observing arp with the windows cli, ios cli, and wiresharkhefloca
 
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab observing arp with the windows cli, ios cli, and wiresharkhefloca
 
Taller practico iot fundación telefónica
Taller practico iot fundación telefónicaTaller practico iot fundación telefónica
Taller practico iot fundación telefónicaSara Alvarellos Navarro
 
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab observing arp with the windows cli, ios cli, and wiresharktimmaujim
 

Similar a Hardware Hacking con Arduino y RAD (20)

Hardware Hacking Rad
Hardware Hacking RadHardware Hacking Rad
Hardware Hacking Rad
 
Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015
 
Curso Arduino práctico 2014
Curso Arduino práctico  2014Curso Arduino práctico  2014
Curso Arduino práctico 2014
 
Fundamentos de programacion robotica con Arduino
Fundamentos de programacion robotica con ArduinoFundamentos de programacion robotica con Arduino
Fundamentos de programacion robotica con Arduino
 
Proyecto de arduino
Proyecto de arduinoProyecto de arduino
Proyecto de arduino
 
T3ch fest leganes_final
T3ch fest leganes_finalT3ch fest leganes_final
T3ch fest leganes_final
 
Sesion 1 Curso Arduino.pdf
Sesion 1 Curso Arduino.pdfSesion 1 Curso Arduino.pdf
Sesion 1 Curso Arduino.pdf
 
2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres2016 11-09-urjc-fpgas-libres
2016 11-09-urjc-fpgas-libres
 
Puerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGOPuerto d825 CU ZUMPANGO
Puerto d825 CU ZUMPANGO
 
Arduino práctico comunicaciones
Arduino práctico   comunicacionesArduino práctico   comunicaciones
Arduino práctico comunicaciones
 
Señales con arduino y DAC
Señales con arduino y DACSeñales con arduino y DAC
Señales con arduino y DAC
 
Curso intensivo de arduino createc3 de mayo 2014
Curso intensivo de arduino createc3 de mayo 2014Curso intensivo de arduino createc3 de mayo 2014
Curso intensivo de arduino createc3 de mayo 2014
 
Curso intensivo de arduino createc3 d marzo 2014
Curso intensivo de arduino createc3 d marzo 2014Curso intensivo de arduino createc3 d marzo 2014
Curso intensivo de arduino createc3 d marzo 2014
 
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
 
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
 
electricidad y voltaje.docx
electricidad y voltaje.docxelectricidad y voltaje.docx
electricidad y voltaje.docx
 
Taller practico iot fundación telefónica
Taller practico iot fundación telefónicaTaller practico iot fundación telefónica
Taller practico iot fundación telefónica
 
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark5.2.1.8 lab   observing arp with the windows cli, ios cli, and wireshark
5.2.1.8 lab observing arp with the windows cli, ios cli, and wireshark
 
Netduino
NetduinoNetduino
Netduino
 
electricidad y voltaje.docx
electricidad y voltaje.docxelectricidad y voltaje.docx
electricidad y voltaje.docx
 

Último

Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfymiranda2
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosLCristinaForchue
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETGermán Küber
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2montoyagabriela340
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfJoseAlejandroPerezBa
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfodalistar77
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....Aaron Betancourt
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfalejandrogomezescoto
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSLincangoKevin
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfOBr.global
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...OLGAMILENAMONTAEZNIO
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxPaolaCarolinaCarvaja
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfangelinebocanegra1
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx Emialexsolar
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfcastrodanna185
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.marianarodriguezc797
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidaddanik1023m
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...RaymondCode
 

Último (20)

Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdfPresentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
Presentación - Diseño de Algoritmos Paralelos - Grupo 2.pdf
 
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura SilvaBEDEC Sostenibilidad, novedades 2024 - Laura Silva
BEDEC Sostenibilidad, novedades 2024 - Laura Silva
 
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimosEl diseño de Algoritmos Paralelos.pdf - analisis de algortimos
El diseño de Algoritmos Paralelos.pdf - analisis de algortimos
 
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NETDe Código a Ejecución: El Papel Fundamental del MSIL en .NET
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
 
La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2La tablet trabajo en grupo del grado 9-2
La tablet trabajo en grupo del grado 9-2
 
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdfTENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
TENDENCIAS DE IA Explorando el futuro de la tecnologia.pdf
 
Los mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdfLos mejores simuladores de circuitos electrónicos.pdf
Los mejores simuladores de circuitos electrónicos.pdf
 
La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....La Electricidad y La Electrónica.pdf....
La Electricidad y La Electrónica.pdf....
 
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdfActividad 14_ Diseño de Algoritmos Paralelos.pdf
Actividad 14_ Diseño de Algoritmos Paralelos.pdf
 
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOSPRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
PRESENTACION DEL TEMA LOS MEJORES SIMULADORES DE CIRCUITOS ELCTRONICOS
 
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdfInmersión global en ciberseguridad e IA en la conferencia RSA.pdf
Inmersión global en ciberseguridad e IA en la conferencia RSA.pdf
 
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
Actividad 1-PRESENTACIÓN ANIMADA.pptxPreservación y conservación de los docum...
 
Matriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docxMatriz de integración de tecnologías- Paola Carvajal.docx
Matriz de integración de tecnologías- Paola Carvajal.docx
 
Carta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdfCarta de Premio y Excel angeline 11-2pdf
Carta de Premio y Excel angeline 11-2pdf
 
VIDEOS DE APOYO.docx E
VIDEOS DE APOYO.docx                                  EVIDEOS DE APOYO.docx                                  E
VIDEOS DE APOYO.docx E
 
Análisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdfAnálisis de artefactos tecnologicos .pdf
Análisis de artefactos tecnologicos .pdf
 
Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.Tecnológia 2024.docx.
Tecnológia 2024.docx.Tecnológia 2024.docx.
 
Inteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidadInteligencia artificial dentro de la contabilidad
Inteligencia artificial dentro de la contabilidad
 
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
Actividad 14: Diseño de Algoritmos Paralelos Actividad 14: Diseño de Algoritm...
 
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier FolchBEDEC Proyecto y obra , novedades 2024 - Xavier Folch
BEDEC Proyecto y obra , novedades 2024 - Xavier Folch
 

Hardware Hacking con Arduino y RAD

  • 1. Hardware Hacking en Ruby: Arduino y RAD Esti Álvarez y Svet Ivantchev http://www.efaber.net Conferencia Rails 2008
  • 4. ¿Qué es Arduino? http://www.arduino.cc
  • 5. ¿Por qué Arduino? • Es Open Source • Es multiplataforma (Linux, Mac, Windows) • Se puede programar con cable USB • Pensado para hacer prototipos • El hardware es barato (30€)
  • 8. El Hardware • 14 pins IO digitales • 6 pins Input analógicos • 6 pins Output analógicos (PWM) • 16Kb memoria Flash (Apollo 11: 74 Kb) • 1Kbyte RAM (Apollo 11: 4Kb) • Microcontrolador ATMega168 a 16MHz • Alimentación por USB o pila de 9V
  • 9. Otras piezas • Sensores “binarios”: interruptores, termostatos, switches magnéticos, de posición, de luz, etc • Sensores “analógicos”: termistores, accelerómetros. • “Actuadores”: leds, motores, servos, LCDs
  • 14. Hello World: Hardware Pin 13 Arduino
  • 15. Hello World: Software /* Blink * The basic Arduino example.Turns on an LED on for one second, * http://www.arduino.cc/en/Tutorial/Blink */ int ledPin = 13; // LED connected to digital pin 13 void setup() { // run once, when sketch starts pinMode(ledPin, OUTPUT); // sets the digital pin as output } void loop() { // run over and over again digitalWrite(ledPin, HIGH);// sets the LED on delay(1000); // waits for a second digitalWrite(ledPin, LOW); // sets the LED off delay(1000); // waits for a second }
  • 16. Demo
  • 18. Demo
  • 20. Difuminado RGB: Hardware pin 9 Arduino pin 10 pin 11 PWM
  • 21. PWM
  • 22. /* Code for cross-fading 3 LEDs, RGB, or one tri-color LED */ int redPin = 9; int greenPin = 10; int bluePin = 11; int redVal = 255; int greenVal = 1; int blueVal = 1; int i = 0; // Loop counter void setup() { pinMode(redPin, OUTPUT); pinMode(greenPin, OUTPUT); pinMode(bluePin, OUTPUT); } void loop() { i += 1; // Increment counter if (i < 255) { redVal -= 1; greenVal += 1; blueVal = 1; } else if (i < 509) { redVal = 1; greenVal -= 1; blueVal += 1; } else if (i < 763) { redVal += 1; greenVal = 1; blueVal -= 1; } else { i = 1; } analogWrite(redPin, redVal); analogWrite(greenPin, greenVal); analogWrite(bluePin, blueVal); delay(10); // Pause for 10 milliseconds before resuming the loop }
  • 23. RAD: Ruby Arduino Development • Añadir a Arduino las ventajas de programar en Ruby • Convenciones y helpers inspirados en Rails • Testing Framework aprovechando el dinamismo de Ruby • Entorno de simulación gráfica usando “Shoes GUI”
  • 24. RAD: Ruby Arduino Development $ sudo gem install rad $ rad hello_world Successfully created your sketch directory. ... Added hello_world/hello_world2.rb Added hello_world/Rakefile Added hello_world/config Added hello_world/config/hardware.yml Added hello_world/config/software.yml
  • 25. RAD: Ruby Arduino Development $ ls -l hello_world -rw-r--r-- 1 esti esti 31 Rakefile drwxr-xr-x 4 esti esti 136 config drwxr-xr-x 42 esti esti 1428 examples drwxr-xr-x 7 esti esti 238 hello_world -rw-r--r--@ 1 esti esti 106 hello_world.rb drwxr-xr-x 5 esti esti 170 vendor
  • 26. Hello World class HelloWorld < ArduinoSketch output_pin 7, :as => :led def loop led.blink 500 end end
  • 27. Compilar y transferir $ rake make:upload
  • 28. Demo
  • 35. TwitAmbiLight • Comunicación por puerto serie • Datos del REST API de Twitter • Los colores de nuestra lámpara dependerán del humor de nuestros followers en Twitter.
  • 36. TwitAmbiLight: Ingredientes • 1 Arduino y 1 breadboard • 1 LED RGB y 3 resistencias de 220 ohms • 1 Cable USB y unos cuantos de conexión $ gem install toholio-serialport $ gem install twitter $ gem install mbbx6spp-twitter4r
  • 38. TwitAmbiLight: Hardware +5 V +5 V +5 V pin 11 USB Arduino pin 10 pin 9 PWM Internet
  • 39. TwitterAmbiLight: Software Ordenador # Se conecta al API de Twitter y busca colores en formato RGB # Hexadecimal entre los replies a @raduino # Ejemplo: @raduino #FF0000 %w(rubygems twitter serialport).each {|g| require g} gem 'mbbx6spp-twitter4r' # params para puerto serie port_str = quot;/dev/tty.usbserial-A4001lmtquot; # puede cambiar para ti baud_rate = 9600 data_bits = 8 stop_bits = 1 parity = SerialPort::NONE sp = SerialPort.new(port_str, baud_rate, data_bits, stop_bits, parity) ...
  • 40. def get_color_from_twitter client = Twitter::Client.new(:login => 'raduino', :password => 'mypass') last_status = client.status(:replies).first color = last_status.text.gsub('@raduino', '').strip || '' end 5.times do puts quot;Cojo el colorquot; color = get_color_from_twitter puts quot;Devuelve #{color}quot; if color.match(/#[A-F0-9]{6}$/i) puts quot;Envio en color al puerto seriequot; sp.write color end puts quot;-------------quot; sleep(10) end sp.close
  • 41. TwitterAmbiLight: Software Arduino class TwitAmbiLight < ArduinoSketch output_pin 9, :as => :red_led output_pin 10, :as => :green_led output_pin 11, :as => :blue_led r = 255; g = 255; b = 255 @first_byte = byte; @byte1 = byte; @byte2 = byte; @byte3 = byte @byte4 = byte; @byte5 = byte; @byte6 = byte serial_begin def setup red_led.digitalWrite HIGH green_led.digitalWrite HIGH blue_led.digitalWrite HIGH end ...
  • 42. ... def loop if serial_available # Si el primer byte es #, leer los 6 siguientes @first_byte = serial_read if @first_byte == '#' @byte1=serial_read; serial_print quot;Primer caracter:quot;;serial_println @byte1 @byte2 = serial_read; serial_print quot;2 caracter:quot;; serial_println @byte2 @byte3 = serial_read; serial_print quot;3 caracter:quot;; serial_println @byte3 @byte4 = serial_read; serial_print quot;4 caracter:quot;; serial_println @byte4 @byte5 = serial_read; serial_print quot;5 caracter:quot;; serial_println @byte5 @byte6 = serial_read; serial_print quot;6 caracter:quot;; serial_println @byte6 r = 255 - h2d(@byte1) * 16 + h2d(@byte2) g = 255 - h2d(@byte3) * 16 + h2d(@byte4) b = 255 - h2d(@byte5) * 16 + h2d(@byte6) end serial_print quot;Rojo: quot;; serial_println r serial_print quot;Verde: quot;; serial_println g serial_print quot;Azul:quot;; serial_println b red_led.analogWrite(r); green_led.analogWrite(g); blue_led.analogWrite(b) delay(100) end end ...
  • 43. ... def h2d(c) if c >= 48 && c <= 57 # c esta entre 0 y 9 return c - '0' elsif c >= 'A' && c <= 'F' # c esta entre A y F return c - 65 + 10 end end end
  • 44. Demo
  • 45. Opciones Wireless Zigbee GSM/GPRS 802. 11 Bluetooth 802.15.4 Moritorizado y Conectividad Aplicación control Voz y datos Internet rápido entre dispositivos Duración ~ semanas ~ días ~ horas ~ horas batería Ancho de 250 kbps Hasta 2 Mbps Hasta 54 Mbps 720 kbps banda Alcance típico 100-1000 metros Kilómetros 150-300 metros 10-100 metros Infraestructura Ventajas Bajo consumo existente Velocidad Comodidad
  • 46. XBee XBee Arduino Shield
  • 47. WiTwitAmbiLight: Hardware +5 V +5 V +5 V pin 11 serie Xbee pin 10 Arduino pin 9 802.15.4 Xbee serie Internet
  • 48. Demo
  • 49. Nunchuck como sensor • Interfaz I2C standard • Accelerómetro de 3 ejes • Joystick analógico de 2 ejes • 2 botones
  • 50. Ejemplo Nunchuck +5 V pin 11 serie Xbee pin 10 Arduino pin 9 PWM 802.15.4 serie i2c Xbee Arduino
  • 51. Demo
  • 52. Referencias • Getting Started with Arduino. Make Magazine • http://www.arduino.cc/ • http://rad.rubyforge.org/ • http://github.com/atduskgreg/rad/tree/master • http://todbot.com/blog/bionicarduino/
  • 53. Algunos ejemplos • http://www.cs.colorado.edu/~buechley/LilyPad/ build/turn_signal_jacket.html • http://vimeo.com/1261369 • http://vimeo.com/1650051 • http://www.botanicalls.com/kits/