INTRODUCCIÓN
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
PLACAS ARDUINO
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. Masa de rejilla. USB FTDI R232RC Atmega128
PLACAS ARDUINO
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
Basic Stamp
Microcontroladores Microchips PIC Basic Stamp BX-24 de Netmedia Phidgets ...
BX-24
$99
Otros proyectos similares Programma 2003 Wiring - semilla Arduino Instantsoup Processing
$30 PIC
ARDUINO
Conociendo Arduino (Duemilanove) Elementos en la placa AREF Voltaje de referencia para entrada analógica Masa I/O digitales PWM Valores high/low. PWM para escritura analógica Serie Comunicación serie tx/rx USB Comunicación con el PC
ARDUINO
Conociendo Arduino (Duemilanove) Elementos en la placa Alimentación externa Batería, pared Reset Extensión de botón reset 3V3,5V Fuentes de alimentación de 3.3V y 5V estabilizados Vin Conecta con Alimentación externa In analógicas Lecturas analógicas 0-1023 niveles
ARDUINO
Referencia del lenguaje Basado en C/C++ Vincula la librería AVR Libc
Estructura 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
ARDUINO
Referencia del lenguaje Más sintáxis ; (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)
Operadores aritméticos = (operador de asignación) + (suma) - (resta) * (multiplicación) / (división) % (módulo)
ARDUINO
Referencia del lenguaje Operadores de comparación == (igual que) != (distinto que) < (menor que) > (mayor que) <= (menor o igual que) >= (mayor o igual que)
Operadores booleanos && ('y' lógico) || ('o' lógico) ! (negación lógica)
Operadores de acceso a punteros
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)
* operador de indirección & acceso a memoria
ARDUINO
Referencia del lenguaje Operadores compuestos ++ (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
ARDUINO
Referencia del lenguaje Tipos de datos void boolean char unsigned char byte int unsigned int
Conversión char() byte() int() word() long() float()
word long unsigned long float double string array
ARDUINO
Referencia del lenguaje Ámbito de variables y cualificadores 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()
ARDUINO
Referencia del lenguaje Funciones 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()
ARDUINO
Referencia del lenguaje Funciones Interrupciones externas attachInterrupt() dettachInterrupt() Interrupciones interrupts() noInterrupts() Comunicación / Serial begin() end() available() read() flush() print() println() write()
ARDUINO
Conociendo Arduino Framework Control de sketch
Edición de sketch Consola de salida y errores
ARDUINO
Conociendo Arduino Framework - Configuración previa ¿"Quemar" el cargador de inicio (bootloader)? No suele ser necesario
Selección del tipo de placa Arduino Uno Arduino Duemilanove Arduino Diecimila ...
Selección del puerto serie correcto
ARDUINO
Conociendo Arduino Hola Mundo Declaración de variables: int pin_led = 13;
//asociamos pin a variable
Definición de configuración: void setup(){ pinMode(pin_led, pinMode (pin_led,OUTPUT OUTPUT); ); } //configuramos dicho pin en modo salida
Bucle principal del programa: void loop(){ //alternamo //alternamoss estados en salida con retardo digitalWrite(pin_led, digitalWrite (pin_led,LOW LOW); ); delay(1000); delay (1000); digitalWrite(pin_led, digitalWrite (pin_led,HIGH HIGH); ); delay(1000); delay (1000); }
ARDUINO
Conociendo Arduino Comunicación Serie Declaración de variables: char *mensaje = "Hola mundo"; char *mensaje mundo"; int tecla_byte;
Definición de configuración: void setup(){ Serial.begin .begin(9600); (9600); }
Bucle principal del programa: void loop(){ Serial.println .println(mensaje); (mensaje); while(! while (!Serial.available .available()){} ()){} if (Serial.available .available()){ ()){ tecla_byte = Serial.read .read(); (); Serial.println .println(tecla_byte, (tecla_byte, DEC DEC); ); } }
ARDUINO - EL ARTE DIGITAL
PROCESSING Y LA INTERACTIVID INTERACTIVIDAD AD Lenguaje de programación Entorno de desarrollo Orientado a la enseñanza, diseño digital y proyectos multimedia
ARDUINO - EL ARTE DIGITAL
INTERACTIVIDAD Exposiciones, ferias de arte Educación, publicidad kasabian futbol hero
game of life
rhifid speakers
virtual gravity
ARDUINO - MERCADO ASOCIADO
PROCESSING Y LA INTERACTIVID INTERACTIVIDAD AD ardupilot
Placas de prototipado Arte en venta Soluciones a medida, servicios photoduino
arducopter
winem
quadcopter
airpiano
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES
HOGAR DIGITAL - AUTONOMÍA PERSONAL 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.
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES
HOGAR DIGITAL - AUTONOMÍA PERSONAL 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 ...
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica Autonomía personal
Sensores Sensor de humedad Control de toldos, ventanas, persianas... Riego de plantas Alerta de inundación Digital Consumo 30 µW 0-100% HR Temperatura
Analógico Salida Lineal AREF 5V Consumo 200 µW 0-100% HR Temperatura
Sensor de luminosidad Control de luces, ventanas, persianas... Alerta de seguridad Alerta de Analógico 1kOhm - 10kOhm 0-100% HR Temperatura
Comportamiento similar a transistor
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica Autonomía personal
Sensores Sensor de presión atmosférica Control de toldos, Ventanas, Persianas... Riego de plantas, Aviso meteorológico... Digital Conexión I2C Bajo consumo 30KPa - 110KPa Temperatura
Sensor de presencia Control de luces, Control de energía, calefacción... Alerta de seguridad Accionamientos mecánicos Comportamiento similar a transistor
Digital Conexión SPI Bajo consumo 30KPa - 120KPa Temperatura
Comunicación Serie 9600bps Salida analógica 10mV/pulgada 0-255 niveles (6,45 metros)
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica 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
Resistencia Analógico 10kOhm
Digital Resolución 12 bits (0.065ºC) -25ºC / 80ºC Conexión I2C
Analógico Salida Lineal 10mV/ºK 2.98V = 298ºK = 25ºC
Atmega + sensor Atmega 328P Sensor temp. infrarrojo Solución pequeño tamaño
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica Autonomía personal
Sensores Sensor biométrico Control de acceso e identificación Alerta y control de intoxicación i ntoxicación (calderas) Analógico Detector Monóxido de carbono 20-2000ppm
Analógico Detector partículas de humo 0.5V/0.1mg/m3
Digital Comunicación serie 9600bps Devuelve una única id
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica 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 Acelerómetro Analógico Dos ejes Salida lineal Giroscopio Analógico Dos ejes Salida lineal Velocidad angular 500º/s Brújula Comunicación I2C Resolución 0.2º
Acelerómetro Analógico Tres ejes +/- 3G eje vertical (z) Salida lineal GPS Comunicación serie NMEA / SIRF 20 canales 5m de precisión
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica Autonomía personal
Comunicación
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 Bluetooth Transferencia de datos entre dispositivos Múltiples aplicaciones Comunicación puerto serie Ratio de tx: 2Mbps Alcance < 10m
Wifi 802.11b/g Control remoto de sistemas domóticos Atención remota, vigilancia, seguimiento médico
Comunicación Serie / SPI Hasta 4Mbps TCP/IP wpa2 8Mb memoria Soporte TCP, UDP, FTP, ...
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES Domótica Autonomía personal
Comunicación 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 serie Potencia: 1mW 256kbps max Alcance: 100m
Comunicación puerto serie Potencia: 1W 256kbps max Alcance: 64km
Comunicación puerto serie Potencia: 50mW 256kbps max Alcance: 1600m
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES
Más demos
+ INFORMACIÓN
Páginas de interés http://arduino.cc/es http://processing.org http://wiring.org.co/ http://www.creativeapplications.net http://www.instructables.com/
Contacto
[email protected]
Gracias por vuestra atención