Arduino
Manuel Jiménez Buendía José Alfonso Vera Repullo Departamento de Tecnología Electrónica Curso 2013/2014Electrónica Industrial
2Material necesario
•
ARDUINO UNO REV.3. Precio aprox.: €20.00
•
Cable USB tipo impresora.
Electrónica Industrial
3Microcontroladores
• Un microcontrolador (μC) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su
memoria, y que dispone de los tres elementos básicos de una microcomputadora: un procesador, memoria e interfaces.
• Existe una amplia variedad de microcontroladores con muy diferentes prestaciones (velocidad de reloj,
consumo de energía, tamaño de los datos, interfaces, etc.)
Los microcontroladores se utilizan para reducir el tamaño, costo económico y el consumo de energía de un sistema en particular. Por eso el tamaño de la unidad central de procesamiento, la cantidad de memoria y los periféricos incluidos dependerán de la aplicación.
Ventajas de los microcontroladores :
• Bajo coste. • Versatilidad.
• Desarrollo más rápido. • Facilidad de programación • Tamaño muy reducido.
Electrónica Industrial
4Electrónica Industrial
5Los microcontroladores se utilizan en un amplio rango de aplicaciones. Algunas de estas pueden ser:
• Electrodomésticos => Panel de control de un horno microondas. • Equipos de sonido => Reproductor musical y/o vídeo (MP3 y/o MP4).
• Vehículos (Automóviles, camiones y aviones) => Control de velocidad de crucero, antibloqueo de frenos,
control de encendido, entrada automática , control ambiental y flujo de aire y de combustible, etc...
• Juguetes => Sistema de control de un perro robot. • Equipos de oficina => Control de una máquina de Fax.
Los microcontroladores suponen más de un 50% de los Circuitos Integrados existentes hoy en día. Mientras se pueden tener uno o dos microprocesadores de propósito general en casa (por ejemplo en los ordenadores personales), se pueden encontrar una o dos docenas de microcontroladores distribuidos entre los diferentes dispositivos existentes en un hogar cualquiera. Los μC se pueden encontrar en casi cualquier dispositivo electrónico como automóviles, lavadoras, frigoríficos, hornos microondas, teléfonos, mandos inalámbricos, teclados, juguetes, etc.
Electrónica Industrial
6Fabricantes
Empresa 8 bits 16 bits 32 bits
Atmel X X Freescale X X X Holtek X Intel X X X National Semiconductor X X X Microchip X X X NXP Semiconductor X X X Renesa X X X STMicroelectronics X Texas Instruments X X Zilog X
Electrónica Industrial
7Conexiones básicas de un μC
Fuente de alimentación de 5 V DC
Circuito de RESET
Oscilador
Fuente: http://www.mikroe.com/Electrónica Industrial
8Electrónica Industrial
9Conceptos generales
• Arduino es una plataforma de diseño de objetos interactivos (Physical Computing o Physical
Interaction Design) que integra una tarjeta microcontroladora open-source, un entorno de desarrollo de software basado en el lenguaje de programación Processing y una amplia comunidad de usuarios.
• En resumen, Arduino se utiliza para desarrollar objetos y entornos interactivos (internet de las
cosas) que tienen que ver con la creación de obras de arte, diseño de mecatrónica (para consumo e industrial) y proyectos DIY (Do It Yourself) para aficionados.
• Los objetos pueden ser autónomos (stand-alone) o pueden comunicarse con cualquier software
a través de puerto serie (p.e. Flash, Processing, MaxMSP,….), bien por cable o por Xbee, ZigBit, etc.
• Las tarjetas microcontroladoras pueden ser construidas por el usuario final o pueden comprarse
ya fabricadas.
• El entorno de desarrollo (IDE, Integrated Development Environment) puede ser descargado
libremente desde arduino.cc
Electrónica Industrial
10Conceptos generales
• Es un entorno multiplataforma. Puede correr sobre Windows, Macintosh y Linux.
• El IDE de Arduino está basado en Processing, un entorno de desarrollo fácil de utilizar por
artistas y diseñadores.
• Las tarjetas μC Arduino se pueden programar vía un cable USB, no un puerto serie.
• Tanto el hardware como el software es open-source. El usuario puede descargar los diagramas
de los circuitos, comprar todos los componentes y fabricárselo el mismo, sin tener que pagar nada a los fabricantes de Arduino.
• El hardware es barato. Una tarjeta Arduino UNO cuesta unos 20 €. Y reemplazar un chip dañado
en la tarjeta es fácil y barato (no cuesta más de 5€).
• Hay una comunidad de usuarios muy activa con la que poder colaborar y recibir ayuda.
Electrónica Industrial
11Placas Arduino (I)
Consultar para una lista completa http://en.wikipedia.org/wiki/List_of_Arduino_compatibles
Arduino Leonardo (2012) Arduino Mega 2560 (XXXX) Arduino Uno (XXXX) Arduino Mega (XXXX)
Arduino Duemilanove (XXXX) Arduino Diecimila(XXXX) Arduino Bluetooth (XXXX) Arduino NG Rev.C (XXXX)
Arduino NG (XXXX) Lily PAD Arduino (XXXX) Arduino Nano (XXXX) Arduino Mini (XXXX)
Electrónica Industrial
12Placas Arduino (II)
Shields
: Arquitectura modular inteligente
•
Las
Shields
son placas que a modo de
accesorio se pueden conectar a una placa
Arduino o compatible.
•
Para ello los pines de sus puertos guardan
una disposición de compatibilidad.
•
Existe una gran variedad de
shields
con
diversa funcionalidad: control de motores,
comunicaciones, prototipado rápido, etc.
•
Arduino.
•
GSM Shield.
•
Ethernet Shield.
Electrónica Industrial
13Placa Arduino Uno (I)
• ATmega 328P-PU
• 32 KB de memoria de programa FLASH • 2 KB de RAM
• 16 MHz de velocidad de reloj • Entradas / Salidas
• 14 pines de entradas/salidas
• 6 pines de entradas analógicas (también salidas) • Total: 20 entradas/salidas
• Completamente autónomo (stand-alone) una vez
programado.
Fuente: http://arduino.cc/en/Main/ArduinoBoardUno
Electrónica Industrial
14Placa Arduino Uno (II)
Fuente: http://arduino.cc/en/Main/ArduinoBoardUno
Alimentación y POWER
Puerto USB
Alimentación 5 VJack
Alimentación externa: Recomndado: 7-12 V Límites: 6-20 V3.3V
3,3 voltios5V
5 voltiosGND
0 voltiosVin
Alimentación externa de entrada sin regular
Electrónica Industrial
15Placa Arduino Uno (III)
Fuente: http://arduino.cc/en/Main/ArduinoBoardUno
Entradas / Salidas
14 pines de E/S digitales.
2,4,7,8,12,13 = puertos digitales convencionales 3,5,6,9,10,11 = puertos PWM
Puertos analógicos.
A4, A5 = son utilizadas para conexiones I2C/TWI A0-A5 = pueden funcionar como puertos
digitales (14-19)
AREF
Electrónica Industrial
16Placa Arduino Uno (IV)
Fuente: http://arduino.cc/en/Main/ArduinoBoardUno
Comunicaciones
Puerto serie RX/TX.
ICSP.
(In-Circuit Serial Programming)Para cargar el gestor de arranque (bootloader) o programas/firmware.
Electrónica Industrial
17Placa Arduino Uno (V)
Fuente: http://arduino.cc/en/Main/ArduinoBoardUno
Otras características
Botón de RESET
LEDs de test, TX y RX
LED de encendido
Reloj a 16/20 MHz
Microcontrolador
Atmega328Electrónica Industrial
18Entradas/salidas de Arduino (I)
Fuente: http://arduino.cc/en/Hacking/PinMapping168
Electrónica Industrial
19Entradas/salidas de Arduino (II)
Puertos de entrada/salida digitales
• Trabajan con niveles de tensión TTL: • 0 - 0,8 V = 0
• 2- 5 V = 1
• No se pueden conectar directamente a dispositivos que consuman potencia (Imax= 40 mA).
Puertos analógicos
• Convertidor A/D de 10 bits: 0 a 1023. • La tensión de referencia es 5 V.
• 0 V = 0 • 2,5 V = 215 • 5 V = 1023
Electrónica Industrial
20Entradas/salidas de Arduino (III)
Puertos PWM
• Es un puerto híbrido, ya que es un
puerto digital que mediante la modulación de 0 y 1 consigue expresar una idea de potencia.
Electrónica Industrial
21Entradas/salidas de Arduino (IV)
¿Cómo se trabaja en la práctica?
• Asignamos componentes a los puertos disponibles (digitales, analógicos y PWM).
• Realizamos lecturas y escrituras con el objeto de obtener un dato de un sensor o contralar
un determinado actuador.
• Procesamos los datos en el μC.
Electrónica Industrial
22Entradas/salidas de Arduino (V)
Algunos ejemplos de sensores y actuadores para Arduino
Brújula Sensor detemperatura
Medidor ultrasónico
GPS Pantalla táctil Controlador de motor
Unidad GSM/GPRS Sensor de presión
Electrónica Industrial
23¿Dónde comprar un Arduino?
Tiendas
Se agradece cualquier información para tener actualizada esta lista
Españolas Extranjeras www.cooking-hacks.com www.bricogeek.com www.ardumania.es www.electan.com Rayte www.parallax.com www.sparkfun.com www.makershed.com www.liquidware.com www.ladyada.net www.adafruit.com
Electrónica Industrial
24El entorno de desarrollo Arduino (I)
¿Cómo podemos empezar?
• Descargar la última versión del IDE (1.0.5). • http://arduino.cc/en/Main/Software
• Sigue las instrucciones de http://arduino.cc/es/Guide/HomePage para la instalación en
Windows (recomendable fichero instalable), Mac o Linux (descomprimir, instalar el driver, abrir el IDE y seleccionar el puerto correcto (Menú “HerramientasPuerto Serial”)).
• Conecta la placa Arduino a tu ordenador usando el cable USB. el LED verde indicador de la
alimentación (nombrado como ON en la placa) debería quedar encendido a partir de ese momento.
• Haz doble clic sobre la aplicación Arduino o el acceso directo.
• Abre el programa de ejemplo para hacer parpadear un LED ("LED blink"): Abrir > Basics >
Blink (pin 13 del microcontrolador).
• Compilamos el programa de ejemplo: Verificar • Cargamos el código compilado en Arduino: Cargar
Si todo funciona correctamente el LED de TEST debería parpadear
Electrónica Industrial
25El entorno de desarrollo Arduino (II)
Versión 1.0.1
Menú
Área de Programación
Electrónica Industrial
26El entorno de desarrollo Arduino (III)
Versión 1.0.1
• Los programas desarrollados con Arduino se conocen como sketches.
• Los sketches se escriben con un editor de texto y son guardados con la extensión .ino
Verificar Chequea errores Cargar Compila y carga Nuevo Crea nuevos sketches Abrir Abre sketches existentes Guardar Graba Sketches Monitor Serial
Electrónica Industrial
27El lenguaje de programación (I)
Conceptos generales.
• Se basa en C estándar.
• Para el control de los puertos del microcontrolador se utilizan las funciones predefinidas:
• pinMode(<puerto>,<modo>) // configura un puerto digital para leer o escribir datos • digitalWrite(<puerto>,0 o 1) // envía un 0 o 1 al puerto digital
• digitalRead(<puerto>) // devuelve un 0 o 1 del puerto
• analogRead(<puerto>) // devuelve un valor (0-1023) del puerto analógico • analogWrite(<puerto>,<valor>) //escribe en un puerto PWM un valor de 0 a 255
Referencia funciones – sintaxis:
Electrónica Industrial
28 Se tienen que programar obligatoriamente dos funciones:void setup() // se ejecuta una sola vez, cuando se inicia el sketch {
}
void loop() // se ejecuta de modo continuo indefinidamente {
}
El lenguaje de programación (II)
Electrónica Industrial
29Ejemplo: encendido/apagado LED (I)
Código fuente.
/* Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain. */
// Pin 13 has an LED connected on most Arduino boards. // give it a name:
int led = 13;
// the setup routine runs once when you press reset: void setup() {
// initialize the digital pin as an output. pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever: void loop() {
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second
digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second
}
Electrónica Industrial
30Ejemplo: encendido/apagado LED (II)
Esquemático.
Resistor 330 ohm (orange,
Electrónica Industrial
31Ejemplo: encendido/apagado LED (III)
Esquemático.
Resistor 330 ohm (orange,
Electrónica Industrial
32Ejemplo: encendido/apagado LED (IV)
Electrónica Industrial
33Ejemplo: encendido/apagado LED (V)
Esquemático.
Resistor 330 ohm (orange, orange, brown)Medir
Polímetro:
•
I en LED
•
V en salida (Pin 13)
Electrónica Industrial
34Fritzing
•
Esquemático, PCB,
protoboard
•
Multiplataforma
http://fritzing.org/download/
http://sourceforge.net/projects/fritzing.mirror/?source=directory
http://www.virtualbreadboard.com/
Virtual breadboard
•
Sólo protoboard
•
Windows
(Linux/OSX sólo VBB
Electrónica Industrial
35Ej.: on/off (fade) progresivo de un LED (I)
Esquemático y código fuente.
Pin 9
Habrá que utilizar:
• una salida PWM (3,5,6,9,20 o 11) • analogWrite(<pin>,<valor>)
Electrónica Industrial
36Ej.: on/off (fade) progresivo de un LED (II)
Esquemático y código fuente.
Pin 9
Habrá que utilizar:
• una salida PWM (3,5,6,9,20 o 11) • analogWrite(<pin>,<valor>)
/* Fade
This example shows how to fade an LED on pin 9 using the analogWrite() function.
This example code is in the public domain. */
int led = 9; // the pin that the LED is attached to int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() {
// declare pin 9 to be an output: pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever: void loop() {
// set the brightness of pin 9: analogWrite(led, brightness);
// change the brightness for next time through the loop: brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade: if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ; }
// wait for 30 milliseconds to see the dimming effect delay(30);
Electrónica Industrial
37Ej.: on/off (fade) progresivo de un LED (III)
Esquemático y código fuente.
Pin 9
Habrá que utilizar:
• una salida PWM (3,5,6,9,20 o 11) • analogWrite(<pin>,<valor>)