You are on page 1of 39

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 BX-24
Basic Stamp
BX-24 de Netmedia
Phidgets
...

$99 $30
PIC
Otros proyectos similares
Programma 2003
Wiring - semilla Arduino
Instantsoup
Processing
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 switch case
if...else break
for continue
while return
do...while
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 Operadores booleanos
== (igual que) && ('y' lógico)
!= (distinto que) || ('o' lógico)
< (menor que) ! (negación lógica)
> (mayor que)
<= (menor o igual que) Operadores de acceso
>= (mayor o igual que)
a punteros
Operadores a nivel de bits * operador de indirección
& ('y' a nivel de bits) & acceso a memoria
| ('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)
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 word
boolean long
char unsigned long
unsigned char float
byte double
int string
unsigned int array

Conversión
char()
byte()
int()
word()
long()
float()
ARDUINO

Referencia del lenguaje

Ámbito de variables y cualificadores


variables locales
variables globales
static
volatile
const
Funciones
E/S digital
pinMode()
digitalWrite()
E/S avanzada
digitalRead()
E/S analógica tone()
analogReference() notone()
analogRead() shiftOut()
analogWrite() pulseIn()
ARDUINO

Referencia del lenguaje

Funciones
Tiempo Números aleatorios
millis() randomSeed()
micros() random()
delay() Bits y Bytes
Cálculo lowByte()
min() highByte()
max() bitRead()
abs() bitWrite()
constrain() bitSet()
map() bitClear()
pow() bit()
sqrt()
Trigonometría
sin(),cos(),tan()
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,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);
}
ARDUINO

Conociendo Arduino
Comunicación Serie
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);
}
}
ARDUINO - EL ARTE DIGITAL

PROCESSING Y LA INTERACTIVIDAD

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 INTERACTIVIDAD
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
Sensores personal

Sensor de humedad
Control de toldos, ventanas, persianas...
Riego de plantas
Alerta de inundación
Analógico
Digital Salida Lineal AREF 5V
Consumo 30 µW Consumo 200 µW
0-100% HR 0-100% HR
Temperatura Temperatura

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

Analógico Comportamiento
1kOhm - 10kOhm similar a transistor
0-100% HR
Temperatura
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía
Sensores personal

Sensor de presión atmosférica


Control de toldos, Ventanas, Persianas...
Riego de plantas, Aviso meteorológico...
Digital Digital
Conexión I2C Conexión SPI
Bajo consumo Bajo consumo
30KPa - 110KPa 30KPa - 120KPa
Temperatura Temperatura

Sensor de presencia
Control de luces, Control de energía,
calefacción...
Alerta de seguridad Comunicación Serie 9600bps
Accionamientos mecánicos Salida analógica 10mV/pulgada
0-255 niveles (6,45 metros)
Comportamiento
similar a transistor
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía
Sensores personal

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

Analógico
Resistencia
Salida Lineal 10mV/ºK
Analógico
2.98V = 298ºK = 25ºC
10kOhm

Atmega + sensor
Digital Atmega 328P
Resolución 12 bits (0.065ºC) Sensor temp. infrarrojo
-25ºC / 80ºC Solución pequeño tamaño
Conexión I2C
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía
Sensores personal

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

Digital
Analógico Comunicación serie
Detector Monóxido de 9600bps
carbono Devuelve una única id
20-2000ppm

Analógico
Detector partículas de humo
0.5V/0.1mg/m3
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía
Sensores personal

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
Acelerómetro Analógico
Analógico Tres ejes
Dos ejes +/- 3G eje vertical
Salida lineal (z)
Salida lineal

Giroscopio
Analógico GPS
Dos ejes Comunicación serie
Salida lineal NMEA / SIRF
Velocidad angular 20 canales
500º/s 5m de precisión

Brújula
Comunicación I2C
Resolución 0.2º
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía
Comunicación personal

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 Comunicación Serie / SPI
Alcance < 10m Hasta 4Mbps TCP/IP wpa2
8Mb memoria
Wifi 802.11b/g Soporte TCP, UDP, FTP, ...
Control remoto de sistemas domóticos
Atención remota, vigilancia, seguimiento médico
ARDUINO - HOGAR DIGITAL - AUTONOMÍA PERSONAL - SENSORES

Domótica Autonomía
Comunicación personal

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 Comunicación puerto serie


Potencia: 1mW Potencia: 50mW
256kbps max 256kbps max
Alcance: 100m Alcance: 1600m

Comunicación puerto serie


Potencia: 1W
256kbps max
Alcance: 64km
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
e.marin.izquierdo@gmail.com
Gracias por vuestra
atención
Eduardo Marín Izquierdo

You might also like