Arduino uno primeros pasosDescripción completa
Views 142 Downloads 13 File size 446KB
SISTEMAS EMBEBIDOS Los sistemas embebidos, son parte central de este complejo mundo Los sistemas embebidos, son parte central de este complejo mundo interconectado del Internet de las cosas y con su inteligencia computacional conformada de hardware y software, que cumple con tareas determinadas desde el diseño, ejecutan en tiempo real tareas que hacen que la inteligencia i t integrada en circuitos se multiplique día a día. Las posibilidades son d i it lti li dí dí L ibilid d enormes. No participar en este avance tecnológico sería un error grave.
Comúnmente se cree que los sistemas embebidos se originaron en el campo de la electrónica, como resultado de la evolución en la forma de diseñar los sistemas electrónicos. Sin embargo, su origen es resultado de múltiples avances en diferentes campos de conocimiento, entre los que últi l dif t d i i t t l destacan la electrónica, comunicaciones y la computación.
Al principio, los diseñadores en electrónica resolvían los problemas solamente utilizando hardware, lo que se conoce como diseño fijo, el cual es solamente utilizando hardware, lo que se conoce como diseño fijo, el cual es “un sistema físico (hardware) en el que los elementos que lo componen están unidos entre sí directamente, es decir, que las conexiones entre ellos no pueden ser modificadas por el usuario. Según el tipo de sistemas que permiten realizar se clasifican en combinacionales i li l ifi bi i l o secuenciales” i l ” (Mandado y Mandado, 2012, p. 420). La principal desventaja podría ser la inflexibilidad, que haría que el hardware p p j p ,q q de los sistemas electrónicos sea desechable, es decir, que el sistema no pudiera ser reutilizado para otras aplicaciones, ya que la programación se realiza mediante alambres (circuitos) que formaban la interfaz de un sistema completo. completo
Esto obviamente sólo representa una desventaja cuando es necesario, debido a la aplicación, que cambie el comportamiento para otras condiciones o por circunstancias de aplicación. Una parte del problema se resolvió a principios de los cincuenta, con el programa almacenado en una memoria física y posteriormente con otro llamado compilador, que traduce el lenguaje ensamblador a código máquina que facilitó la escritura de las el lenguaje ensamblador a código máquina, que facilitó la escritura de las instrucciones en forma más familiar, con lo cual se puede modificar el comportamiento del sistema sin cambiar enteramente el hardware, sino sólo modificando un programa o series de programas.
No fue sino hasta 1969 cuando Marcian Ted Hoff concibió el diseño de una calculadora utilizando software y hardware, proyecto que fue realizado hasta 1971, cuando Federico Faggin construyó para Intel el primer microprocesador en chip. A partir de la creación del microprocesador 4004, los diseñadores comenzaron a buscar aplicaciones y productos que pudieran los diseñadores comenzaron a buscar aplicaciones y productos que pudieran ser controlados con este dispositivo. El gran éxito en ventas motivó a Intel a construir la siguiente versión, el 8008, que contaba con más prestaciones en hardware que su antecesor. Quizá éste sea el origen del nombre Embedded System, que se traduce al español como sistema empotrado o embebido. El éxito de estos sistemas fue tal que marcó una nueva era en el diseño de los sistemas electrónicos. Por q este motivo muchos diseñadores marcan el origen de los sistemas embebidos en 1971 con la creación del microprocesador 4004.
EEn las últimas dos décadas (1980‐2010) las partes de hardware y software l últi d dé d (1980 2010) l t d h d ft han evolucionado casi a la par, en gran medida por los avances logrados en los semiconductores en la década de los noventa. Mientras el hardware incorpora periféricos más veloces y de mayor capacidad para el manejo de p p f y y p p j datos, el software ha pasado de ser una secuencia de instrucciones a un bootloader (programa residente en memoria), un scheduler, y finalmente a un sistema operativo de tiempo real. Debido a que el software está dentro de la memoria del sistema se le suele llamar software embebido.
Así, un Sistema Embebido (o integrado) puede considerarse como un sistema A í Si t E b bid ( i t d ) d id it computarizado especializado que es parte de un dispositivo o máquina mayor, que cumple funciones de monitoreo o control. Típicamente, un sistema integrado está armado en una tarjeta única con un microprocesador g j p ó microcontrolador y memoria ROM y RAM. En la práctica muchos sistemas que poseen una interfaz digital (relojes, micro‐ondas, automóviles) utilizan sistemas embebidos. Algunos sistemas embebidos incluyen un sistema operativo pero muchos son tan especializados que toda la lógica puede operativo, pero muchos son tan especializados que toda la lógica puede implementarse en un solo programa.
EEn realidad los sistemas embebidos comenzaron a utilizarse antes de ser lid d l it b bid tili t d definidos y van evolucionando de manera tan rápida que provocan que las concepciones acerca de ellos cambien constantemente . Sin embargo, y a pesar de que aún se discute por qué se les llama sistemas g y p q p q embebidos, se pueden distinguir cuatro características fundamentales: • Hardware (Embedded hardware) • Software (Embedded software) • Software (Embedded • Inteligencia computacional • Ejecución de una o varias tareas en tiempo real (el sistema es predecible y determinista)
¿QUE ES ARDUINO? ¿QUE ES ARDUINO? Es una placa hardware PCB (Printed Circuit Board) basada en Microcontrolador un sistema embebido de desarrollo Utilizándolo se Microcontrolador, un sistema embebido de desarrollo. Utilizándolo se dispone del hardware genérico, con el cual, mediante la conexión de placas de expansión o shields, se puede tener un conjunto de aplicaciones o funciones específicas para la creación de prototipos basada en software y hardware libre, para entornos u objetos interactivos. Al referirse a Arduino, se debería especificar el modelo, ya que existen varias diferentes placas Arduino oficiales, cada una con distintas características (tamaño físico, número de pines ofrecido, Microcontrolador incorporado, cantidad de número de pines ofrecido, Microcontrolador incorporado, cantidad de memoria utilizable, etc.). De cualquier modo aunque sean diferentes modelos de Arduino, los distintos Microcontroladores incorporados en las placas, pertenecen a la misma “familia tecnológica”, Por lo que el f i funcionamiento en realidad es bastante parecido entre sí. Concretamente, i lid d b id í C todos los Microcontroladores son de tipo AVR, una arquitectura de Microcontroladores desarrollada y fabricada por la empresa Atmel.
El diseño Hardware de la placa Arduino está inspirado originalmente en otra placa de Hardware libre preexistente la placa Wiring la cual surgió en 2003 placa de Hardware libre preexistente, la placa Wiring, la cual surgió en 2003, como proyecto personal de Hernando Barragán, estudiante por aquel entonces del Instituto de Diseño de Ivrea (lugar donde surgió en 2005 precisamente la placa Arduino). Aquí los estudiantes se dedicaban a experimentar con la interacción entre humanos y diferentes dispositivos (muchos de ellos basados en microcontroladores). microcontroladores).
Arduino apareció por la necesidad de contar con un dispositivo para utilizar en las aulas que fuera de bajo costo, 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 empezar de cero. La idea original fue, pues, fabricar la placa para uso interno de la escuela. Sin embargo, 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 la posibilidad de participar en la evolución del proyecto, proponer mejoras y sugerencias y mantenerlo “vivo”. Y así ha sido: la colaboración de muchísima gente ha hecho que Arduino poco a poco haya llegado a ser lo que es actualmente: 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 l E la Escuela de Artes y Comunicación de la Universidad de Mälmo, Suecia), l d At C i ió d l U i id d d Mäl S i ) 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 (p ) y (responsable de empresa fabricante de los prototipos de las placas)
Aunque en realidad Arduino es tres cosas: 1. Una placa de Hardware libre. 2. Un Software (entorno de desarrollo), gratis, libre y multiplataforma. 3. Un lenguaje de programación libre
http://www.arduino.cc
1) Un Hardware libre El hardware libre (también llamado “open‐source” o “de fuente abierta”) comparte muchos de los principios y metodologías del software libre En comparte muchos de los principios y metodologías del software libre. En particular, el hardware libre permite que la gente pueda estudiarlo para entender su funcionamiento, modificarlo, reutilizarlo, mejorarlo y compartir dichos cambios. Para conseguir esto, la comunidad ha de poder tener acceso a los ficheros esquemáticos del diseño del hardware en cuestión (que son ficheros de tipo CAD). Estos ficheros detallan toda la información necesaria para que cualquier persona con los materiales, herramientas y conocimientos adecuados pueda reconstruir dicho hardware por su pueda reconstruir dicho hardware por su cuenta sin problemas, ya que consultando estos ficheros se puede conocer qué componentes individuales integran el hardware y qué interconexiones existen entre cada uno de ellos.
La placa Arduino es hardware libre porque sus ficheros esquemáticos están disponibles para descargar de la página web del proyecto con la licencia Creative Commons Attribution Share‐Alike (http://es.creativecommons.org/licencia), la cual es una licencia libre que permite realizar trabajos derivados tanto cual es una licencia libre que permite realizar trabajos derivados tanto personales como comerciales (siempre que estos den crédito a Arduino y publiquen sus diseños bajo la misma licencia). Así pues, uno mismo se puede construir su propia placa Arduino “a mano”. No obstante, lo más normal es comprarlas de un distribuidor ya preensambladas y listas para usar; en ese caso, lógicamente, la placa Arduino, aunque sea libre, no puede ser gratuita, ya que es un objeto físico y su fabricación cuesta dinero.
A diferencia del mundo del software libre, donde el ecosistema de licencias libres es muy rico y variado, en el ámbito del hardware todavía no existen prácticamente licencias específicamente de hardware libre, ya que el concepto de “hardware concepto de hardware libre libre” es relativamente nuevo. De hecho, hasta hace es relativamente nuevo De hecho hasta hace poco no existía un consenso generalizado en su definición. Para empezar a remediar esta situación, en el año 2010 surgió el proyecto OSHD (http://freedomdefined.org/OSHW), el cual pretende establecer una colección de principios que ayuden a identificar como “hardware libre” un producto físico. OSHD no es una licencia (es decir, un contrato legal), sino una declaración de intenciones (es decir, una lista general de normas y de características) aplicable a cualquier artefacto físico para que pueda ser características) aplicable a cualquier artefacto físico para que pueda ser considerado libre. El objetivo de la OSHD (en cuya redacción ha participado gente relacionada con el proyecto Arduino, entre otros) es ofrecer un marco de referencia donde se respete por un lado la libertad de los creadores para controlar su propia tecnología y al mismo tiempo se establezcan los t l i t l í l i ti t bl l mecanismos adecuados para compartir el conocimiento y fomentar el comercio a través del intercambio abierto de diseños.
2) Software Libre ) En párrafos anteriores hemos comentado que Arduino es una placa dehardware libre” y también “un entorno y lenguaje de programación (es d i decir, software) libre”. ¿Pero qué significa aquí la palabra “libre” ft ) lib ” ¿P é i ifi íl l b “lib ” exactamente? Según la Free Software Foundation (http://www.fsf.org), organización encargada de fomentar el uso y desarrollo del software libre a nivel mundial, un software para ser considerado libre ha de ofrecer a cualquier persona u organización cuatro libertades básicas e imprescindibles: Libertad 0: la libertad de usar el programa con cualquier propósito y en Libertad 0: la libertad de usar el programa con cualquier propósito y en cualquier sistema informático. Libertad 1: la libertad de estudiar cómo funciona internamente el programa, y adaptarlo a las necesidades particulares. El acceso al código fuente es un requisito previo para esto. Libertad 2: la libertad de distribuir copias. Libertad 3: la libertad de mejorar el programa y hacer públicas las mejoras a los demás de modo que toda la comunidad se beneficie El acceso al código los demás, de modo que toda la comunidad se beneficie. El acceso al código fuente es un requisito previo para esto.
Un programa es software libre si los usuarios tienen todas estas libertades. Así pues, el software libre es aquel software que da a los usuarios la libertad de poder ejecutarlo, copiarlo y distribuirlo (a cualquiera y a cualquier lugar), estudiarlo cambiarlo y mejorarlo sin tener que pedir ni pagar permisos al estudiarlo, cambiarlo y mejorarlo, sin tener que pedir ni pagar permisos al desarrollador original ni a ninguna otra entidad específica. La distribución de las copias puede ser con o sin modificaciones propias, y atención, puede ser gratis ¡o no!: el "software libre" es un asunto de libertad, no de precio. Para que un programa sea considerado libre a efectos legales ha de someterse a algún tipo de licencia de distribución, entre las cuales se encuentran la licencia GPL (General Public License), o la LGPL, entre otras. El encuentran la licencia GPL (General Public License), o la LGPL, entre otras. El tema de las diferentes licencias es un poco complicado: hay muchas y con muchas cláusulas. Para saber más sobre este tema, se puede consultar http://www.opensource.org/licenses/category , donde está disponible el t t fi i l i i l d l li texto oficial original de las licencias más importantes. i á i t t Ejemplos de software libre hay muchos: el kernel Linux, el navegador Firefox, la suite ofimática LibreOffice, el reproductor multimedia VLC, etc.
El software Arduino es software libre porque se publica con una combinación de la licencia GPL (para el entorno visual de programación propiamente dicho) y la licencia LGPL (para los códigos fuente de gestión y control del microcontrolador a nivel más interno). La consecuencia de esto es, en pocas a nivel más interno) La consecuencia de esto es en pocas palabras, que cualquier persona que quiera (y sepa), puede formar parte del desarrollo del software Arduino y contribuir así a mejorar dicho software, aportando nuevas características, sugiriendo ideas de nuevas funcionalidades, compartiendo soluciones a posibles errores existentes, etc. Esta manera de funcionar provoca la creación espontánea de una comunidad de personas que colaboran mutuamente a través de Internet, y consigue que el software Arduino evolucione según lo que la propia comunidad decida. el software Arduino evolucione según lo que la propia comunidad decida.
El encapsulado del microcontrolador El encapsulado del microcontrolador Existen varios tipos de placas Arduino, cada una con características específicas q que hay que conocer para poder elegir el modelo que más nos convenga según yq p p g q g g el caso. No obstante, existe un modelo “estándar” de placa, que es el más utilizado en la generación y prueba de la mayoría de los proyectos: la placa 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 Para esta el modelo actual se suele llamar UNO Rev3 o simplemente UNO R3. Para esta, así como para otras placas más, existen dos diferentes tipos de encapsulados del microcontrolador con sus distintas características: los encapsulados DIP y los encapsulados SMD.
Placa Arduino UNO R3 Convencional (DIP)
Placa Arduino UNO R3 SMD
La única diferencia entre ambas placas es el encapsulado físico del microcontrolador incorporado: ambas tienen el mismo modelo, pero la placa convencional lo lleva montado en formato DIP (“Dual In‐line Package”) y la placa SMD lo lleva en formato SMD (“Surface Mount Device”). Una diferencia importante entre el formato SMD y el DIP es que el primero está soldado a la superficie de la placa (mediante una tecnología llamada precisamente “de montaje superficial” –en inglés, SMT, de ”surface mount technology” –), mientras que el segundo está conectado a la placa mediante una serie de patillas metálicas (las cuales son, de hecho, las patillas de E/S del microcontrolador) que se pueden separar fácilmente y que permiten la substitución del microcontrolador por otro si fuera necesario. En la práctica, substitución del microcontrolador por otro si fuera necesario. En la práctica, esto no nos debería importar demasiado a no ser que deseemos separar y reutilizar el microcontrolador de nuestra placa en otras placas o montajes; en ese caso, deberíamos optar por el formato DIP.
El modelo del microcontrolador El microcontrolador que lleva la placa Arduino UNO es el modelo El microcontrolador que lleva la placa Arduino UNO es el modelo ATmega328P de la marca Atmel. La “P” del final significa que este chip incorpora la tecnología “Picopower” (propietaria de Atmel), la cual permite un consumo eléctrico sensiblemente menor comparándolo con el modelo equivalente sin “Picopower”, el Atmega328 (sin la “P”). De todas formas, aunque el ATmega328P pueda trabajar a un voltaje menor y consumir menos corriente que el Atmega328 (especialmente en los modos de hibernación), ambos modelos son funcionalmente idénticos ambos modelos son funcionalmente idénticos. Al igual que ocurre con el resto de microcontroladores usados en otras placas Arduino, el ATmega328P tiene una arquitectura de tipo AVR, arquitectura desarrollada por Atmel i d ll d l y en cierta medida “competencia” de i did “ i ”d otras arquitecturas como por ejemplo la PIC del fabricante Microchip. Más concretamente, el ATmega328P pertenece a la subfamilia de microcontroladores “megaAVR”. Otras subfamilias de la arquitectura AVR son g q la “tinyAVR” (cuyos microcontroladores son más limitados y se identifican con el nombre de ATtiny) y la “XMEGA” (cuyos microcontroladores son más capaces y se identifican con el nombre de Atxmega)
Microcontrolador AT328P
¿QUÉ OTRAS CARACTERÍSTICAS TIENE LA PLACA ARDUINO UNO? L l La placa Arduino UNO, aparte del microcontrolador que incorpora, tiene A d i UNO t d l i t l d i ti otras características interesantes a repasar: La alimentación El voltaje de funcionamiento de la placa Arduino (incluyendo el microcontrolador y el resto de componentes) es de 5 V. Podemos obtener esta alimentación eléctrica de varias maneras: 1) Conectando la placa Arduino a una fuente externa, tal como un adaptador AC/DC o una pila. Para el primer caso, la placa dispone de un zócalo donde se puede enchufar una clavija de 2,1 milímetros de tipo “jack”. Para el segundo, los cables salientes de los bornes de la pila se pueden conectar a los pines los cables salientes de los bornes de la pila se pueden conectar a los pines‐ hembra marcados como “Vin” y “Gnd” (positivo y negativo respectivamente) en la zona de la placa marcada con la etiqueta “POWER”. En ambos casos, la placa está preparada en teoría para recibir una En ambos casos la placa está preparada en teoría para recibir una alimentación de 6 a 20 voltios, aunque, realmente, el rango recomendado de voltaje de entrada (teniendo en cuenta el deseo de obtener una cierta estabilidad y seguridad eléctricas en nuestros circuitos) es menor: de 7 a 12 voltios En cualquier caso este voltaje de entrada ofrecido por la fuente voltios. En cualquier caso, este voltaje de entrada ofrecido por la fuente externa siempre es rebajado a los 5 V de trabajo mediante un circuito regulador de tensión que ya viene incorporado dentro de la placa.
2) Conectando la placa Arduino a nuestro computador mediante un cable USB. 2) C t d l l Ad i t t d di t bl USB Para ello, la placa dispone de un conector USB hembra de tipo B. La alimentación recibida de esta manera está regulada permanentemente a los 5 V de trabajo y ofrece un máximo de hasta 500 mA de corriente (por lo tanto, la potencia consumida por la placa es en ese caso de unos 2,5 W). Si en algún momento por id l l d 2 5 W) Si l ú t el conector USB pasa más intensidad de la deseable, la placa Arduino está protegida mediante un polifusible reseteable que automáticamente rompe la conexión hasta que las condiciones eléctricas vuelven a la normalidad. Una consec encia de esta protección contra posibles picos de corriente es q e la consecuencia de esta protección contra posibles picos de corriente es que la intensidad de corriente recibida a través de USB puede no ser suficiente para proyectos que contengan componentes tales como motores, solenoides o matrices de LEDs, los cuales consumen mucha potencia.
Si utilizamos una pila como alimentación externa, una ideal sería la de 9 V Si utilizamos una pila como alimentación externa una ideal sería la de 9 V (está dentro del rango recomendado de 7 a 12 voltios), y si se utiliza un adaptador AC/DC, se recomienda el uso de uno con las siguientes características: El voltaje de salida ofrecido ha de ser de 9 a 12 V DC. En realidad, el circuito regulador que lleva incorporado la placa Arduino es capaz de manejar voltajes de salida (de entrada para la placa) de hasta 20 V, así que en teoría voltajes de salida (de entrada para la placa) de hasta 20 V, así que en teoría se podrían utilizar adaptadores AC/DC que generen una salida de 20 V DC. No obstante, esta no es una buena idea porque se pierde la mayoría del voltaje en forma de calor (lo cual es terriblemente ineficiente) y además puede provocar el sobrecalentamiento del regulador, y como consecuencia d l b l i d l l d i dañar la placa. La intensidad de corriente ofrecida ha de ser de 250 mA (o más). Si ( ) conectamos a nuestra placa Arduino muchos componentes o unos pocos pero consumidores de mucha energía (como por ejemplo una matriz de LEDs, una tarjeta SD o un motor) el adaptador debería suministrar al menos 500 mA o incluso 1 A. De esta manera nos aseguraremos de que tenemos 500 mA o incluso 1 A De esta manera nos aseguraremos de que tenemos suficiente corriente para que cada componente pueda funcionar de forma Fiable.
//Programa 1 (LED1) //Un LED conectado al pin 9 (digital), parpadeará int numpin = 9; // Pin digital al que conectamos el LED //(en realidad es un valor a numpin pero //(en realidad es un valor a numpin, pero // después será después el número de pin digital void setup() { pinMode(numpin, OUTPUT); // Configración // del pin 9 como salida } void loop() { digitalWrite(numpin, HIGH); // Activamos el pin 9 (+5V) delay(1000); // Esperamos un segundo (1000ms) di it lW it ( digitalWrite(numpin, LOW); // Apagamos el pin 9 (0V) i LOW) // A l i 9 (0V) delay(500); // Esperamos un segundo (500 ms)
}
//Programa 2 (LED 2) //Dos LEDs conectados a 9 y 3 (terminales digitales, con PWM), parpadearán //d //de manera alternada lt d int numPin=9; //Pin digital 9 int numPin1=3; //Pin digital 3 void setup() { pinMode(numPin,OUTPUT); //Configuración del Pin como salida pinMode(numPin1 OUTPUT) //Configuración del Pin como salida pinMode(numPin1,OUTPUT); //Configuración del Pin como salida } void loop() { digitalWrite(numPin,HIGH); //Activa el pin a +5V delay(1000); //Espera 1 segundo ((1000 ms) digitalWrite(numPin,LOW); //Apaga el pin delay(500); delay(500); //Espera medio segundo (500 ms) //Espera medio segundo (500 ms) digitalWrite(numPin1,HIGH); //Activa el pin a +5V delay(500); //Espera 1 segundo ((1000 ms) digitalWrite(numPin1 LOW); //Apaga el pin digitalWrite(numPin1,LOW); //Apaga el pin delay(1000); //Espera medio segundo (500 ms) }