P00 Introduccion a Arduino

Microcontroladores y Laboratorio Docente: Ing. Roger Guachalla Narváez [email protected] PRACTICA 00: Introducción a A

Views 146 Downloads 0 File size 842KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Microcontroladores y Laboratorio

Docente: Ing. Roger Guachalla Narváez

[email protected]

PRACTICA 00: 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 (http://www.arduino.cc) es en realidad tres cosas: 1. Una placa hardware libre 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 libre (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 libre. Por “lenguaje de programación” se entiende cualquier idioma artificial diseñado para expresar instrucciones (siguiendo unas determinadas reglas sintácticas) que pueden ser llevadas a cabo por máquinas. Concretamente dentro del lenguaje Arduino, se encuentran los elementos parecidos a muchos otros lenguajes de programación existentes (como los bloques condicionales, los bloques repetitivos, las variables, etc.), así como también diferentes comandos –asimismo llamados “órdenes” o “funciones” – que nos permiten especificar de una forma coherente y sin errores las instrucciones exactas que se quiere programar en el microcontrolador de la placa.

¿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. 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 Microcontrolador Secundario Voltaje de operación Entrada de voltaje externo Entradas/Salidas Digitales Entradas Analógicas Corriente DC para cada pin E/S Memoria de Código Flash ROM Memoria de Datos SRAM Memoria de Datos EEPROM Conector ICSP Frecuencia de Reloj

ATmega328 ATmega16 +5 V 6-20 V 14 (de las cuales 6 son Salidas PWM) 6 40 mA 32 KByte 2 KByte 1 Kbyte 1 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 RS232 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. Informe de laboratorio TRABAJO DE INVESTIGACIÓN INDIVIDUAL

Modelos de Placas 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)