Seminario de Arduino
Juan José Echevarría, Adolfo García
Seminario Arduino
Índice
¿Qué es Arduino? Historia Plataformas relacionadas Proyectos sobre Arduino Placas Arduino Shields Arduino Entorno Arduino Configuración Programación Ejemplo programación Ejercicios
Seminario Arduino
¿Qué es Arduino?
Plataforma Electrónica
Software/Leguaje de Programación
Sistema Open Source
USO FÁCIL E INTUITIVO
www.arduino.cc
Seminario Arduino
¿Para quién?
DiseñadoresAficionadosEstudiantes
Artistas
¡¡ PARA TODOS !!
¿Cómo surge Arduino?
Seminario Arduino
2005 ->Instituto de Diseño Interactivo Ivrea (Italia) David Cuartielles y Massimo Banzi
Problemas existentes Limitación tecnológica
Usuario no experto Plataformas existentes ->complejas, especializadas o cerradas
Limitación económica Solución
Plataforma OpenSource ¡¡¡La comunidad Arduino tiene más de 120 mil
usuarios!!!!
Evolución
Seminario Arduino
Seminario Arduino
Plataformas relacionadas
Processing Entorno de desarrollo para proyectos multimedia e interactivos Diseño digital y procesado
Wiring Basado en Processing Programación uC para no expertos Arduino se basa en Wiring
Fritzing Entorno visual Creación esquemas electrónicos
Seminario Arduino
Proyectos con Arduino
SECUduino -> controladora bus CAN ArduPilot -> control avión no tripulado Robótica -> robot araña controlado por voz Robótica -> control cámara pan/tilt con mando Wii Seguridad -> control de acceso mediante leds IoT -> control del estado de una planta mediante
tweets
Seminario Arduino
SECUduino: controladora de bus CAN
SECUduino: controladora de bus CAN
Seminario Arduino
Proyectos con Arduino
SECUduino: controladora de bus CAN
http://www.youtube.com/watch?v=_JQyTYB3ZoA
Seminario Arduino
Proyectos con Arduino
ArduPilot: UAV controlado por Arduino
Seminario Arduino
Proyectos con Arduino
ArduPilot
http://www.youtube.com/watch?v=IvR3QM0iTPw
Seminario Arduino
Proyectos con Arduino
Robot araña controlado por voz (Arduino+Processing)
http://www.youtube.com/watch?v=wj8f9xL9_Hw
Seminario Arduino
Proyectos con Arduino
Cámara con movimientos Pan/Tilt y mando Wii
http://www.youtube.com/watch?v=MD_-YnFZFP8
Seminario Arduino
Proyectos con Arduino
Cerradura con combinación RGB
Seminario Arduino
Proyectos con Arduino
IoT: Botanicalls
Seminario Arduino
¿Por qué usar Arduino?
Sencilla Programación Rápido Prototipado Grabación mediante USB Gran extensibilidad todo tipo de sensórica y
comunicaciones. “SHIELDS”
SHIELD: Módulo extra para añadir funciones: Ethernet, Wifi, Zigbee, GPRS,…
Placas: Arduino Uno
uC ATmega 328 a 16MHz Flash 32KB RAM 2KB EEPROM 1KB 5 entradas Analógicas [0-5V] 14 Pines E/S Digitales
6 PWM
Puerto serie (0,1) I2C (4,5) SPI (10, 11, 12, 13)
Seminario Arduino
Seminario Arduino
Placas: Arduino Mega2560
uC ATmega 2560 a 16MHz Flash 256KB RAM 8KB EEPROM 4KB 15 entradas Analógicas [0-5V] 54 Pines E/S Digitales
14 PWM
4 Puertos series (0-1,19-18,17-16,15-14)
I2C (20,21) SPI (50,51,52,53)
Seminario Arduino
Placas: Arduino Duemilanove
uC ATmega 168 a 16MHz Flash 16KB RAM 1kB EEPROM 512B 5 entradas Analógicas [0-5V] 14 Pines E/S Digitales
6 PWM
Puerto serie SPI e I2C
Seminario Arduino
Placas: Arduino Fio
Orientado a aplicaciones inalámbricas Atmega328P a 8MHz 14 Entradas/Salidas digitales
6 PWM
Pines de alimentación de 3.3V Conector para baterías Conector para módulos xbee
Seminario Arduino
Placas: Arduino Nano
Idénticas características que Duemilanove Alimentación a través de Mini-USB Pensado para aplicaciones embebidas
Seminario Arduino
Placas: Arduino LilyPad
Diseñado para prendas textiles Pequeño y ligero 14 E/S digitales
6 PWM
Seminario Arduino
Shields Arduino
Ethernet XBEE
Wifi Relés
Seminario Arduino
Características entorno Arduino
Basado en C/C++
Uso librerías: programación
por objetos (C++) Serial.begin(9600);
Entorno propio de desarrollo
Uso librería familia AVR
Seminario Arduino
Arduino IDE: configuración
Descargar la última publicación de la página web -> www.arduino.cc
Descomprimir fichero Conectar Arduino mediante USB
Si los drivers no se instalan automáticamente, buscar los drivers en la carpeta …/arduino-00xx/drivers
Ejecutar aplicación Seleccionar en la interfaz el puerto serie Seleccionar en la interfaz la placa Arduino en uso
Seminario Arduino
Arduino IDE
Seminario Arduino
Arduino IDE: interacción
Funciones principales Nuevo -> crear un programa en blanco Guardar -> guardar el programa escrito (sketch) Compilar -> comprueba errores en el código Abrir -> abrir ejemplos hechos o programas propios Descargar -> descargar el código a la plataforma Monitor serie -> recepción y envío de caracteres/cadenas
por puerto serie
Seminario Arduino
Programación
Estructura: setup( )
Al inicio de un programa Inicia variables, estado de pines, librerías, ...
loop() Función principal del programa. Contiene la lógica. Ejecución infinita
Estructuras de control, operadores, tipos de datos… C/C++
Constantes propias HIGH/LOW INPUT/OUTPUT
Seminario Arduino
Programación
Estructura:
Inicialización
Bucle Principal
Seminario Arduino
Programación: funciones básicas Funciones E/S digitales:
pinMode(pin, modo); Inicialización digitalWrite(pin, estado); Activación de una salida Val=digitalRead(pin); Lectura de una entrada
Funciones E/S analógicas: analogWrite(pin, valor); Salida en PWM Val=analogRead(pin); Entrada de PWM val=map(val,ini,fin,ini2,fin2); Mapear valor
Funciones puerto serie: Val= Serial.read(); Recepción serie Serial.print(a)/Serial.println(a); Imprimir en pantalla Serial.write(a); Envío de un dato Serial.begin(baudios); Inicialización serie Val=Serial.available(); Número de bytes en puerto
Función espera: delay(ms) Retraso en milisegundos
Seminario Arduino
Programación: periféricos Arduino Uno
Salidas/ Entradas Digitales
Entradas Analógicas
Alimentaciones
USB
Alimentación 6-9 DC
Seminario Arduino
Shield desarrollada
Conexiones LDR: pin A0 Led rojo: pin 3 Led amarillo: pin 5 Led verde: pin 6 Pulsador 1: pin 4 Pulsador 2: pin 7 RFID: pin RX Jumper desconectado para grabación Jumper conectado para ejecución
No conectar el jumper
en los pines superiores
Seminario Arduino
Ejemplo práctico: Semáforo Definición de variables
#define boton 4 //pin correspondiente al botón 1 #define ledRojo 3 #define ledAmbar 5 #define ledVerde 6 //pines correspondientes a los distintos leds int estadoBoton = 0; //estado actual del botón
Inicialización/Configuración pinMode(boton, INPUT); //botón como entrada pinMode(ledRojo, OUTPUT); pinMode(ledAmbar, OUTPUT); pinMode(ledVerde, OUTPUT); //leds como salidas digitalWrite(ledVerde, HIGH); //estado inicial: led verde encendido Serial.begin(9600); //iniciar puerto serie a 9600
Ejemplo práctico: Semáforo
Seminario Arduino
Bucle principal estadoBoton = digitalRead(boton); //leer estado botón if (estadoBoton >0){ //si el estado es mayor que 0 (se ha pulsado) delay(6000); //espera digitalWrite(ledVerde, LOW); digitalWrite(ledAmbar, HIGH); //cambio led a ambar delay(2000); //espera digitalWrite(ledAmbar, LOW); digitalWrite(ledRojo, HIGH); //cambio led a rojo Serial.println(“Se puede cruzar”); delay(12000); //espera digitalWrite(ledRojo, LOW); digitalWrite(ledVerde, HIGH); //vuelta a led verde (estado inicial) }
Seminario Arduino
Ejemplo práctico : Semáforo
Programa completo
PREGUNTAS
Seminario Arduino
PAUSA
Seminario Arduino
Ejercicios
Desarrollar una aplicación que obtenga datos de un sensor y según el valor de dicho sensor alimente de forma proporcional un led.
Desarrollar una aplicación que obtenga datos de un sensor de luz (LDR) y active un led cuando la iluminación sea reducida.
Desarrollar una aplicación que lea 2 tarjetas RFID, de forma que al pasar una de ellas encienda los leds, y al pasar la otra los apague.