Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 1 UNIVERSIDAD NACIONAL DE LA AMAZONIA PERUANA FACULTAD DE INGENIERIA DE SISTEMAS E INFORMATICA LABORATORIO DE ELECTRONICA DIGITAL GUIA - INFORME Nº 2 CURSO : ARQUITECTURA DE COMPUTADORAS TEMA : Extendiendo Arduino con Librerías PROFESOR : GRUPO : ALUMNO : CODIGO : NOTA: FECHA EXPE.: SEMEST. ACADÉ. 2020 - I Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 2 2do LABORATORIO Tema: Extendiendo Arduino con Librerías Objetivo: Hacer que el alumno aprenda la extensión de la funcionalidad del Arduino mediante el uso de librerías de software externas o tarjetas de extensión de hardware denominadas mochilas o shields. Material y Equipo: Diodos LED Resistencias Un Protoboard Cablecitos de Conexión Una Tarjeta Arduino Uno Cable USB I. INTRODUCCIÓN En los laboratorios anteriores se mostró lo que Arduino puede llegar a hacer y se construyeron algunos proyectos básicos que demostraron sus posibilidades más elementales. Sin embargo, el Arduino es capaz de hacer mucho más y también puede extender su funcionalidad mediante el uso de librerías de software externas o tarjetas de expansión de hardware denominadas mochilas o shields. Por ejemplo, si estás construyendo un robot para evitar obstáculos que pueda detectar objetos en su camino y maniobrar alrededor de ellos, el Arduino sería una obvia elección. Existen librerías de software y shields de hardware disponibles para que nuestro Arduino controle motores, se conecte a Internet, se comunique a través de wifi o se relacione con otros Arduino a través de Xbee o bluetooth. En el mundo del software, una librería es una pieza de software que proporciona algún tipo de funcionalidad como escribir un texto en una pantalla LCD o el cálculo de la posición de un GPS mediante un sistema de navegación. En el mundo de Arduino, una librería es un trozo de código que incluimos en nuestro sketch y que proporciona funciones determinadas que, simplemente, llamamos cuando nos interesa. Por ejemplo, si vamos a utilizar un determinado sensor, podemos buscar si existe una librería asociada. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 3 En el caso de que la encontramos, podemos añadirla a nuestro programa y utilizar las funciones que ofrece para manejar dicho sensor. No tenemos que conocer cómo está hecha o programada, simplemente debemos saber qué funciones nos ofrece y como utilizarlas. Es lo mismo que saber conducir un coche, no estamos obligados a entender el funcionamiento del motor o cómo es capaz de moverse. Algunas librerías funcionan por si mismas, es decir, incluyéndolas directamente en nuestro programa; otras precisan de un hardware adicional para ser utilizadas. Normalmente, cuando adquirimos una shield nueva para, por ejemplo, controlar un servomotor, nos descargamos la librería asociada que se ocupa de manejar este hardware, facilitándonos mucho el trabajo ya que nos despreocupamos de la comunicación entre dicha shield y el Arduino. De esta manera, solo nos centramos en lo que es nuestro propio código. Este tipo de librerías y shields las abordaremos más tarde. Ahora nos centraremos en las librerías propias de Arduino que se catalogan en tres tipos: • Librería core. • Librería estándar. • Librería añadidas o contributivas. 1.1.- LIBRERÍA CORE La librería principal o core esta proporcionada con el IDE de Arduino y es fundamental para los usuarios principales como para los más experimentados. Oculta gran parte de la complejidad que tradicionalmente supone el trabajar con un microcontrolador. La mayoría de los proyectos de Arduino leen datos en los pines de entrada y escriben datos en los pines de salida. La librería core hace que estas tareas comunes sean sencillas de utilizar. Por ejemplo, para leer el valor de una patilla digital, solo tienes que utilizar la función digitalRead. Si recordamos los proyectos en que utilizábamos el altavoz, usábamos la función tonel() para producir sonidos de lo más variado. Lo mismo pasa con la función serial() que nos permitían interactuar con el programa monitor sin excesiva dificultad. Piense por un momento si tuvieras que “ocuparte” en escribir el programa sin esa librería. 1.2.- LIBRERÍA ESTÁNDAR Cuando haya descargado e instalado el IDE de Arduino observarás que algunas librerías llamadas estándar fueron incluidas con la instalación. Las bibliotecas estándares son las que Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 4 el equipo de desarrollo Arduino pensó que eran necesarias para muchas personas en sus propios proyectos. Para utilizar las librerías estándar, tienes que incluirlas explícitamente en tus sketchs. Para ello, es necesario agregar una sentencia include en la parte superior de tu programa. Por ejemplo, si quieres incluir la librería LiquidCrystal, que se utiliza para mostrar datos sobre una pantalla LCD, tienes que añadir lo siguiente al principio de tu sketch: #include <LiquidCrystal.h> El nombre de la librería está delimitado por paréntesis angulares y, además, la linea no termina con un punto y coma(;) como es usual. Se darán cuenta de que todas las librerías que forman parte del core de Arduino llevan la extensión h. Las librerías estándar proporcionadas hasta el momento por Arduino son las siguientes • Librerías de testeo ArduinoTestSuite. • Librerías EEPROM. • Librería SD. • Librería Ethernet. • Librería Firmata. • Librería LiquidCrystal. • Librería Servo. • Librería Wire. • Librería SoftwareSerial No voy a explicar con detalle cada una de las librerías arriba expuestas porque sería muy largo y bastante tedioso. Simplemente, mostraré para lo que vale cada una. En el futuro, cuando desees desarrollar un proyecto con una tarjeta SD para almacenar datos, podrás acordarte de que «algo había» para controlar esto. Buscará sen el IDE del Arduino (tal como se muestra en la Figura 1) y verás que existe una librería llamada: SD library. Entonces, le echarás un vistazo a la documentación de la librería que está en la web oficial de Arduino y sabrás por dónde empezar. Librería de testeo ArduinoTestSuit: Es relativamente nueva, pero va a ser esencial para el futuro de desarrollo de Arduino. La librería ArduinoTestSuit proporciona métodos Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 5 estándar y funciones que se pueden utilizar para probar tus programas antes de subirlos a la placa. Esto asegura que tu código funcionará como se esperaba antes de usarlo con el mundo real. Aún está en fase de desarrollo. Figura 1.- Librerías incluidas en Arduino Librería EEPROM: Es un tipo de memoria programable eléctricamente que almacena datos, incluso cuando el microcontrolador se apaga. La cantidad de EEPROM en una placa Arduino depende del microcontrolador. En el Arduino UNO es de 1024 bytes. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 6 Si necesitamos más memoria no volátil, podemos optar por adquirir un Arduino más potente, o bien, utilizar una memoria externa, comoveremos más adelante. La librería EEPROM del Arduino proporciona dos funciones: leer y escribir. Tabla 1.- Funciones del EEPROM Librería SD: Sirve para almacenar gran cantidad de datos como, por ejemplo, los registrados desde un GPS o en un servidor web basado en Arduino. Las tarjetas SD(Secure Digital) presentan un formato de tarjeta de memoria inventado por Panasonic. Se utiliza en dispositivos portátiles tales como cámaras fotográficas digitales, PDA, teléfonos móviles, computadoras portátiles e incluso videoconsolas (Figura 2). Figura 2.- Memorias SD William Greiman escribió una librería para Arduino llamada SdFat que soporta el FAT16 y FAT32 (sistemas de archivos) en las tarjetas SD. Esta librería ofrece una amplia gama de Función Descripción Read Lee un byte almacenado en la memoria Write Escribe un byte en la memoria Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 7 funciones: crear, borrar archivos y directorios, y la realización de formateo básico. En la tabla 2 se muestra las funciones que contiene esta librería. Arduino utiliza un bus de interfaz periférico llamado: SPI para comunicarse con la tarjeta SD. Utiliza los pines digitales 11,12 y 13 en un Arduino UNO. Es importante que tengas en cuenta que antes de que una tarjeta SD puedas utilizarla con tu Arduino, primero debes formatearla (FAT16 o FAT32) usando tu PC y un lector de tarjetas. Tabla 2.- Funciones de la Librería SD Sivas a trabajar con las funciones relativas a ficheros, es conveniente que te mires cómo se utilizan los ficheros en lenguaje C. En la red Librería Ethernet: La librería Ethernet simplifica la pila TCP/IP por lo que es más fácil que un Arduino se comunique a través de internet o la red doméstica. La librería está Clase Función Descripción SD begin Inicializa la librería y tarjeta SD. exists Testea si existe un fichero o directorio en la tarjeta SD. mkdir Crea un directorio en la SD. rmdir Borra un directorio de la SD. remove Borra un fichero de la SD. open Abre un fichero de la SD. Archivos available Testea si se pueden leer algunos bytes de un fichero. close Cierra el fichero guardándolo en la SD. seek Busca una posición en un fichero. println Envía los datos a un archivo y añade nueva línea write Escribe datos a un fichero. read Lee un byte de un fichero. print Envía datos a un fichero abierto. size Retorna el tamaño de un fichero SD. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 8 diseñada para trabajar con tarjetas basadas en W5100 WIZnet. La última apuesta de Arduino es que Ethernet tenga soporte para tarjetas microSD, lo cual es muy atractivo para aplicaciones con registro de datos. La librería Ethernet es muy amplia y permite que el Arduino se configure como un servidor recibiendo las conexiones de clientes, o como un cliente que se conecta a servidores. Librería Firmata: Es un protocolo de comunicación que permite a un ordenador host utilizar el software para controlar un microcontrolador. La librería Firmata proporciona los protocolos de comunicación serie para comunicarse con el software en un ordenador host. Usando Firmata, un ordenador central puede controlar los dispositivos conectados a la placa Arduino tales como servos, motores y LED. • Librería LiquidCrystal: En los laboratorios anteriores hemos visto como el Arduino puede mostrar información utilizando el monitor serie del IDE. ¿Pero cómo hacemos cuando nuestro Arduino no está conectado al PC y deseamos mostrar datos o mensajes? Puede ser útil usar un pequeño LCD de 16 caracteres de 2 filas por dos columnas (16x2) para mostrar información. El punto central de todo esto es la librería LiquidCrystal que se utiliza para controlar la pantalla. La siguiente Tabla 3 enumera algunas funciones disponibles en la librería. Tabla 3.- Funciones de la Librería LiquidCrystal Librería Servo: Los servomotores son comúnmente utilizados en el mundo de radio- control, para controlar con precisión movimientos tales como los flaps en un avión, o el timón de dirección en un barco. Son ideales para proyectos que requieren un movimiento preciso, como los dispositivos que eviten obstáculos en los robots. Los veremos mása Función Descripción Begin Establece las dimensiones del LCD en filas y columnas. LiquidCrystal Inicializa la librería y configura los pines de conexión Print Envia datos al LCD. Clear Limpia la pantalla del LCD. SetCursor Posiciona el cursor en la pantalla del LCD. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 9 delante en profundidad cuando tratemos el tema de motores. De momento echemos un vistazo a algunas de las principales características de la librería Servo. La biblioteca Servo permite controlar hasta 12 servomotores en un Arduino UNO y la friolera de 48 en los Arduino MEGA. Tabla 4 Muestra las principales funciones que ofrece la biblioteca Servo. FUNCIÓN DESCRIPCIÓN attach Se conecta el servo a un pin Attached Cheque el servo conectado al pin Detach Desconecta el servo a un pin Read Lee el ángulo de un servo write Escribe el ángulo de un servo normal entre 0-180° y establece la velocidad de rotación en un servo de rotación continua WriteMicroseconds Escribe el valor, en microsegundos, en el servo, para ajustar el ángulo de su eje. Librería Stepper: Esta librería se usa para gobernar los motores llamados paso a paso. Los veremos con detenimiento más adelante. Brevemente, un motor paso a paso gira el eje en pasos concretos, siendo un paso definido como un ángulo mínimo de giro. La especificación de un motor paso a paso se da a menudo en pasos, por lo que un motor con una especificación de 200 pasos tomaría 200 pasos para girar una vuelta completa o 360º. A veces, la especificación se da en grados, lo que puede ser fácilmente convertida a pasos dividiendo una vuelta completa (360 grados) por el número de grados dado en la especificación. Por ejemplo, para un motor paso a paso con una especificación de 1,5 grados, el número de pasos por vuelta completa sería: 360 grados / 1,5 grados por paso = 240 pasos. Los motores paso a paso, por tanto, son una buena manera de controlar dispositivos de precisión. La librería Stepper le da el control del Arduino tanto en motores de tipo unipolares como bipolares. Con el uso de esta librería se puede establecer la velocidad de rotación del motor, el número de pasos a seguir y la dirección del motor. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 10 Tabla 5 Enumera las principales funciones proporcionadas por la librería Stepper. Función Descripción Stepper Inicializa la librería y establece el número de pasos por vuelta setSpeed Establece la velocidad a la que el motor debe girar, en revoluciones por minuto (RPM) Step Establece el número de pasos del motor que debe girar el motor. Los números positivos rotan en un sentido y los números negativos en el otro Librería SPI: El bus SPI (serial peripherical interface) es un bus de cuatro líneas sobre el cual se transmiten paquetes de información de 8 bits. Cada una de estas cuatro líneas lleva la información entre los diferentes dispositivos conectados al bus. Cada dispositivo conectado al bus puede actuar como transmisor y receptor al mismo tiempo, por lo que este tipo de comunicación serial es fllduplex. Dos de estas líneas trasfieren los datos (una en cada dirección) y la tercera línea es la del reloj. Algunos dispositivos solo pueden ser transmisores y otros solo receptores. Generalmente, un dispositivo que tramite datos también puede recibir. Presenta un protocolo de comunicaciones serie solo válido para distancias cortas. El bus SPI (Figura 3) se puede utilizar para comunicaciones entre una gran variedad de periféricos, incluyendo sensores de temperatura, sensores de presión, pantallas táctiles o controladores de videojuegos. De hecho, Arduino utiliza SPI para comunicarse con las tarjetas SD. El protocolo utiliza cuatro conexiones, tres de los cuales son comunes a cada dispositivo y una sirve para seleccionar el dispositivo esclavo. a) Bus SPI: Un Maestro y un Esclavo Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 11 b) Bus SPI: Un Maestro y tres Esclavos Figura 3.- Bus SPI. Dos Configuraciones del BUS Tabla 6.- Designación de sus conexiones con Arduino del Bis SPI Designación Pin Arduino Descripción MISO 11 Envío de datos al Maestro (Master) MOSI 12 Envío de datos al Esclavo (SLAVE) SCK 13 Señal de Reloj SS 10 Selección del Esclavo Tabla 7.- Funciones para interactuar con los periféricos SPI. Función Descripción begin Inicializa el bus SPI y establece los pines MOSI y SCK bajos y el pin SS alto end Deshabilita el bus SPI setBitOrder Establece el orden en el que los bits se cargan en el bus setClockDivider Ajusta el reloj divisor del SPI como una División del reloj del sistema. setDataMode Establece el modo de trabajo del SPI transfer Transfiere 1 byte al bus Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 12 Aunque esto parece complicado, haciendo buen uso de la hoja de datos del dispositivo SPI, haciendo las cosas por pasos y con cuidado, no deberían tener problemas para comunicar un Arduino con periféricos SPI. De todas maneras en el laboratorio 6 abordaremos este tipo de comunicación realizando una práctica suficientemente explicativa. Librería Wire: El bus 12C, comúnmente conocido como interfaz de dos hilos (TWI), se utiliza para comunicarse con una amplia gama de productos. Es perfecto para aplicaciones de registros, pantallas LCD, sensores ultrasónicos para mediciones de distancia y potenciómetros digitales cuya resistencia se puede leer o establecer de forma remota. Curiosamente, 12C también se utiliza en dispositivos de juego de Nintendo: la Wíí Motíon Plus y Wíí Nunchuk. Solo se necesitan dos pines para la interfaz del bus 12C. Tabla 8.- Pines Wire para el Arduino Uno Función Arduino SDA Pin 4 SCL Pin 5 Tabla 9.- se enumeran las principales funciones de la librería Wire Función Descripción begin Inicializa la librería requestFrom Solicita datos desde el maestro al esclavo beginTransmisison Comienza la transmisión Write Envía los datos del esclavo al maestro endTransmission Finaliza la transmisión En la Figura 4 puedes observar un sensor de temperatura I2C (DS1621) muy utilizado. Fíjense en los pines del integrado. Con la librería I2C, el Arduino puede actuar como maestro o como dispositivo esclavo. En la mayoría de los casos, el Arduino será el dispositivo maestro y va a interactuar con uno o más dispositivos como esclavos. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 13 Figura 4.- Chip Wire DS1621 EJERCICIO ENCARGADO Estudies el siguiente proyecto (Figura 5) y hagas las variaciones que quieras para adecuarlo a tus posibles necesidades. Se trata de utilizar el sensor digital de temperatura 12C DS1621 con nuestro Arduino. Las temperaturas medidas las va a mostrar en el monitor serie del IDE de Arduino. El proyecto está simulado con Proteus y se utiliza el instrumento: virtual terminal para emular el funcionamiento de la trasmisión serie. Puedes adelantarte al laboratorio 6 en la que se detalla el funcionamiento del bus de datos IDC. EXPERIENCIA N° 1: Arduino y el Sensor DS1621 /*Medida de Temperatura con arduino y ds1621*/ #include <Wire.h> #define DEV_ID 0x90 >>1 int LED=11; int temp = 0; void setu) { pinMode (LED, OUTPUT); Serial.begin(9600); Wire.begin(); Wire.beginTransmission(DEV_ID); // Conectamos el DS1621 Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 14 Wire.write(0xAC); //Accedemos a su Configuración Wire.write(0x02); //Establecemos una conversión continua de temperatura Wire.beginTransmission(DEV_ID); //Lo reseteamos Wire.write(0xEE); //Empieza a convertir Wire.endTransmission(); //Finalizamos la comunicación } void loop () { delay (1000); //Le damos un tiempo para convertir cada temperatura Wire.beginTransmission(DEV_ID); Wire.write(0xAA); Wire.endTransmission(); Wire.requestFrom(DEV_ID, 1); temp=Wire.read(); //Leemos el dato de temperatura Serial.print("Temperatura: "); Serial.print(temp); //Enviamos el dato al terminal serie Serial.println(" Grados Centigrados."); digitalWrite(LED,HIGH); delay(100); digitalWrite(LED,LOW); } Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 15 Figura 5.- Diagrama del Circuito del sensor de Temperatura Librería SoftwareSerial: Ya sabemos que nuestro Arduino utiliza los pines reservados 0,1 para comunicarse con nuestro PC. Sin embargo, muchos proyectos requieren el uso de más de un puerto serie. Los dispositivos GPS envían la posición y su estado a través de mensajes de serie y algunos LCD pueden ser conectados de esta misma manera. Un puerto serie se compone de solo dos conexiones: una RX para recibir mensajes y otra TX transmitir mensajes. Pero si tu Arduino necesita conectarse a más dispositivos serie como, por ejemplo, a la vez, a un GPS y una pantalla LCD serie, tenemos que optar por una de las dos opciones. 1. Comprar el más potente Arduino MEGA, que tiene cuatro puertos serie. 2. Utilizar la librería SoftwareSerial que se distribuye con el IDE del Arduino. La librería SoftwareSerial original solamente podía proporcionar un puerto serie a través de una emulación por software, limitando la velocidad a 9,600 baudios. Estas limitaciones fueron superadas por Mikal Hart con su librería NewSoftSerial. Al darse cuenta de las ventajas que incorporaba esta nueva librería, el equipo de desarrollo Arduino le cambió el nombre y la reemplazó en lugar a la de la obsoleta librería SoftwareSerial existente a mediados de 2011. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 16 Tabla 10.- Funciones que ofrece la librería SoftwareSerial Función Descripción begin Establece el puerto y la velocidad de transmisión available Cambia a ese puerto isListening Devuelve el puerto activo listen Escucha el puerto end Finaliza la conexión con el puerto read Lee datos del puerto write Escribe datos en el puerto Esta nueva librería por emulación software crea varias instancias de los puertos serie, lo que permite comunicarse hasta velocidades de 115,000 baudios. Pero toda esta funcionalidad adicional tiene un precio, ya que el Arduino solo puede escuchar o recibir datos en un puerto softwareo virtual serie a la vez. Cuando se utiliza esta librería con más de un puerto serie virtual, tendremos que pensar el orden en que se reciben los datos. Veamos un ejemplo: deseamos conectar tanto un GPS y un termómetro usando puerto serie virtuales. Los dispositivos GPS tienden a enviar sus datos en ráfagas y a intervalos de un segundo, por lo que empezaremos por escuchar el puerto virtual conectado al GPS y después de que haya terminado de enviar datos, escuchar el otro puerto serie virtual que está conectado al termómetro antes de reanudar la lectura del puerto donde estaba enchufado en GPS. Una posible solución sería la siguiente: EXPERIENCIA N° 2.- TRABAJANDO CON DOS PUERTOS SERIE VIRTUALES /* Dos dispositivos usando dos puertos serie por software */ /* Un GPS y un termómetro se ponen de acuerdo. */ #include <SoftwareSerial .h> SoftwareSerial gpsPort (2. 3); SoftwareSerial thermPort (4, 5); void setup () { gpsPort.begin (9600); GPS en el puerto 2,3. Termómetro en el puerto 4, 5 Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 17 thermPort.begin(9600); } Void loop ( ) { gpsPort.listen ( ); while (gpsPort.available ( ) > 0 ) { char inByte = gpsPort.read(); } thermPort.listen ( ); while (thermPort.available ( ) > 0) { Char inByte = thermPort.read ( ); } } 1.3. LIBRERÍAS CONTRIBUTIVAS Las librerías contribuidas son librerías aportadas por determinados usuarios del mundo Arduino, pero que no se distribuyen de forma estándar con el IDE. No son oficiales, Podemos encontrar muchas de estas librerías listadas en la web principal de Arduino. Algunas de ellas son extensiones de las librerías estándar, ofreciendo más funciones. Si con el tiempo estas mejoran, si se consideran adecuadas, el equipo de desarrollo de Arduino puede agregarlas a las librerías estándar (como sucedió con la NewSoftSeríal). Debido a que estas librerías no se distribuyen con el IDE, es necesario realizar varios pasos previos antes de poder utilizarlas. PASO1: Descargarla librería, por lo general es un archivo con extensión zip. PASO 2: Añadir la librería seleccionando: Programa > Incluir Librería >. Añadir librería (Figura 6). Busca y descarga de la web la librería del sensor de temperatura DHT22. Añádela a tu IDE. La utilizaremos más adelante. Escucha primero un puerto (GPS) y después el otro (Termómetro) Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 18 Figura 6.- Procedimiento para incluir librerías Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 19 1.4.- EXTENDIENDO EL ARDUINO CON SHIELDS Las shields o mochilas son otra gran manera de añadir funcionalidad a tu Arduino. ¿Deseas controlar un robotito por wifi? Consigue una shield wifi. ¿Quieres controlar motores sin añadir circuitería suelta? Adquiere un shield para motores. Existen muchos tipos de mochilas que permiten conectar el Arduino a una amplia gama de hardware y periféricos. Básicamente, las shields son placas de hardware conectables que se añaden sobre la propia placa de Arduino. Además, poseen la ventaja de que muchas de ellas son apilables o escalables, es decir, que se pueden disponer unas encima de otras para aumentar aún más si cabe la potencia de tu proyecto. Para sacar el máximo provecho de una shield, a menudo se necesita incorporar alguna librería asociada a esta, que por lo general, es descargable gratuitamente desde la web del propio fabricante. Por otra parte, las shields pueden venir completamente ensambladas o como un kit. Sino estás seguro de tus habilidades con el soldador, podría ser un buen momento para aprender. Sino te quieres complicar la vida y prefieres pagar un poco más, puedes adquirirlas completamente montadas y preparadas para enchufarlas directamente sobre el Arduino. Demos una vuelta por el mundillo de la shields, observando las que me parecen más relevantes: Shields de motores: Son generalmente adecuadas para controlar pequeños motores de corriente continua. Son lo suficientemente poderosas para alimentar pequeños robots o vehículos. También se pueden utilizar con motores paso a paso y servomotores. Existe una amplia variedad de versiones disponibles. Una muy extendida y documentada es la que distribuye la propia empresa de Arduino. Se denomina Arduino Motor Shield (Figura 7). Esta shield permite a una placa Arduino UNO, Arduino Mega 2560, Arduino Mega ADK y Arduino Leonardo, controlar cargas inductivas tales como, relés, solenoides, motores DC y motores paso a paso, es decir, es extremadamente útil para interactuar físicamente con otros equipos. Es capaz de controlar hasta dos motores DC de forma simultánea o un motor paso a paso. Como complemento, también disponemos de la Shield Módulos a Reles (Figura 8), que permite acoplar a una placa Arduino dos relés de forma que se puedan controlar de forma independiente equipos que exijan cierta carga (de hasta 10 A por canal). Existen de varias salidas y su precio es muy asequible. Ideales para controlar dispositivos que funcionen con tensión alterna, como lámparas, incandescentes, motores grandes, etc. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 20 Figura 7.- Arduino Motor Shield Figura 8.- Modulo Relé Shield para Arduino Shield ETHERNET: Si tienes pensado conectar tu Arduino a una red local o a la denominada: internet de las cosas, esta shield puede ser una buena opción. Encaja perfectamente sobre tu placa Arduino formando un conjunto sólido. Con esta placa (Figura 9) y la ayuda de la librería proporcionada, podremos realizar tanto un pequeño servidor web, como un cliente. La configuración de red se realiza mediante software, por lo que podremos adaptar con facilidad la placa a nuestra red local. Lo más destacado es que dispone Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 21 de un zócalo para tarjetas de memoria micro-SD para poder almacenar ficheros o servirlos como servidor web integrado. Figura 9.- Ethernet Shield W5100 La placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando el bus SPI. Ten en cuenta que el W5100 y la micro-SD comparten el bus SPI, por lo que solo uno de ellos puede ser utilizado a la vez. Si deseas utilizar ambos simultáneamente, debes tenerlo en cuenta al escribir tu código. Es importante notar que seguimos teniendo disponibles muchos de los pines de la placa Arduino que está debajo. Como siempre, es necesario examinar la documentación para averiguar qué pines son de exclusivo uso por la shield y cuáles están libre para nuestras aplicaciones. Por otra parte, si sus presupuesto es ajustado, puedes adquirir una variante mucho más barata llamada Ethernet Shield Vl.l que está basada en el chip ENC28J60 SPI Ethernet. Presenta menos funcionalidad, pero puede ser más que suficiente para la mayoría de sus proyectos. Shields wifi: Hoy en día todo el mundo habla de conectarse inalámbricamente a través de wifi. Arduino no podía ser la excepción. Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 22 La shield oficial distribuida por Arduino es bastante cara, pero de altas prestaciones.Denominada Wifi Shield SD (Figura 10), está realizada especialmente para que sea lo más hackeable posible y con librerías que pretenden hacer sencillo el paso de nuestros códigos desde la ethernet shield a esta nueva placa. Dispone de un zócalo para tarjetas de memoria microSD así como un conector propio mini USB para utilizarla sin necesidad de conectarla a una placa Arduino (actualizando el firmware). Soporta encriptaciones WEP y WPA2 y se conecta a la placa Arduino mediante SPI. Trabajaremos con ella más adelante. Figura 10.- Arduino WIFI Shield SD Shield Xbee: Hoy en día, el protocolo de comunicaciones XBee (variante más simple del protocolo ZigBee) es muy utilizado. Esta shield (Figura 11) permite conectar entre sí, de forma inalámbrica, múltiples placas Arduino. El rango operativo oscila entre 30 y 100 metros, dependiendo de las condiciones de transmisión. Está basado en el módulo Xbee de Maxstream y permite, entre otras cosas, el montaje de redes sensoriales (sensores inalámbricos). Disponemos además de una versión que incluye zócalo para tarjetas de memoria microSD. La utilizaremos, más adelante, en el laboratorio 7. Un detalle importante es si son compatibles, a nivel de zócalo, con los módulos Bluetooth Bee (Figura 12). Este es un pequeño módulo para transmitir datos de forma inalámbrica de un punto a Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 23 otro utilizando el protocolo Bluetooth. Por tanto, la shield XBee respeta los pines originales de los XBee por lo que se puede conectar directamente como sustituto. Estos módulos Bluetooth Bee tienen una antena incorporada que permite un alcance de unos 10 metros aproximadamente o hasta un máximo de 30 metros en espacio abiertos. Se comporta como un puerto serial y dispone de comandos AT para cambiar el baudrate. Figura 11.- Shield de comunicación con Modulo XBee Figura 12.- Bluetooth Bee Universidad Nacional de la Facultad de Ingeniería de Amazonia Peruana Sistemas e Informática 24 Shield GSM: Recientemente el equipo de Arduino ha sacado esta nueva mochila para descubrir el mundo de «Internet de las cosas». Esta shield GSM – GPRS (Figura 13) es capaz de enviar y recibir SMS, realizar y recibir llamadas de voz y de datos. El módulo utiliza el GPRS. Esta es la red inalámbrica de datos con la mayor cobertura en el mundo para conectarse a Internet. Es compatible con el Arduino UNO, Mega y Mega ADK. Con una pequeña modificación del software se puede utilizar con Arduino Leonardo. El módulo se entrega con una tarjeta SIM de la compañía Telefónica Digital donde se puede comprar un plan mundial de roaming para sus aplicaciones. Sin embargo, el módulo no está bloqueado y se puede utilizar con cualquier proveedor de telecomunicaciones, lo que le permite adquirir un plan y la tarjeta SIM de cualquier operador. Finalmente, cabe apuntar que existen multitud de mochilas diferentes, además de las arriba descritas. Les recomiendo que visiten www.bricogeek.com o www.sparkfun.com para hacerte una idea de las posibilidades que tienes para ampliar la potencia de tu Arduino. Figura 13.- Arduino GSM Shield 2
Compartir