seminario arduino

39

Upload: marcelolillo

Post on 01-Jan-2016

63 views

Category:

Documents


0 download

DESCRIPTION

Seminario Arduino

TRANSCRIPT

Page 1: Seminario Arduino
Page 2: Seminario Arduino

Proyecto Arduino Nace en 2005David Cuartielles y Massimo Banzi

Problemas existentesLimitación tecnológica

El usuario no es expertoLas plataformas existentes son muy complejas, especializadas o cerradas.

Limitación económicaEl usuario final cambia: particulares, equipos docentes, entidades sin ánimos de lucro, ...

SoluciónCrear nuestra propia plataforma. Filosofía OpenSource. Compartir conocimiento.

INTRODUCCIÓN

Page 3: Seminario Arduino

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ásicosEntradasSalidasEntrada de programación

INTRODUCCIÓN

Page 4: Seminario Arduino

Evolución de placas

Placa OriginalImpresión por una cara 14 salidas digitales6 salidas analógicasPines de alimentación de 5V y 9VPuerto ICSP (in circuit serial programming)Puerto serie DB9

Placa SeverinoImpresión por una cara 14 salidas digitales6 salidas analógicasPines de alimentación de 5V y 9VPuerto ICSPPuerto serie DB9Puerto serie rx-tx-gnd

PLACAS ARDUINO

Page 5: Seminario Arduino

Evolución de placas

Arduino SerialImpresión por dos caras 14 salidas digitales6 salidas analógicas

Pines de alimentación de 5V y 9VPuerto ICSPPuerto serie DB9Puerto serie rx-tx-gnd

Arduino serie USBVersiones: Arduino USB, Arduino USB 2.0, Extreme, Extreme v2, NG, NG Rev.Incorporan pines hembra.

PLACAS ARDUINO

Masa de rejilla.USB FTDI R232RCAtmega128

Page 6: Seminario Arduino

Evolución de placas

Arduino Diecimila y DuemilanoveReset desde PCRegulador de baja caídaFusible reseteablePines de alimentación de 5V y 3.3V

Mayor compatibilidad con sensores

Arduino MegaAtmega1280 - 16MHz44 entradas/salidas digitales

14 de ellas PWM 16 entradas digitales4 UARTSPuerto ICSPComunicación SPI (serial peripheral interface)

PLACAS ARDUINO

Page 7: Seminario Arduino

Evolución de placas

Arduino FioOrientado a aplicaciones inalámbricasAtmega328P - 8MHz14 Entradas/Salidas digitales

6 de ellas PWM Pines de alimentación de 3.3VConector para baterías ionConector para módulos xbee

Arduino LilyPadDiseñado para prendas textilesARmega168V / ATmega328V - 8MHz14 Entradas/Salidas digitales

6 de ellas PWM

PLACAS ARDUINO

Page 8: Seminario Arduino

Evolución de placas

Arduino BT (bluetooth)Incorpora módulo bluetoothAtmega16814 Entradas/Salidas digitales

6 de ellas PWM Pines de alimentación de 3.3V y 5VConvertidor DC-DC (1.2V - 5.5V)Pin 7 conectado con reset bluetoothBaudrate a 115200 bpsSin protección de carga o polarización

Arduino NanoIdénticas características que DuemilanoveMicro Atmega168 ó Atmega328 Alimentación a través de Mini-USB

PLACAS ARDUINO

Page 9: Seminario Arduino

Evolución de placas

Arduino MiniBasado en Atmega16814 Entradas/Salidas digitales

6 de ellas PWM8 Entradas analógicas Sin protección de carga o polarizaciónProgramable con el adaptador MiniUSB

Arduino Mini USBEquivalente a Arduino MiniSe añade conectividad a través de USB

PLACAS ARDUINO

Page 10: Seminario Arduino

Arduino no está sólo

MicrocontroladoresMicrochips PICBasic StampBX-24 de NetmediaPhidgets...

Otros proyectos similaresProgramma 2003Wiring - semilla ArduinoInstantsoupProcessing

PLACAS ARDUINO

$99 $30PIC

Basic Stamp

BX-24

Page 11: Seminario Arduino

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

Page 12: Seminario Arduino

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

Page 13: Seminario Arduino

Referencia del lenguaje

Estructura

ARDUINO

setup( )Al inicio de un sketchInicia variables, estado de pinsinicio de librerías, ...

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

Estructuras de controlifif...elseforwhiledo...while

switch casebreakcontinuereturn

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

Page 14: Seminario Arduino

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)

Page 15: Seminario Arduino

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)

Page 16: Seminario Arduino

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)

ConstantesHIGH | LOWINPUT | OUTPUTtrue | false constantes enterosconstantes en coma flotante

Page 17: Seminario Arduino

Referencia del lenguaje

Tipos de datos

ARDUINO

voidbooleancharunsigned charbyteintunsigned int

Conversión

wordlongunsigned longfloatdouble stringarray

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

Page 18: Seminario Arduino

Referencia del lenguaje

Ámbito de variables y cualificadores

ARDUINO

variables localesvariables globalesstaticvolatileconst

FuncionesE/S digital

pinMode()digitalWrite()digitalRead()

E/S analógicaanalogReference()analogRead()analogWrite()

E/S avanzadatone()notone()shiftOut()pulseIn()

Page 19: Seminario Arduino

Referencia del lenguaje

Funciones

ARDUINO

Tiempomillis()micros()delay()

Cálculomin()max()abs()constrain()map()pow()sqrt()

Trigonometríasin(),cos(),tan()

Números aleatoriosrandomSeed()random()

Bits y ByteslowByte()highByte()bitRead()bitWrite()bitSet()bitClear()bit()

Page 20: Seminario Arduino

Referencia del lenguaje

Funciones

ARDUINO

Interrupciones externasattachInterrupt()dettachInterrupt()

Interrupcionesinterrupts()noInterrupts()

Comunicación / Serialbegin()end()available()read()flush()print()println()write()

Page 21: Seminario Arduino

Conociendo ArduinoFramework

ARDUINO

Edición de sketch

Control de sketch

Consola de salida y errores

Page 22: Seminario Arduino

Conociendo ArduinoFramework - Configuración previa

ARDUINO

Selección del tipo de placaArduino UnoArduino DuemilanoveArduino Diecimila...

Selección del puerto serie correcto

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

Page 23: Seminario Arduino

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

Page 24: Seminario Arduino

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

Page 25: Seminario Arduino

PROCESSING Y LA INTERACTIVIDAD

ARDUINO - EL ARTE DIGITAL

Lenguaje de programaciónEntorno de desarrolloOrientado a la enseñanza, diseño digital y proyectos multimedia

Page 26: Seminario Arduino

INTERACTIVIDAD

ARDUINO - EL ARTE DIGITAL

Exposiciones, ferias de arteEducación, publicidad

rhifid speakers

kasabian futbol hero

game of life

virtual gravity

Page 27: Seminario Arduino

PROCESSING Y LA INTERACTIVIDAD

ARDUINO - MERCADO ASOCIADO

Placas de prototipadoArte en ventaSoluciones a medida, servicios

ardupilot

photoduino

quadcopter

arducopter

winemairpiano

Page 28: Seminario Arduino

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.

Page 29: Seminario Arduino

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 inteligenteMobiliario inteligente...

Enfermedades:GeolocalizaciónAplicaciones de alertaAtención remota...

OtrasControl de niños...

Page 30: Seminario Arduino

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Sensor de humedadControl de toldos, ventanas, persianas...Riego de plantasAlerta de inundación

Domótica Autonomía personal

DigitalConsumo 30 µW0-100% HRTemperatura

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

Sensor de luminosidadControl de luces, ventanas, persianas...Alerta de seguridadAlerta de

Analógico1kOhm - 10kOhm0-100% HRTemperatura

Comportamiento similar a transistor

Page 31: Seminario Arduino

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Sensor de presión atmosféricaControl 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 presenciaControl de luces, Control de energía, calefacción...Alerta de seguridadAccionamientos mecánicos

Comportamiento similar a transistor

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

Page 32: Seminario Arduino

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Sensor de temperaturaControl de calefacción, ventanas, persianas,...Alertas de seguridad, Aplicaciones gráficasAccionamiento de sistemas contra hieloSeguimiento 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

Page 33: Seminario Arduino

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Sensor biométricoControl de acceso e identificaciónAlerta 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

Page 34: Seminario Arduino

Sensores

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Acelerómetros, giroscopios, brújulas, GPSAnticipación y control del sistema domóticoControl automático de dispositivos móvilesLocalizació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º

Page 35: Seminario Arduino

Comunicación

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Solución inmediata - Comunicación Puerto SerieIdeal para comunicación con periféricos (junto con I2C y SPI)Tasas de transferencia hasta 120kbpsInconveniente: 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, ...

BluetoothTransferencia de datos entre dispositivosMúltiples aplicaciones

Wifi 802.11b/gControl remoto de sistemas domóticosAtención remota, vigilancia, seguimiento médico

Page 36: Seminario Arduino

Comunicación

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía personal

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

Xbee / ZigbeeCreación de redes sensoriales móvilesHogar digital vs Comunidad digitalInformación en tiempo real "sobre la marcha"

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

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

Page 37: Seminario Arduino

Más demos

ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Page 38: Seminario Arduino

Páginas de interés

+ INFORMACIÓN

http://arduino.cc/eshttp://processing.orghttp://wiring.org.co/http://www.creativeapplications.nethttp://www.instructables.com/

[email protected]

Page 39: Seminario Arduino

Gracias por vuestraatención

Eduardo Marín Izquierdo