Upload
eduardo-marin-izquierdo
View
392
Download
4
Embed Size (px)
Citation preview
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 - 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
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/