Práctica 2. con Arduino Manuel Jiménez Buendía José Alfonso Vera Repullo Departamento de Tecnología Electrónica Curso 2013/2014
Material necesario ARDUINO UNO REV.3. Precio aprox.: 20.00 Cable USB tipo impresora. Arduino Sidekick Basic Kit (KIT2243P). Precio aprox: 20.00 Electrónica Industrial 2
Microcontroladores 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 3
Conceptos generales Electrónica Industrial 4
Aplicaciones Los 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 5
Fabricantes 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 6
Conexiones básicas de un μc Fuente de alimentación de 5 V DC Circuito de RESET Oscilador Electrónica Industrial Fuente: http://www.mikroe.com/ 7
Arduino Electrónica Industrial 8
Conceptos generales Arduino 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 9
Conceptos generales Qué lo diferencia de otros entornos? 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 10
Placas Arduino (I) Placas oficiales de Arduino 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 Consultar para una lista completa http://en.wikipedia.org/wiki/list_of_arduino_compatibles 11
Placas Arduino (II) Shields: Arquitectura modular inteligente Arduino. Ethernet Shield. GSM Shield. 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. Electrónica Industrial Una lista completa Shields se puede encontrar en: http://shieldlist.org/ 12
Placa Arduino Uno (I) Características principales del Arduino Uno Rev. 3 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. Electrónica Industrial Fuente: http://arduino.cc/en/main/arduinoboarduno 13
Placa Arduino Uno (II) Alimentación y POWER Puerto USB Alimentación 5 V Jack Alimentación externa: Recomndado: 7-12 V Límites: 6-20 V 3.3V 3,3 voltios 5V 5 voltios GND 0 voltios Vin Alimentación externa de entrada sin regular Electrónica Industrial Fuente: http://arduino.cc/en/main/arduinoboarduno 14
Placa Arduino Uno (III) Entradas / Salidas AREF Voltaje de referencia para entradas analógicas 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) Electrónica Industrial Fuente: http://arduino.cc/en/main/arduinoboarduno 15
Placa Arduino Uno (IV) Comunicaciones Puerto serie RX/TX. ICSP. (In-Circuit Serial Programming) Para cargar el gestor de arranque (bootloader) o programas/firmware. Puerto USB y FTDI chipset Electrónica Industrial Fuente: http://arduino.cc/en/main/arduinoboarduno 16
Placa Arduino Uno (V) Otras características Botón de RESET LEDs de test, TX y RX LED de encendido Reloj a 16/20 MHz Microcontrolador Atmega328 Electrónica Industrial Fuente: http://arduino.cc/en/main/arduinoboarduno 17
Entradas/salidas de Arduino (I) Mapeado entre ATmega168/328 y Arduino Electrónica Industrial 18 Fuente: http://arduino.cc/en/hacking/pinmapping168
Entradas/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 19
Entradas/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 20
Entradas/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. Veamos algunos ejemplos de componentes que podemos utilizar Electrónica Industrial 21
Entradas/salidas de Arduino (V) Algunos ejemplos de sensores y actuadores para Arduino Brújula Sensor de temperatura Medidor ultrasónico Sensor de presión GPS Pantalla táctil Controlador de motor Unidad GSM/GPRS Electrónica Industrial 22
Dónde comprar un Arduino? Tiendas Españolas www.cooking-hacks.com www.bricogeek.com www.ardumania.es www.electan.com Rayte Extranjeras www.parallax.com www.sparkfun.com www.makershed.com www.liquidware.com www.ladyada.net www.adafruit.com Se agradece cualquier información para tener actualizada esta lista Electrónica Industrial 23
El 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ú Herramientas Puerto 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 Prueba a cambiar los tiempos de retardo y comprueba que la frecuencia de parpadeo varía Electrónica Industrial 24
El entorno de desarrollo Arduino (II) Versión 1.0.1 Menú Área de Programación Área de DEBUG Electrónica Industrial 25
El entorno de desarrollo Arduino (III) Versión 1.0.1 Verificar Chequea errores Cargar Compila y carga Nuevo Crea nuevos sketches Abrir Abre sketches existentes Guardar Graba Sketches Monitor Serial Abre el monitor serie Los programas desarrollados se conocen como sketches. Los sketches se escriben con un editor de texto y son guardados con la extensión.ino Electrónica Industrial 26
El 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: http://arduino.cc/en/reference/homepage Electrónica Industrial 27
El lenguaje de programación (II) Estructura de un programa. 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 } Electrónica Industrial 28
Ejemplo: encendido/apagado LED (I) Código fuente. LED L (en placa conectado a pin 13) /* 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 29
Ejemplo: encendido/apagado LED (II) Esquemático. Resistor 330 ohm (orange, orange, brown) Electrónica Industrial 30
Ejemplo: encendido/apagado LED (III) Esquemático. Resistor 330 ohm (orange, orange, brown) Electrónica Industrial 31
Ejemplo: encendido/apagado LED (IV) Montaje en protoboard. Electrónica Industrial 32
Ejemplo: encendido/apagado LED (V) Esquemático. Medir Polímetro: I en LED V en salida (Pin 13) Resistor 330 ohm (orange, orange, brown) Electrónica Industrial 33
Fritzing Esquemático, PCB, protoboard Multiplataforma http://fritzing.org/download/ http://sourceforge.net/projects/fritzing.mirror/?source=directory Virtual breadboard Sólo protoboard Windows (Linux/OSX sólo VBB express with Mono runtime) http://www.virtualbreadboard.com/ Electrónica Industrial 34
Ej.: 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 35
Ej.: on/off (fade) progresivo de un LED (II) Esquemático y código fuente. /* Fade This example shows how to fade an LED on pin 9 using the analogwrite() function. This example code is in the public domain. */ Pin 9 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); } Habrá que utilizar: una salida PWM (3,5,6,9,20 o 11) analogwrite(<pin>,<valor>) // 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 } 36
Ej.: on/off (fade) progresivo de un LED (III) Esquemático y código fuente. Pin 9 Modificar código para menor velocidad Medir Polímetro: V en salida (Pin 9) Osciloscopio: V en salida (Pin 9) Habrá que utilizar: una salida PWM (3,5,6,9,20 o 11) analogwrite(<pin>,<valor>) Electrónica Industrial 37