seminario arduino uah - capta

39

Upload: eduardo-marin-izquierdo

Post on 17-Jul-2015

391 views

Category:

Devices & Hardware


4 download

TRANSCRIPT

Proyecto Arduino ● Nace en 2005● David Cuartielles y Massimo Banzi

Problemas existentes○ Limitación tecnológica

■ El usuario no es experto■ Las plataformas existentes son muy

complejas, especializadas o cerradas.○ Limitación económica

■ El usuario final cambia: particulares, equipos docentes, entidades sin ánimos de lucro, ...

Solución○ Crear nuestra propia plataforma. Filosofía

OpenSource. Compartir conocimiento.

INTRODUCCIÓN

Desarrollando la idea - Placa Arduino"Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado en crear entornos u objetos interactivos."

Elementos básicos● Entradas● Salidas● Entrada de programación

INTRODUCCIÓN

Evolución de placas

Placa Original● Impresión por una cara ● 14 salidas digitales● 6 salidas analógicas● Pines de alimentación de 5V y 9V● Puerto ICSP (in circuit serial programming)● Puerto serie DB9

Placa Severino● Impresión por una cara ● 14 salidas digitales● 6 salidas analógicas● Pines de alimentación de 5V y 9V● Puerto ICSP● Puerto serie DB9● Puerto serie rx-tx-gnd

PLACAS ARDUINO

Evolución de placas

Arduino Serial● Impresión por dos caras ● 14 salidas digitales● 6 salidas analógicas

○ Pines de alimentación de 5V y 9V○ Puerto ICSP○ Puerto serie DB9○ Puerto serie rx-tx-gnd

Arduino serie USB● Versiones: Arduino USB, Arduino

USB 2.0, Extreme, Extreme v2, NG, NG Rev.

● Incorporan pines hembra.

PLACAS ARDUINO

● Masa de rejilla.● USB FTDI R232RC● Atmega128

Evolución de placas

Arduino Diecimila y Duemilanove● Reset desde PC● Regulador de baja caída● Fusible reseteable● Pines de alimentación de 5V y 3.3V

○ Mayor compatibilidad con sensores

Arduino Mega● Atmega1280 - 16MHz● 44 entradas/salidas digitales

○ 14 de ellas PWM ● 16 entradas digitales● 4 UARTS● Puerto ICSP● Comunicación SPI (serial peripheral interface)

PLACAS ARDUINO

Evolución de placas

Arduino Fio● Orientado a aplicaciones inalámbricas● Atmega328P - 8MHz● 14 Entradas/Salidas digitales

○ 6 de ellas PWM ● Pines de alimentación de 3.3V● Conector para baterías ion● Conector para módulos xbee

Arduino LilyPad● Diseñado para prendas textiles● ARmega168V / ATmega328V - 8MHz● 14 Entradas/Salidas digitales

○ 6 de ellas PWM

PLACAS ARDUINO

Evolución de placas

Arduino BT (bluetooth)● Incorpora módulo bluetooth● Atmega168● 14 Entradas/Salidas digitales

○ 6 de ellas PWM ● Pines de alimentación de 3.3V y 5V● Convertidor DC-DC (1.2V - 5.5V)● Pin 7 conectado con reset bluetooth● Baudrate a 115200 bps● Sin protección de carga o polarización

Arduino Nano● Idénticas características que Duemilanove● Micro Atmega168 ó Atmega328 ● Alimentación a través de Mini-USB

PLACAS ARDUINO

Evolución de placas

Arduino Mini● Basado en Atmega168● 14 Entradas/Salidas digitales

○ 6 de ellas PWM● 8 Entradas analógicas ● Sin protección de carga o polarización● Programable con el adaptador MiniUSB

Arduino Mini USB● Equivalente a Arduino Mini● Se añade conectividad a través de USB

PLACAS ARDUINO

Arduino no está sólo

Microcontroladores● Microchips PIC● Basic Stamp● BX-24 de Netmedia● Phidgets● ...

Otros proyectos similares● Programma 2003● Wiring - semilla Arduino● Instantsoup● Processing

PLACAS ARDUINO

$99 $30PIC

Basic Stamp

BX-24

Conociendo Arduino (Duemilanove)Elementos en la placa

ARDUINO

USB

I/O digitalesMasa

PWM

Serie

AREFVoltaje de referencia para entrada analógica

Valores high/low.PWM para escritura analógica

Comunicación serie tx/rx

Comunicación con el PC

Conociendo Arduino (Duemilanove)Elementos en la placa

ARDUINO

Vin

Reset

Alimentación externa

In analógicas

3V3,5V

Batería, pared

Fuentes de alimentación de 3.3V y 5V estabilizados

Conecta con Alimentación externa

Extensión de botón reset

Lecturas analógicas 0-1023 niveles

Referencia del lenguaje

Estructura

ARDUINO

● setup( )○ Al inicio de un sketch○ Inicia variables, estado de pins○ inicio de librerías, ...

● loop()○ Función principal del sketch. ○ Ejecución indefinida

Estructuras de control○ if○ if...else○ for○ while○ do...while

○ switch case○ break○ continue○ return

○ Basado en C/C++○ Vincula la librería AVR Libc

Referencia del lenguaje

Más sintáxis

ARDUINO

Operadores aritméticos

○ ; (punto y coma)○ {} (llaves)○ // (comentarios de una sola línea)○ /* */ (comentarios multilínea)○ #define (definición de precompilador)○ #include(inclusión de código externo)

○ = (operador de asignación)○ + (suma)○ - (resta)○ * (multiplicación)○ / (división)○ % (módulo)

Referencia del lenguaje

Operadores de comparación

ARDUINO

Operadores booleanos○ == (igual que)○ != (distinto que)○ < (menor que)○ > (mayor que)○ <= (menor o igual que)○ >= (mayor o igual que)

○ && ('y' lógico)○ || ('o' lógico)○ ! (negación lógica)

Operadores de acceso a punteros

○ * operador de indirección○ & acceso a memoria

Operadores a nivel de bits○ & ('y' a nivel de bits)○ | ('o' a nivel de bits)○ ^ (xor a nivel de bits)○ ~ (not a nivel de bits)○ << (desplazamiento de bits a la izquierda)○ >> (desplazamiento de bits a la derecha)

Referencia del lenguaje

Operadores compuestos

ARDUINO

○ ++ (incremento)○ -- (decremento)○ += (suma compuesta)○ -= (resta compuesta)○ *= (multiplicación compuesta)○ /= (división compuesta) ○ &= ('y' a nivel de bits compuesto)○ |= ('o' a nivel de bits compuesto)

Constantes○ HIGH | LOW○ INPUT | OUTPUT○ true | false ○ constantes enteros○ constantes en coma flotante

Referencia del lenguaje

Tipos de datos

ARDUINO

○ void○ boolean○ char○ unsigned char○ byte○ int○ unsigned int

Conversión

○ word○ long○ unsigned long○ float○ double ○ string○ array

○ char()○ byte()○ int()○ word()○ long()○ float()

Referencia del lenguaje

Ámbito de variables y cualificadores

ARDUINO

○ variables locales○ variables globales○ static○ volatile○ const

Funciones● E/S digital

○ pinMode()○ digitalWrite()○ digitalRead()

● E/S analógica○ analogReference()○ analogRead()○ analogWrite()

● E/S avanzada○ tone()○ notone()○ shiftOut()○ pulseIn()

Referencia del lenguaje

Funciones

ARDUINO

● Tiempo○ millis()○ micros()○ delay()

● Cálculo○ min()○ max()○ abs()○ constrain()○ map()○ pow()○ sqrt()

● Trigonometría○ sin(),cos(),tan()

● Números aleatorios○ randomSeed()○ random()

● Bits y Bytes○ lowByte()○ highByte()○ bitRead()○ bitWrite()○ bitSet()○ bitClear()○ bit()

Referencia del lenguaje

Funciones

ARDUINO

● Interrupciones externas○ attachInterrupt()○ dettachInterrupt()

● Interrupciones○ interrupts()○ noInterrupts()

● Comunicación / Serial○ begin()○ end()○ available()○ read()○ flush()○ print()○ println()○ write()

Conociendo ArduinoFramework

ARDUINO

Edición de sketch

Control de sketch

Consola de salida y errores

Conociendo ArduinoFramework - Configuración previa

ARDUINO

Selección del tipo de placa○ Arduino Uno○ Arduino Duemilanove○ Arduino Diecimila○ ...

Selección del puerto serie correcto

¿"Quemar" el cargador de inicio (bootloader)? No suele ser necesario

Conociendo ArduinoHola Mundo

ARDUINO

Declaración de variables: int pin_led = 13; //asociamos pin a variable

Definición de configuración: void setup(){ pinMode(pin_led,OUTPUT); } //configuramos dicho pin en modo salida

Bucle principal del programa: void loop(){ //alternamos estados en salida con retardo digitalWrite(pin_led,LOW); delay(1000); digitalWrite(pin_led,HIGH); delay(1000); }

Conociendo ArduinoComunicación Serie

ARDUINO

Declaración de variables: char *mensaje = "Hola mundo"; int tecla_byte;

Definición de configuración: void setup(){ Serial.begin(9600); }

Bucle principal del programa: void loop(){ Serial.println(mensaje); while(!Serial.available()){} if(Serial.available()){ tecla_byte = Serial.read(); Serial.println(tecla_byte, DEC); } }

PROCESSING Y LA INTERACTIVIDAD

ARDUINO - EL ARTE DIGITAL

● Lenguaje de programación● Entorno de desarrollo● Orientado a la enseñanza, diseño

digital y proyectos multimedia

INTERACTIVIDAD

ARDUINO - EL ARTE DIGITAL

● Exposiciones, ferias de arte● Educación, publicidad

rhifid speakers

kasabian futbol hero

game of life

virtual gravity

PROCESSING Y LA INTERACTIVIDAD

ARDUINO - MERCADO ASOCIADO

● Placas de prototipado● Arte en venta● Soluciones a medida, servicios

ardupilot

photoduino

quadcopter

arducopter

winemairpiano

HOGAR DIGITAL - AUTONOMÍA PERSONAL

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● DOMÓTICA: domus (casa) + tica (automática)● Autonomía Personal:

○ Tomar decisiones propias que afectan a su vida personal. ○ Poder vivir en el lugar que uno quiera.

HOGAR DIGITAL - AUTONOMÍA PERSONAL

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Ejemplo de dispositivos de sistemas de domótica

● Posibles aplicaciones relacionadas con la autonomía personal

○ Discapacidades:■ Movilidad - silla inteligente■ Mobiliario inteligente■ ...

○ Enfermedades:■ Geolocalización■ Aplicaciones de alerta■ Atención remota■ ...

○ Otras■ Control de niños■ ...

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Sensor de humedad○ Control de toldos, ventanas, persianas...○ Riego de plantas○ Alerta de inundación

Domótica Autonomía personal

DigitalConsumo 30 µW0-100% HRTemperatura

AnalógicoSalida Lineal AREF 5VConsumo 200 µW0-100% HRTemperatura

● Sensor de luminosidad○ Control de luces, ventanas, persianas...○ Alerta de seguridad○ Alerta de

Analógico1kOhm - 10kOhm0-100% HRTemperatura

Comportamiento similar a transistor

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Sensor de presión atmosférica○ Control de toldos, Ventanas, Persianas...○ Riego de plantas, Aviso meteorológico...

Domótica Autonomía personal

DigitalConexión I2CBajo consumo30KPa - 110KPaTemperatura

DigitalConexión SPIBajo consumo30KPa - 120KPaTemperatura

● Sensor de presencia○ Control de luces, Control de energía, calefacción...○ Alerta de seguridad○ Accionamientos mecánicos

Comportamiento similar a transistor

Comunicación Serie 9600bpsSalida analógica 10mV/pulgada0-255 niveles (6,45 metros)

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Sensor de temperatura○ Control de calefacción, ventanas, persianas,...○ Alertas de seguridad, Aplicaciones gráficas○ Accionamiento de sistemas contra hielo○ Seguimiento temperatura pacientes

Domótica Autonomía personal

ResistenciaAnalógico10kOhm

AnalógicoSalida Lineal 10mV/ºK2.98V = 298ºK = 25ºC

DigitalResolución 12 bits (0.065ºC)-25ºC / 80ºCConexión I2C

Atmega + sensorAtmega 328PSensor temp. infrarrojoSolución pequeño tamaño

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Sensor biométrico○ Control de acceso e identificación○ Alerta y control de intoxicación (calderas)

Domótica Autonomía personal

AnalógicoDetector Monóxido de carbono20-2000ppm

DigitalComunicación serie 9600bpsDevuelve una única id

AnalógicoDetector partículas de humo0.5V/0.1mg/m3

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Acelerómetros, giroscopios, brújulas, GPS○ Anticipación y control del sistema domótico○ Control automático de dispositivos móviles○ Localización de personas, Captura de movimientos

Domótica Autonomía personal

AcelerómetroAnalógicoDos ejesSalida lineal

AcelerómetroAnalógicoTres ejes+/- 3G eje vertical (z)Salida lineal

GiroscopioAnalógicoDos ejesSalida linealVelocidad angular500º/s

GPSComunicación serieNMEA / SIRF20 canales5m de precisión

BrújulaComunicación I2CResolución 0.2º

Comunicación

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

● Solución inmediata - Comunicación Puerto Serie○ Ideal para comunicación con periféricos (junto con I2C y SPI)○ Tasas de transferencia hasta 120kbps○ Inconveniente: conexión cableada

Domótica Autonomía personal

Comunicación puerto serieRatio de tx: 2MbpsAlcance < 10m

Comunicación Serie / SPIHasta 4Mbps TCP/IP wpa28Mb memoriaSoporte TCP, UDP, FTP, ...

● Bluetooth○ Transferencia de datos entre dispositivos○ Múltiples aplicaciones

● Wifi 802.11b/g○ Control remoto de sistemas domóticos○ Atención remota, vigilancia, seguimiento médico

Comunicación

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía personal

Comunicación puerto seriePotencia: 1mW256kbps maxAlcance: 100m

● Xbee / Zigbee○ Creación de redes sensoriales móviles○ Hogar digital vs Comunidad digital○ Información en tiempo real "sobre la marcha"

Comunicación puerto seriePotencia: 50mW256kbps maxAlcance: 1600m

Comunicación puerto seriePotencia: 1W256kbps maxAlcance: 64km

Más demos

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Páginas de interés

+ INFORMACIÓN

● http://arduino.cc/es● http://processing.org● http://wiring.org.co/● http://www.creativeapplications.net● http://www.instructables.com/

[email protected]

Gracias por vuestraatención

Eduardo Marín Izquierdo