Taller de Programación Creativa II

Transcripción

Taller de Programación Creativa II
Taller de Programación
Creativa II
MEDIALAB
PRADO
Taller de
Programación Creativa II
Comunicación con
BLOQUE II:
Comunicación con el Mundo Exterior
MEDIALAB
PRADO
Taller de
Programación Creativa II
BLOQUE II: Comunicación con el Mundo Exterior
¿En qué consiste la comunicación con el mundo exterior? ¿Qué es Arduino?
IDE de Arduino
Talleres Arduino Medialab Prado
Wiki Taller Arduino Medialab Prado
Conceptos básicos de comunicación serie:
a) Para establecer la comunicación serie entre dispositivos, la velocidad de comunicación serie (“baud rate”),
debe ser la misma, es decir, deben estar sincronizados y utilizar el mismo puerto de comunicación.
b) La comunicación serie se hace a través de bytes. Un byte son 8 bits (es decir un tren de 8 pulsos de voltaje
legible por la máquina o como una serie de 8, 1s ó 0s:), que representan un número entero entre 0 y 255.
Esto supone un problema si queremos mandar, por ejemplo, la lectura de un sensor cuyo rango sería
superior, por ejemplo, que variara entre 0 y 1023. (Conversión analógico-digital Arduino de 10 bits).
Hay dos opciones o modos de enviar datos:
a) una serie de caracteres ASCII (DEC)‫‏‬:
http://www.asciitable.com/
b) un número de 1 Byte en Binario (BYTE).
http://asp.astalaweb.com/Convertidores/Convertidor%20decimal-binario.asp
Por ejemplo si Arduino lee en un sensor analógico cuyo valor es de 65 (01000001 en binario) esta será
enviado, según el modificador o modo (DEC o BYTE), como:
http://arduino.cc/en/Tutorial/ASCIITable
Modo ASCII 65 ---DEC---- (“6′′ y “5′′ ACIIs 54–53) 00110110–00110101
Modo BYTE 65 ---BYTE --- 01000001
MEDIALAB
PRADO
Taller de
Programación Creativa II
BLOQUE II: Comunicación con el Mundo Exterior
Arduino y Processing
Disponemos de dos formas de conectar Processing con Arduino.
●
a) Librería con Firmata: Esta librería te permite controlar Arduino desde Processing sin necesidad de escribir
código para el Arduino. Para ello, hay que descargar o subir al Arduino un código llamado “standard firmata”
y utilizar los comandos propios de la librería. El Firmata viene incluido en el entorno de desarrollo de Arduino
(en Examples > Firmata).
➔
http://www.arduino.cc/playground/Interfacing/Processing
http://greduino.co.cc/ (Con tutorial en Castellano)
Limitaciones: El único problema con Firmata es que no tiene implementado todas las funcionalidades de
Arduino, por lo que sólo lo podemos utilizar con sensores/actuadores “básicos”.
http://www.firmata.org/wiki/Proposals
b) Processing y Arduino tienen respectivamente, una librería “Serial” para poder hablarse con el mundo
exterior: El entorno de desarrollo de Arduino, viene con algunos ejemplos básicos para comunicar con
Processing (en Examples > Communication). Todos ellos funcionan utilizando la librería Serial, lo que te obliga
a tener un código para Arduino y otro para Processing y que ambos se hablen o se comuniquen entre sí.
➔
http://processing.org/reference/libraries/serial/index.html
http://arduino.cc/en/Reference/Serial
MEDIALAB
PRADO
Taller de
Programación Creativa II
BLOQUE II: Comunicación con el Mundo Exterior
Ejemplos de Uso de la Librería “Serial”:
Importante:
–
Sólo podemos tener activado uno de los programas escuchando por el puerto serie seleccionado.
–
Los ficheros de Processing y Arduino, tienen la misma extensión *.pde
–
En Arduino, cuando se establece o activa la comunicación serie, quedan ocupados los pines 0 (RX) y 1(
TX).
Modo serie de Caracteres ASCII: El modificador DEC. Este modo no es el más eficiente pero si el más fácil
de leer en el mismo IDE de Arduino ya que activando el “serial monitor” del software Arduino (último
botón a la derecha), aparecerá el dato leido en el sensor.
http://arduino.cc/en/Tutorial/Graph (Captura de un sensor)
http://arduino.cc/en/Tutorial/VirtualColorMixer (Captura de más de un sensor)
Modo Byte o Binario: El modificador BYTE permite el envío de información más económica (menos
pulsos para la misma cantidad de información) lo que implica mayor velocidad en la comunicación. Y esto
es importante cuando se piensa en interacción en tiempo real.
Como adelantábamos antes, teníamos un problema con la lectura de los valores de un sensor cuyo rango
supere los 255. La solución más sencilla está en dividir por 4, para que puedan ser encapsulados en 1
Byte (0-255).
http://wiki.medialab-prado.es/images/9/9e/Taller_Arduino_processing.pdf
Pero podemos saltarnos dicha limitación y conseguir encapsular la información de la siguiente
forma.
http://itp.nyu.edu/physcomp/sensors/Code/ProcessingPHPMySQLClient
MEDIALAB
PRADO
Taller de
Programación Creativa II
BLOQUE II: Comunicación con el Mundo Exterior
¿Qué es un protocolo?
Los protocolos son reglas de comunicación que permiten el flujo de información entre equipos o
dispositivos que manejan lenguajes distintos.
Handshaking cuyo significado es "el apretón de manos", en tecnología de la información.
Por lo general, un proceso que tiene lugar cuando un equipo está a punto de comunicarse con un
dispositivo exterior a establecer normas para la comunicación.
http://arduino.cc/en/Tutorial/SerialCallResponse
http://arduino.cc/en/Tutorial/SerialCallResponseASCII
MEDIALAB
PRADO
Taller de
Programación Creativa II
BLOQUE II: Comunicación con el Mundo Exterior
FIN
MEDIALAB
PRADO

Documentos relacionados