SISTEMAS EMBEBIDOS Los sistemas embebidos son son arte arte cent centra rall de de est este e com com le o mun mundo do interconectado del Internet de las cosas y con su inteligencia computacional conformada de hardware y software, y software, que cumple con tareas determinadas desde el diseño, el diseño, ejecutan en tiempo real tareas que hacen que la inteligencia n egr egra a a en c rcu os se mu p qu que a a a. as pos a es son enormes. No participar en este avance tecnológico sería un error grave.
SISTEMAS EMBEBIDOS Los sistemas embebidos son son arte arte cent centra rall de de est este e com com le o mun mundo do interconectado del Internet de las cosas y con su inteligencia computacional conformada de hardware y software, y software, que cumple con tareas determinadas desde el diseño, el diseño, ejecutan en tiempo real tareas que hacen que la inteligencia n egr egra a a en c rcu os se mu p qu que a a a. as pos a es son 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 p es avances en eren es campos e conoc m en o, en re os que destacan la electrónica, comunicaciones y la computación.
Al principio, los diseñadores en electrónica resolvían los problemas “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 perm ten rea zar se c as can en com nac ona es o secuenc a es (Mandado y Mandado, 2012, p. 420).
La rinci al desventa a odría ser la inflexibilidad ue haría ue el hardware 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 .
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 , 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, 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 ue marcó una nueva era en el diseño de los sistemas electrónicos. Por este motivo muchos diseñadores marcan el origen de los sistemas embebidos en 1971 con la creación del microprocesador 4004.
‐ n as mas os ca as as par es e ar ware y so ware 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 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.
s , un s ema m e o o n egra o pue e cons erarse como un s s ema 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 ó 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 , implementarse en un solo programa.
n rea a os s s emas em e os comenzaron a u zarse an es e ser 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 embebidos, se pueden distinguir cuatro características fundamentales: • Hardware (Embedded hardware) • Inteligencia computacional • Ejecución de una o varias tareas en tiempo real (el sistema es predecible y determinista)
Es una placa hardware PCB (Printed Circuit Board) basada en , . 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, , , 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 unc onam ento en rea a es astante parec o entre s . oncretamente, 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 , , , 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 .
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 . , , 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 osibilidad de artici ar en la evolución del ro ecto ro oner me oras 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 a scue a e r es y omun cac n e a n vers a e mo, uec a , 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)
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”) . 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 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 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 “ ” . , 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 a licable a cual uier artefacto físico ara ue ueda 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 con ro ar su prop a ecno og a y a m smo empo se es a ezcan os 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 ec r, so ware re”. ero qu s gn ca aqu a pa a ra re” 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:
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 , 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), , , 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 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 ex o o c a or g na e as cenc as m s mpor an es. 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 . , 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 se ún lo ue la ro ia comunidad decida.
Existen varios tipos de placas Arduino, cada una con características específicas ue ha ue conocer ara oder ele ir el modelo ue más nos conven a se ún 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 e mo e o ac ua se sue e amar ev o s mp emen e . ara es a, 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 or otro si fuera necesario. En la rá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 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), . Al igual que ocurre con el resto de microcontroladores usados en otras placas Arduino, el ATmega328P tiene una arquitectura de tipo AVR, arquitectura esarro a a por Atme y en cierta m e i a competencia e otras arquitecturas como por ejemplo la PIC del fabricante Microchip. Más concretamente, el ATmega328P pertenece a la subfamilia de microcontroladores “me aAVR”. Otras subfamilias de la ar uitectura AVR son 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? a p aca r u no , aparte e m crocontro a or que ncorpora, t ene 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, os ca es sa en es e os ornes e a p a se pue en conec ar a os p nes‐ hembra marcados como “Vin” y “Gnd” (positivo y negativo respectivamente) en la zona de la placa marcada con la etiqueta “POWER”. , 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 . , 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.
onec an o a p aca r u no a nues ro compu a or me an e un ca e
.
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 consum a por a p aca es en ese caso e unos , . en a g n momen o por 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 consecuenc a e es a pro ecc n con ra pos es p cos e corr en e es que a 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.
, (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 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 pue e provocar e so reca entam ento e regu a or, y como consecuenc a 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 o u o . o u o u o 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 , // 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) g a r e nump n, ; pagamos e p n delay(500); // Esperamos un segundo (500 ms)
}