Arduino 1

Arduino uno primeros pasosDescripción completa

Views 142 Downloads 13 File size 446KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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) }