Upload
marcelolillo
View
67
Download
0
Embed Size (px)
DESCRIPTION
Seminario Arduino
Citation preview
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
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
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
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
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
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
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
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
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
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 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
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)
ConstantesHIGH | LOWINPUT | OUTPUTtrue | false constantes enterosconstantes en coma flotante
Referencia del lenguaje
Tipos de datos
ARDUINO
voidbooleancharunsigned charbyteintunsigned int
Conversión
wordlongunsigned longfloatdouble stringarray
char()byte()int()word()long()float()
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()
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()
Referencia del lenguaje
Funciones
ARDUINO
Interrupciones externasattachInterrupt()dettachInterrupt()
Interrupcionesinterrupts()noInterrupts()
Comunicación / Serialbegin()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 placaArduino UnoArduino DuemilanoveArduino 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ónEntorno de desarrolloOrientado a la enseñanza, diseño digital y proyectos multimedia
INTERACTIVIDAD
ARDUINO - EL ARTE DIGITAL
Exposiciones, ferias de arteEducación, publicidad
rhifid speakers
kasabian futbol hero
game of life
virtual gravity
PROCESSING Y LA INTERACTIVIDAD
ARDUINO - MERCADO ASOCIADO
Placas de prototipadoArte en ventaSoluciones 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 inteligenteMobiliario inteligente...
Enfermedades:GeolocalizaciónAplicaciones de alertaAtención remota...
OtrasControl de niños...
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
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)
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
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
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º
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
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
Más demos
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES
Páginas de interés
+ INFORMACIÓN
http://arduino.cc/eshttp://processing.orghttp://wiring.org.co/http://www.creativeapplications.nethttp://www.instructables.com/
Gracias por vuestraatención
Eduardo Marín Izquierdo