Está en la página 1de 33

Descubre Arduino

por Miguel Sánchez


Universidad Politécnica de Valencia
Julio 2008
Guión

(1)Introducción
(2)¿Qué es Arduino?
(3)Características principales de Arduino
(4)Programando Arduino
(5)Preguntas y respuestas
Diseño con microcontroladores

 A muchos no les gusta


 Hay que estudiar muchos detalles del chip
 Es complicado ejercitarse porque:
 el material suele ser muy caro
 los errores pueden destruir el procesador
 muchos programas son caros
 Los sistemas de desarrollo son cómodos pero
no suelen ser económicos
¿Qué es Arduino?

 Copiado de http://www.arduino.cc
 Arduino es una plataforma programable para
realizar prototipos electrónicos que sigue la filosofía
del código abierto (open source).
 Está pensada para los artistas, diseñadores,
aficionados y cualquiera intereado en crear objetos
o entornos interactivos.
 Arduino es open-source hardware
¿open-source hardware?

 Suena como algo raro


 Del mismo modo que los programas open-
source, este hardware y todos los detalles del
diseño se han hecho públicos, incluyendo:
 el esquema y el circuito impreso
 el entorno para desarrollar programas
 el programa cargador (bootloader)
Esquema
Características principales
13 salidas digitales (6 PWM)

USB
RESET

alimentación
programación
externa
del cargador
o USB a

9-18 VDC

salidas tensión 6 entradas analógicas


Detalles del circuito
 Emplea el microcontrolador ATMEL ATmega168
 16KByte flash / 1KByte RAM / 0.5KByte EEPROM
Reloj 0 – 20Mhz
10 bit ADC, PWM,
contadores de captura,
USART, I2C, SPI,
watchdog, etc
 Convertidor USB a serie
 Puede alimentarse del
puerto USB
Existen multitud de formatos

 Los antiguos usan ATmega8


 Existen versiones reducidas sin USB
 El diseño original usaba RS-232 en vez de
USB
 Algunos modelos pueden requerir pulsar
el RESET para poder subir un programa
¿Quién ha creado Arduino?

 Arduino es el resultado
del esfuerzo
combinado de muchas
personas.
Plataforma para artistas

 Incluso si no eres artista te puede interesar


automatizar algo
 Puedes comprar placas montadas o kits por
menos de 20 Euros.
 Como se puede alimentar del cable USB que
usas para programarlo tan sólo necesitarás un
cable USB
¿Cómo lo programo?

 También hay un entorno de desarrollo libre


para Arduino (Windows+Linux+OSX).
 Se programa empleando el lenguaje C++
(gracias a la disponibilidad de un compilador
GNU para el ATmega).
 El entorno hace muy fácil el trabajo:
 edita, compila, cárgalo en la placa y ejecuta
Arduino IDE

 Escrito en Java
 Funciona en Windows,
Linux, OSX, ...
 Incluye un terminal
serir
 Disponible
gratuitamente
Programar Arduino

 Está basado en el leguaje Wiring


 Desarrolado por Hernando Barragán, profesor de
la Universidad de los Andes, Colombia
 El entorno IDE está basadi en Processing
 Ben Fry and Casey Rias (MIT Media Lab)
 Ambos proyectos son open-source
 El lenguaje incluye una librería que soporta
diversos elementos (puerto serie, motores paso a paso, temporizaciones,
entrada/salida básica)
Estructura de un programa

 En vez de una función main tenemos dos


funciones obligatorias: setup y loop
 void setup() realiza la configuración que precise
nuestro programa
 void loop() contiene el resto de código que se
ejcutará indefinidamente
 Also así como:
 main() { setup(); while(1) loop(); }
Referencia del lenguaje

 Tipos de datos:
 Sintaxis C
* boolean
 Communicación serie * char
* byte
 Entrada/Salida: * int
* unsigned int
 digitalRead, * long
digitalWrite * unsigned long
* float
 analogRead, * double
analogWrite * string
* array
 ...
Compilador gcc-avr

 El código es traducido a C++ y compilado


 Se usa la librería AVR-Libc
 El programa resultante se puede cargar a
través de la conexión serie porque el ATmega
tiene un programa cargador instalado en origen
 El código del cargador recibe el código de tu
programa por el serie y lo copia a la memoria
de programa (flash)
Secuencia de arranque

 Después de un RESET:
 El código del cargador comprueba si hay actividad
en el puerto serie, en cuyo caso pasa a recibir un
nuevo programa y grabarlo en la flash
 En caso negativo salta al último programa cargado
 El programa que carga el usuario nunca
destruye el código del cargador (consume 2K)
 El programa cargador sólo se puede programar
mediante el conector de 6 pines (ICSP)
Para programar el cargador ...

 Los kits comerciales ya


incluyen un procesador con
el código del cargador
programdo
 Se puede cambiar mediante
la conexión ICSP (de 6 pins)
 Existen diversos
programadores ICSP, este es
uno de los más baratos
Cargar un nuevo programa

 Las primeras versiones de Arduino


necesitaban que el usuario apretara RESET
 Las versiones actuales (diecimila) crean un
RESET mediante la seña DTR del puerto serie
(USB-serie)
 El RESET es necesario para que se pueda
ejecutar el cargador, ya que el procesador está
ejecutando el último programa cargado
“Escudos” Arduino

 Arduino permite apilar unas placas sobre la


placa del microcontrolador, por ejemplo:
 una placa de prototipado
 un modem inalámbrico
 un controlador de motores
 o tu propio circuito
Pila de “escudos”
Alimentación externa

 El puerto USB sólo


puede entregar una
cantidad limitada de
corriente a 5V.
 Arduino también
puede ser
alimentado con un
alimentador DC de 9
a 18V (positivo
centro)
Programando Arduino

 El IDE se puede descargar de


http://www.arduino.cc
 Arduino utiliza el chip FTDI USB-serie.
 Los drivers para ese chip ya están instalados
en tu sistema operativo.
Hola mundo!
Compilar Cargar Activar Terminal

 Como Arduino no
tiene pantalla usamos
el puerto serie para
imprimir datos:
 Serial.begin(speed)
 Serial.println(”...”)

Zona del Terminal


Blink

 El pin 13 tiene un LED


 Vamos a usarlo ahora
Entrada analógica

 Leemos el voltaje en
la entrada 2 y lo
imprimimos
Salida PWM

 Sólo algunas salidas


tciclo
digitales permiten este
modo:
 pines 11,10,9,6,5,3
 analogWrite nos ton
permite enviar un
valor a una salida
 no es exactamente
una salida analógica
Librarías

 Muchoas dispositivos ya están soportados en


la librería, como:
 motores paso a paso
 memoria EEPROM
 servos radiocontrol
 paneles LCD
 puerto serie
 etc
Plataforma para prototipos

 Una vez tienes tu prototipo fucionando puedes:


 eliminar el programa cargador (ganas 2K)
 diseñar un nuevo circuito impreso
 eliminar la circuitería USB (si no te hace falta)
 O puedes dejarlo tal cual
 puede que te resulte más económico
Otras referencias

 http://www.freeduino.org
 Contiene más de 400 enlaces interesantes
 entre ellos un curso de programación de Arduino
 Y existen muchas variantes hardware
Preguntas y respuestas

 Resuelve tus dudas ahora


Muchas gracias

También podría gustarte