Logo Studenta

Laboratorio 2-ARQUITECTURA DE COMPUTADORAS-2020-II

¡Este material tiene más páginas!

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

Continuar navegando