Está en la página 1de 7

Microprocesadores II Docente: Ing.

Roger Guachalla Narváez


xoroger@yahoo.es

P05: Introducción a Arduino


1. Objetivos
  Conocer ¿Qué es Arduino? y ¿Cuál es su origen?
 Revisar las especificaciones técnicas de la Placa Arduino UNO

2. Fundamento Teórico
¿Qué es Arduino?
Arduino es una plataforma de prototipos electrónica de código abierto (open-source) basada en
hardware y software flexibles y fáciles de usar. Está pensado para artistas, diseñadores, como hobby y
para cualquiera interesado en crear objetos o entornos interactivos.
http://arduino.cl/que-es-arduino/
Arduino es en realidad tres cosas:
1. Una tarjeta de hardware abierto que incorpora un microcontrolador reprogramable y una serie
de pines (los cuales están unidos internamente a las patillas de E/S del microcontrolador) que
permiten conectar allí de forma muy sencilla y cómoda diferentes sensores y actuadores.
2. Un software abierto (más en concreto, un IDE “Entorno de Desarrollo Integrado”), gratis y
multiplataforma (ya que funciona en Linux, MacOS y Windows) que se debe instalar en el
computador y que permite escribir, verificar y guardar (“cargar”) en la memoria del
microcontrolador de la placa Arduino el conjunto de instrucciones que se desea que este empiece
a ejecutar. Es decir: permite programarlo.
3. Un lenguaje de programación abierto. La tarjeta Arduino se programa con un lenguaje propio
basado en el lenguaje de programación de alto nivel Processing, lo que significa que es similar a
C++.
¿Cuál es el origen de Arduino?
Arduino nació en el año 2005 en el Instituto de Diseño Interactivo de Ivrea (Italia), centro académico
donde los estudiantes se dedicaban a experimentar con la interacción entre humanos y diferentes
dispositivos, muchos de ellos basados en microcontroladores. Arduino apareció por la necesidad de
contar con un dispositivo para utilizar en las aulas que fuera de bajo coste, que funcionase bajo cualquier
sistema operativo y que contase con documentación adaptada a gente que quisiera empezar de cero.
El nombre Arduino viene de un un bar en Ivrea, Italia; en donde los fundadores del proyecto solían
reunirse. El bar fue nombrado en honor a Arduino de Ivrea, quien fue el Rey de Italia desde el año 1002
hasta el año 1014.
La idea original fue, pues, fabricar la placa para uso interno de la escuela. No obstante, el Instituto se vio
obligado a cerrar sus puertas precisamente en 2005. Ante la perspectiva de perder en el olvido todo el
desarrollo del proyecto Arduino que se había ido llevando a cabo durante aquel tiempo, se decidió
liberarlo y abrirlo a “la comunidad” para que todo el mundo tuviera la posibilidad de participar en la
evolución del proyecto, proponer mejoras y sugerencias y mantenerlo “vivo”. Y así ha sucedido: Arduino
ha llegado a ser un proyecto de hardware y software libre de ámbito mundial.
El principal responsable de la idea y diseño de Arduino, y la cabeza visible del proyecto es el llamado
“Arduino Team”, formado por Massimo Banzi (profesor en aquella época del Instituto Ivrea), David
Cuartielles (profesor de la Escuela de Artes y Comunicación de la Universidad de Mälmo, Suecia), David
Mellis (por aquel entonces estudiante en Ivrea y actualmente miembro del grupo de investigación High-
Low Tech del MIT Media Lab), Tom Igoe (profesor de la Escuela de Arte Tisch de Nueva York), y Gianluca
Martino (responsable de empresa fabricante de los prototipos de las placas).
Tarjeta Arduino UNO
Existen varios tipos de placas Arduino, cada una con características específicas que hay que conocer para
poder elegir el modelo que más convenga según el caso. No obstante, existe un modelo “estándar” de
placa, que es el más utilizado: la tarjeta Arduino UNO. Desde que apareció en 2010 ha sufrido tres
revisiones, por lo que el modelo actual se suele llamar UNO Rev3 o simplemente UNO R3.
Hardware y cable USB
El Arduino puede ser alimentado a través de la conexión USB o con una fuente de alimentación externa.
La fuente de alimentación se selecciona automáticamente.

Especificaciones técnicas
Microcontrolador Primario ATmega328
Microcontrolador Secundario ATmega16
Voltaje de operación +5 V
Entrada de voltaje externo 6-20 V
Entradas/Salidas Digitales 14 (de las cuales 6 son Salidas
PWM)
Entradas Analógicas 6
Corriente DC para cada pin E/S 40 mA
Memoria de Código Flash ROM 32 KByte
Memoria de Datos SRAM 2 KByte
Memoria de Datos EEPROM 1 Kbyte
Conector ICSP 1
Frecuencia de Reloj 16 MHz

Microcontrolador Primario
El microcontrolador que lleva la placa Arduino UNO es el modelo ATmega328 de la marca Atmel que
tiene una arquitectura de tipo AVR, arquitectura desarrollada por Atmel y en cierta medida
“competencia” de otras arquitecturas como por ejemplo la PIC del fabricante Microchip. Más
concretamente, el ATmega328P pertenece a la subfamilia de microcontroladores “megaAVR”.
La figura muestra el patillaje del ATmega328P, que muestra qué pin es el que recibe la alimentación
eléctrica (“VCC”), qué dos pines están conectados a tierra (“GND”), qué pines son los de E/S (señalados
como PBx, PCx o PDx) y la existencia de otros pines más específicos como el AVCC (alimentación para el
convertidor analógico-digital) o el AREF (referencia analógica). También se puede observar que junto al
nombre de los pines de E/S se indica entre paréntesis las funciones especializadas que cada uno de ellos
tiene en particular (además de su función genérica de entrada/salida).

Patillaje ATMEGA328
Nota: Los números de pin del ATMEGA328 NO representan los números de pin en la Placa Arduino

Microcontrolador Secundario
La conexión USB de la placa Arduino, además de servir como alimentación eléctrica, sobre todo es un
medio para poder transmitir datos entre el computador y la placa, y viceversa. Este tráfico de
información que se realiza entre ambos aparatos se logra a través del uso del protocolo USB, un
protocolo de tipo serie que el computador es capaz de entender y manejar.
No obstante, el protocolo USB es demasiado complejo para que el microcontrolador ATmega328 pueda
manejarlo por sí mismo. La placa Arduino UNO R3 dispone de un chip que realiza esta función de
“traductor” del protocolo USB a un protocolo Serie RS-232 más sencillo (y viceversa). Ese chip es el
ATmega16U2. El ATmega16U2 es un microcontrolador en sí mismo con su propia CPU, con su propia
memoria (16 Kilobytes de memoria ROM Flash) cuya única función es traducir entre USB y RS-232.
Pines de alimentación (Power Pins)
 VIN: se trata de la fuente tensión de entrada que contendrá la tensión a la que se alimenta a la
 tarjeta Arduino mediante la fuente externa.
 5V: fuente de tensión regulada de +5V, esta tensión puede venir ya sea del pin VIN a través de
 un regulador interno, o se suministra a través de USB o de otra fuente de +5V regulada.
 3.3V: fuente de 3.3 voltios generados por el regulador interno con un consumo máximo de
 corriente de 50mA.
 GND: pines de tierra.
Entradas/Salidas Digitales
Cada uno de los 14 pines digitales se puede utilizar como una entrada o salida. Cada pin puede
proporcionar o recibir un máximo de 40mA. Además, algunos pines tienen funciones especializadas
como:

  Pin 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y la transmisión (TX) de datos serie TTL.
 Pin 2 y 3. Interrupciones externas. Se trata de pines encargados de interrumpir el programa
 secuencial establecido por el usuario.
 Pin 3, 5, 6, 9, 10 y 11. PWM (modulación por ancho de pulso). Constituyen bits de salida PWM
con la función analogWrite().
 Pin 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines son de apoyo a la comunicación SPI.

 Pin 13. LED. Hay un LED incorporado y conectado al pin digital 13. Cuando el pin es de alto
valor, el LED está encendido, cuando el valor está bajo, esta pagado.

Entradas Analógicas
El Arduino posee 6 entradas analógicas, etiquetadas desde la A0 a A5, cada una de las cuales ofrecen 10
bits de resolución (es decir, 1024 estados). Por defecto, se tiene una tensión de +5V, pero se puede
cambiar este rango utilizando el pin de AREF y utilizando la función analogReference(), donde se
introduce una señal externa de voltaje continuo que se usará como referencia.

Memoria Flash
Memoria persistente donde se almacena permanentemente el programa que ejecuta el
microcontrolador (hasta una nueva reescritura si se da el caso). En el caso del ATmega328P tiene una
capacidad de 32KB.
En los microcontroladores que vienen incluidos en la placa Arduino no se puede usar toda la capacidad
de la memoria Flash porque existen 512 bytes (el llamado “bootloader block”) ya ocupados por un código
pre-programado de fábrica (el llamado “bootloader” o “gestor de arranque”), el cual permite usar la
placa Arduino de una forma sencilla y cómoda sin tener que conocer las interioridades electrónicas más
avanzadas del microcontrolador.

El Bootloader del microcontrolador


Este software (también llamado “firmware”, porque es un tipo de software que raramente se modifica)
ocupa, en la placa Arduino UNO, 512 bytes de espacio en un apartado especial de la memoria Flash, el
llamado “bootloader block.
La función de este firmware es gestionar de forma automática el proceso de grabación en la memoria
Flash del programa que se quiere que el microcontrolador ejecute. Lógicamente, el bootloader realizará
esta grabación más allá del “bootloader block” para no sobrescribirse a sí mismo.
Más concretamente, el bootloader se encarga de recibir el programa de parte del entorno de desarrollo
Arduino (normalmente mediante una transmisión realizada a través de protocolo Serial RS-232 usando
una conexión USB desde el computador donde se está ejecutando dicho entorno hasta la placa) para
proceder seguidamente a su correcto almacenamiento en la memoria Flash, todo ello de forma
automática y sin tener que conocer las interioridades electrónicas del proceso. Una vez realizado el
proceso de grabación, el bootloader termina su ejecución y el microcontrolador se dispone a procesar
de inmediato y de forma permanente (mientras esté encendido) las instrucciones recientemente
grabadas.
En la placa Arduino UNO, el bootloader siempre se ejecuta durante el primer segundo de cada reinicio.
Durante esos instantes, el gestor de arranque se espera a recibir una serie de instrucciones concretas de
parte del entorno de desarrollo para interpretarlas y realizar la correspondiente carga de un posible
programa. Si esas instrucciones no llegan pasado ese tiempo, el bootloader termina su ejecución e
igualmente se empieza a procesar lo que haya en ese momento en la memoria Flash.

Memoria SRAM
Memoria volátil donde se alojan los datos que en ese instante el programa necesita crear o manipular
para su correcto funcionamiento. Estos datos suelen tener un contenido variable a lo largo del tiempo
de ejecución del programa y cada uno es de un tipo concreto (es decir, un dato puede contener un valor
numérico entero, otro un número decimal, otro un valor de tipo carácter, también pueden ser cadenas
de texto fijas u otros tipos de datos más especiales). Independientemente del tipo de dato, su valor
siempre será eliminado cuando se deje de alimentar eléctricamente al microcontrolador. En el caso del
ATmega328P esta memoria tiene una capacidad de 2KB.

Memoria EEPROM
Memoria persistente donde se almacenan datos que se desea que permanezcan grabados una vez
apagado el microcontrolador para poderlos usar posteriormente en siguientes reinicios. En el caso del
ATmega328P esta memoria tiene una capacidad de 1 KB, por lo que se puede entender como una tabla
de 1024 posiciones de un byte cada una.

El conector ICSP
La sigla ICSP (“In Circuit Serial Programming”) se refiere a un método para programar directamente
microcontroladores de tipo AVR y PIC. Se sabe que la función de un bootloader es permitir cargar
nuestros programas al microcontrolador conectando la placa a nuestro computador mediante un simple
cable USB estándar, pero si ese microcontrolador no tiene grabado ningún bootloader, la escritura de su
memoria no se puede realizar de esta forma tan sencilla y debemos utilizar otros métodos, como el ICSP.

Esta situación se puede encontrar cuando, por ejemplo, se desea reemplazar el microcontrolador DIP de
una placa Arduino UNO por otro que hayamos adquirido por separado sin bootloader incorporado. En
este caso se puede optar por usar el método ICSP para grabar un bootloader (para así volver a poderlo
programar vía USB directamente; de hecho, así es como se han grabado precisamente los bootloaders
en los microcontroladores de las placas Arduino que vienen de fábrica) o también para grabar
directamente siempre los programas sin tener que usar ningún bootloader nunca (con la ventaja de
disponer entonces de más espacio libre en la memoria Flash del microcontrolador –el que ocuparía el
bootloader si estuviera– y de poder ejecutar nuestros programas inmediatamente después de que la
placa reciba alimentación eléctrica sin tener que esperar a la ejecución de un bootloader inexistente).

Otra situación en la que nos puede interesar utilizar el método ICSP es cuando se quiere sobrescribir el
bootloader existente por otro, porque el original se haya corrompido, por ejemplo.

Para poder programar un microcontrolador adherido a alguna placa Arduino mediante el método ICSP
se necesita un aparato hardware específico, el “programador ISP”. Existen varias formas y modelos, pero
hoy en día la versión más extendida de programador ISP es la de un dispositivo que consta por un lado
de un conector USB para conectar al computador, por otro de un conector ICSP listo para acoplar a la
tarjeta Arduino.
El reloj
Para marcar el ritmo de:
  la ejecución de las instrucciones en el microcontrolador
 la lectura y escritura de los datos en su(s) memoria(s)
  adquisición de datos en los pines de entrada
 envío de datos hacia los pines de salidas
Y en general, para controlar la frecuencia de trabajo del microcontrolador, la placa Arduino posee un
reloj, el cual funciona a una frecuencia de 16 millones de hercios (16MHz). Esto quiere decir que
(aproximadamente) el microprocesador es capaz de realizar 16 millones de instrucciones en cada
segundo.

3. Programación de la tarjeta Arduino con MikroCPro for AVR

Descripción
 Por el puerto PD del ATMEGA328 se obtiene un valor en binario a través de 8 interruptores.
 Este valor me muestra en el dispclay LCD en base Decimal y Hexadecimal

*** El archivo .hex generado por Mikroc será subido (uploaded) a la tarjeta Arduino usando el software
XLOADER

Diagrama esquemático
Código fuente MikroC Pro for AVR

4. Trabajo de Investigación Individual

Modelos de Tarjetas ARDUINO


 Arduino Mega
  Arduino Nano
 Arduino LilyPad
  Arduino Due
 Arduino Zero
 Arduino Yun
Incluir:
 Fuentes de Información: direcciones web o bibliografía
 Impresión de las primeras 2 páginas de la fuente de información
 Resumen escrito a mano (de un mínimo de 6 páginas)