Professional Documents
Culture Documents
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
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
Evolución de placas
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
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
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
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
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
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
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
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
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
Conociendo Arduino
Framework - Configuración previa
¿"Quemar" el cargador de inicio (bootloader)? No suele ser necesario
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
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);
}
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
game of life
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
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 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ó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
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"
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