UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
Proyecto de Fin de Carrera de Ingeniero Informático
REDES MALLADAS CON ARDUINO PARA EL
INTERNET DE LAS COSAS
FRANCISCO JAVIER GONZÁLEZ SÁIZ
Dirigido por: ANTONIO SOLANO TARROC
Supervisado por: RAQUEL DORMIDO CANTO y NATIVIDAD DURO CARRALERO
Curso: CURSO 2014-15
REDES MALLADAS CON ARDUINO PARA EL INTERNET DE LAS COSAS
Proyecto de Fin de Carrera de modalidad oferta específica
Realizado por: FRANCISCO JAVIER GONZÁLEZ SÁIZ
Dirigido por: ANTONIO SOLANO TARROC
Supervisado por: RAQUEL DORMIDO CANTO y NATIVIDAD DURO CARRALERO
Tribunal calificador:
Presidente: D./Da. ...................................................................................................................................
(firma)
Secretario: D./Da. ...................................................................................................................................
(firma)
Vocal: D./Da. ...........................................................................................................................................
(firma)
Fecha de lectura y defensa: ..................................................................................................................
Calificación: ............................................................................................................................................
RESUMEN
El proyecto forma parte un proyecto de tesis cuyo objetivo es aplicar las
ideas del Internet de las Cosas al mundo de las máquinas de vending,
dotándolas de conectividad y explorando todas las posibilidades que ofrece de
interacción con el usuario; utilizando para ello tecnologías de bajo coste Open
Source y Open Hardware.
El primer objetivo de este proyecto es el análisis de las diferentes
alternativas que nos ofrece el mercado para la intercomunicación “Machine to
machine”, entre las que podemos encontrar nrf24l01, Bluetooth, ZigBee, WIFI,
Ethernet.
Un segundo objetivo es la selección de una de las tecnologías
analizadas anteriormente para dotar a nuestra plataforma de la posibilidad de
ser usada en un entorno multi-máquina, con el fin de reducir los costes
hardware y de comunicaciones
Un tercer objetivo es la implementación de la tecnología seleccionada en
un proyecto con la finalidad de conocer si esta se adapta a las necesidades de
comunicaciones de la plataforma.
Esta obra está bajo una licencia Reconocimiento 3.0 España de Creative Commons.
Para ver una copia de esta licencia, visite: http://creativecommons.org/licenses/by-sa/3.0/es/ o
envíe una carta a Creative Commons, 171 Second Street, Suite 300, San Francisco, California
94105, USA.
LISTA DE PALABRAS CLAVE
Internet of Things, IOT, Arduino, Mega 2560, Wboard, GBoard, nrf24l01,
Bluetooth, Ethernet, Redes malladas, OSI, OpenCart, Scrum, Metodología Ágil,
Gateway, Cloud Computing, PaaS, SaaS, IaaS.
TÍTULO DEL PROYECTO EN INGLÉS
Mesh Network with Arduino for the Internet of Things.
ÍNDICE
RESUMEN ......................................................................................................... 5
LISTA DE PALABRAS CLAVE ......................................................................... 7
TÍTULO DEL PROYECTO EN INGLÉS ............................................................. 9
ÍNDICE ............................................................................................................. 11
LISTA DE FIGURAS Y TABLAS ..................................................................... 15
DESCRIPCIÓN DEL PROYECTO ................................................................... 19
1.
CONTEXTO .............................................................................. 23
2.
PLANIFICACIÓN DE TAREAS Y ACTIVIDADES .................... 31
2.1. Desarrollo ágil de software y SCRUM.................................... 31
2.1.1.
Desarrollo ágil de software .................................................................... 31
2.1.2.
Scrum .................................................................................................... 33
2.2. Planificación del trabajo ......................................................... 39
3.
INTRODUCCION A ARDUINO ................................................. 45
3.1. ¿Qué es arduino? .................................................................. 45
3.2. ¿Cómo se programa? ............................................................ 54
3.3. Ventajas y desventajas de Arduino ........................................ 57
4.
INTRODUCCION A REDES MALLADAS ................................. 61
4.1. Introducción ........................................................................... 61
4.2. Definición de Red Mallada ..................................................... 62
4.3. Características de las Redes Malladas .................................. 64
4.4. La Infraestructura de las redes malladas ............................... 66
5.
TECNOLOGIAS PROPUESTAS .............................................. 68
5.1. NRf24L01............................................................................... 68
5.2. Bluetooth LE .......................................................................... 69
5.3. ZigBee ................................................................................... 69
5.4. Wifi ......................................................................................... 70
6.
NIVELES DEL MODELO OSI ................................................... 75
6.1. Modelo de referencia ............................................................. 75
6.2. Nivel físico ............................................................................. 76
6.3. Nivel de enlace de datos........................................................ 78
6.4. Nivel de red ............................................................................ 82
6.5. Nivel de transporte ................................................................. 85
6.6. Nivel de sesión ...................................................................... 87
6.7. Nivel de presentación ............................................................ 88
6.8. Nivel de aplicación ................................................................. 90
7.
HARDWARE PARA ESTE PROYECTO................................... 93
7.1. Tarjeta Arduino Gboard Pro ................................................... 93
7.1.1.
Visión general........................................................................................ 93
7.1.2.
Especificaciones ................................................................................... 93
7.1.3.
Características eléctricas ...................................................................... 94
7.1.4.
Hardware ............................................................................................... 94
7.1.5.
Mapa de pines ....................................................................................... 95
7.1.6.
Indicadores ............................................................................................ 98
7.1.7.
Botones ................................................................................................. 99
7.1.8.
Conexión de alimentación y reset del SIM900 ...................................... 99
7.2. Tarjeta Arduino WBoard Pro ................................................ 100
7.2.1.
Visión general...................................................................................... 100
7.2.2.
Caracteristicas..................................................................................... 100
7.2.3.
Especificaciones. ................................................................................ 100
7.2.4.
Caracteristicas electricas .................................................................... 101
7.2.5.
Harware ............................................................................................... 101
7.2.6.
Mapa de pines ..................................................................................... 103
7.3. ESP8266.............................................................................. 105
7.3.1.
Visión general...................................................................................... 105
7.3.2.
Posibles Usos...................................................................................... 106
7.3.3.
Comandos AT ..................................................................................... 107
7.4. Wee Serial WIFI Module ...................................................... 109
7.5. NRF24L01 ........................................................................... 111
7.5.1.
Vision general...................................................................................... 111
7.5.2.
Rango de cobertura ............................................................................ 112
7.6. HM-10 .................................................................................. 114
7.7. DNFC ................................................................................... 117
7.8. FOCA ................................................................................... 118
8.
7.8.1.
Visión general...................................................................................... 119
7.8.2.
Caracteristicas básicas ....................................................................... 119
7.8.3.
Especificaciones ................................................................................. 119
SELECCIÓN DE TECNOLOGIA ............................................. 121
8.1. Motivos ................................................................................ 125
8.2. Alternativas viables .............................................................. 125
9.
CASOS DE USO ..................................................................... 127
9.1. Escenario multi-máquina, GPRS Gateway + Wifi Client ...... 127
9.1.1.
Contexto .............................................................................................. 127
9.1.2.
Análisis del escenario ......................................................................... 128
9.1.3.
Diseño, implementación y evaluación ................................................. 129
9.1.4.
Conclusión........................................................................................... 131
9.2. Escenario máquina individual Wifi Client ............................. 132
9.2.1.
Contexto .............................................................................................. 132
9.2.2.
Análisis del escenario ......................................................................... 133
9.2.3.
Diseño, implementación y evaluación ................................................. 134
9.2.4.
Conclusión........................................................................................... 137
10.
Trabajos futuros .................................................................... 139
11.
Conclusiones ......................................................................... 143
BIBLIOGRAFÍA ............................................................................................. 147
SIGLAS, ABREVIATURAS Y ACRÓNIMOS ................................................. 149
ANEXOS ........................................................................................................ 153
1.
API RestFull ........................................................................... 153
2.
Diagrama de conexión del cliente WIFI ............................... 159
3.
Diagrama de conexión de la pasarela GRPS-WIFI .............. 163
4.
Actualización del firmware del módulo ESP8266 ............... 165
5.
Comandos AT de módulo WIFI ESP8266 ............................ 171
6.
Comandos AT de módulo GPRS SIM900............................. 173
7.
Proceso de inicialización de un operador y una tienda ..... 177
LISTA DE FIGURAS Y TABLAS
FIGURA 1-1 innovación en ventas en máquinas de vending................. 24
FIGURA 1-2 Lógica de interfaces de openvend .................................... 25
FIGURA 1-3 Integrantes del proyecto .................................................... 26
FIGURA 2-1 Panel de tarjetas con trello ................................................ 40
FIGURA 2-2 Tarjeta de actividades trello .............................................. 41
FIGURA 3-1 Arduino MEGA .................................................................. 46
FIGURA 3-2 Tabla de modelos y caracteristicas de arduinos ............... 51
FIGURA 3-3 Arduino Micro .................................................................... 53
FIGURA 3-4 Arduino Yun ...................................................................... 53
FIGURA 3-5 Arduino LiLypad ................................................................ 53
FIGURA 3-6 arduino Nano..................................................................... 53
FIGURA 3-7 ENTORNO DE DESARROLLO ARDUINO ....................... 55
FIGURA 3-8 Interfaz de desarrollo de visual studio ............................... 56
FIGURA 3-9 Intellisense de Visual Studio 2013 .................................... 57
FIGURA 3-10 INTEL GALILEO CON PINES ARDUINO........................ 59
FIGURA 3-11 RASPBERRY PI MODELO 2B ........................................ 60
FIGURA 4-1 DIAGRAMA DE INFRAESTRUCTURA ............................. 67
FIGURA 8-1 PLACA GBOARD PRO ..................................................... 94
FIGURA 8-2 PLACA WBOARD PRO .................................................. 101
FIGURA 8-3 FOTO WBOARD PRO .................................................... 102
FIGURA 8-4 FOTO WBOARD PRO .................................................... 105
FIGURA 8-5 GOOGLE TENDENCIAS ESP8266 ................................ 105
FIGURA 8-6 WEE ESP8266 ................................................................ 109
FIGURA 8-7 IMAGEN NFR24l01 ......................................................... 111
FIGURA 8-8 HM-10 ............................................................................. 114
FIGURA 8-7 TAG DINAMICO NFC ..................................................... 117
FIGURA 8-10 IMAGEN FOCA v2.0 ..................................................... 118
FIGURA 8-11 TABLA ESPECIFICACIONES FOCA ............................ 119
FIGURA 9-1 ESCENARIO MULTIMáQUINA ....................................... 128
FIGURA 9-2 ESCENARIO MULTIMáQUINA ....................................... 129
FIGURA 9-3 Interfaz del programa hercules........................................ 131
FIGURA 9-2 ESCENARIO MáQUINA CONECTADA POR WIFI ......... 132
FIGURA 9-4 MAPA DE COBERTURA WIFI ........................................ 133
FIGURA 1-1 diagrama de conexion cliente wifi ................................... 159
FIGURA 2-1 diagrama de conexion GATEWAY GPRS WIFI .............. 164
FIGURA 2-1 PINES DEL ESP8266 ..................................................... 166
FIGURA 2-1 INTERFAZ DEL IDE ARDUINO PUERTO SERIAL ......... 167
FIGURA 2-3 INTERFAZ DEL ESP8266 FLASH DOWNLOAD ............ 168
FIGURA 2-4 INTERFAZ DEL ESP8266 FLASH DOWNLOAD ............ 169
FIGURA 2-4 INTERFAZ DEL IDE ARDUINO MOSTRANDO MAC ..... 170
FIGURA 4-1 DIAGRAMA DE COMANDOS AT ................................... 171
FIGURA 6-1 INTERFAZ DHC ENVIO APIKEY .................................... 178
FIGURA 6-1 INTERFAZ DHC ENVIO APIKEY .................................... 178
FIGURA 7-3 ALTA DE MáQUINA EN LA PLATAFORMA ................... 180
FIGURA 7-4 PROCESO DE COMPRA................................................ 183
FIGURA 7-5 OBTENCION DE UN TOKEN ......................................... 183
DESCRIPCIÓN DEL PROYECTO
A continuación se exponen los apartados que componen la memoria del
presente proyecto:
 El apartado “Contexto” proporciona una visión global del problema que
se quiere abordar y los objetivos que se persiguen en su realización.
 En “Planificación de tareas y actividades” se analiza la metodología
utilizada durante el desarrollo del proyecto, así como la planificación de
las tareas realizadas.
 En el apartado “Introducción a Arduino” se realiza una descripción de
esta plataforma. Se comienza definiendo qué es Arduino, el hardware,
su entorno de desarrollo, su lenguaje y cómo se puede expandir para
darle mayores prestaciones.
 En el apartado “Introducción a redes malladas” se detalla la arquitectura
de este tipo de redes, las diferentes topologías que se pueden dar:
estrella, anillo, malla, árbol, etc. así como las formas de intercambio de
paquetes y direccionamiento de los mismos entre los distintos nodos que
forman la red.
 En el apartado “Niveles OSI” se describen las características de cada
uno de los niveles del modelo OSI usado como referencia en la creación
de cualquier topología de red. Este modelo nos sirve de referencia para
describir todas las necesidades de nuestro sistema de comunicaciones:
niveles físicos y electrónicos, direccionamiento físico de los mensajes,
orden de distribución de las tramas, direccionamiento de los mensajes
entre los distintos dispositivos que conforman la red, reconstrucción de
los mensajes a partir del conjunto de datagramas recibidos y
presentación final de los datos recibidos en el otro extremo.
 En el apartado “Tecnologías propuestas” se definen las alternativas
evaluadas para la creación de una red mallada que permita la
interconexión de varios microcontroladores y el intercambio de mensajes
entre los mismos. Las opciones evaluadas son: nrf24l01, Bluetooth,
WIFI, Ethernet y ZigBee.
 En el apartado “Selección de Tecnología” se definen las características
básicas de cada una de las tecnologías evaluadas enfrentando éstas
entre sí, para tratar de evaluar las ventajas y desventajas que cada una
de ellas nos pueda aportar en la obtención de una solución al escenario
de intercomunicación de varias máquinas de vending.
 El apartado de “Hardware de este proyecto” está dedicado a cada uno
de los componentes electrónicos que se han usado o evaluado a lo largo
del proyecto. Las dos primeras secciones corresponden al detalle de las
dos placas compatibles
con
Arduino utilizadas.
Los siguientes
aparatados corresponden con todos los componentes que se conectan a
los Arduinos a modo de periféricos para añadir nuevas funcionalidades
como pueden ser comunicaciones o grabador de tarjetas nfc.
 En el siguiente apartado, “Casos de uso”, se abordan diferentes
problemas que se han resuelto durante el desarrollo del proyecto, tales
como: entorno multi-máquina en una misma ubicación compartiendo
infraestructura de comunicaciones y entorno de máquina individual con
conexión WIFI ya disponible.
 Los apartados “Conclusiones y Trabajos futuros” resumen el trabajo
realizado e indican las posibles líneas de trabajo futuras teniendo como
punto de partida el proyecto global al que pertenece este proyecto.
 En la sección de “Anexos” se incluye información útil para replicar los
prototipos construidos con diagramas de interconexión entre todos los
elementos del proyecto, También se incluye información necesaria para
actualizar los módulos WIFI ESP8266 que es necesario para que el
código entregado pueda funcionar. Los Anexos 4 y 6 corresponden a un
breve resumen de los comandos AT empleados por los módulos
SIM900 y ESP8266 usados para la comunicación GPRS y WIFI
respectivamente. Finalmente el último Anexo detalla todo el proceso de
inicialización manual del sistema que ayuda a comprender el proceso de
activación de un nuevo propietario en la plataforma, registro de una
máquina para ese propietario, inicialización de una máquina con el envío
del fichero DEX y configuración de los productos en los carriles de la
máquina.
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 22 de 185
Redes malladas con Arduino para el Internet de las cosas
1.
CONTEXTO
Este proyecto forma parte del trabajo de investigación de la tesis
"Building the Internet of Things of Vending Machines" propuesta por Antonio
Solano. Su objetivo es, "proporcionar a las PYMES que operan máquinas auto
expendedoras (máquinas de vending) soluciones tecnológicas asequibles que
permitan conectar sus máquinas a la Internet del futuro con el fin último de
mejorar su competitividad".
Con la evolución de "Internet de las Cosas" (IoT) los puntos de venta
desatendidos, máquinas de vending, se convierten en un "punto de presencia",
realizando comunicaciones M2M, mejorando la experiencia de compra de los
usuarios y obteniendo más información de su uso para las empresas
propietarias de estas máquinas.
Con ello las máquinas de vending se convertirían en experiencias
interactivas e inteligentes usando la computación en la nube y mejorarían la
percepción del usuario en la compra ofreciendo más servicios e información.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 23 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 1-1 INNOVACIÓN EN VENTAS EN MÁQUINAS DE VENDING
La tesis pretende construir una solución integral Cloud IaaS-PaaS-SaaS
de bajo coste para las PYMES de máquinas de vending, usando módulos M2M
para conectar las máquinas y software que permita transacciones de comercio
electrónico desde los móviles de los usuarios y facilite un entorno de gestión
de las máquinas para el operador de vending.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 24 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 1-2 LÓGICA DE INTERFACES DE OPENVEND
Un proyecto de esta complejidad y tamaño requiere un enfoque
multidisciplinar, ya que involucra diferentes campos de conocimiento bastante
diferentes entre sí, que varían desde la ubicua computación en la nube hasta el
acceso a nivel físico del teclado de la máquina de vending desde Arduino.
Esto ha hecho necesaria la participación de diferentes alumnos acogidos
a los distintos Proyectos de Fin de Carrera ofertados por el Departamento de
Informática y Automática que han estado dirigidos y coordinados por Antonio
Solano.
Como se puede apreciar en la figura 1-3 hay tres grandes campos de
actuación:
 Computación en la nube: como se verá a lo largo de esta memoria, la
simplicidad del proceso de compra que se busca para el usuario se
convierte en complejidad de trasfondo en la infraestructura necesaria.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 25 de 185
Redes malladas con Arduino para el Internet de las cosas
Hay gran número de servidores involucrados en el proceso muy
interrelacionados entre sí.
Para dar cabida a todos estos servidores, y teniendo presentes
también los requerimientos de disponibilidad y escalabilidad, se decidió
crear una capa IaaS sobre la que se despliegan todos los servicios. La
organización y gestión de esta capa, implementada utilizando la
aplicación de software libre OpenStack, ha sido responsabilidad de
Juan Miguel Sánchez y Rafael Alonso.
FIGURA 1-3 INTEGRANTES DEL PROYECTO
Proyecto Fin de Carrera - Ingeniería en Informática
Página 26 de 185
Redes malladas con Arduino para el Internet de las cosas
 Tiendas online: la interacción con el usuario se realiza a través de su
teléfono móvil o tablet desde donde selecciona los productos y realiza
los pagos. Para ello se ha optado por la utilización de la solución
software libre de tiendas online OpenCart cuyo diseño por módulos se
adapta perfectamente a las necesidades de este proyecto. Esta parte se
abordó principalmente en los proyectos de años anteriores realizados
por Víctor González, Iván Pérez y Nacho Mantero que entre otras cosas
abordaron los pagos online y el proceso de compra desde la Web App.
Un tercer proyecto, asignado a Francisco Javier García,
pertenecería también a esta parte mediante la interpretación de los
datos de telemetría enviados por la máquina de vending a la plataforma.
Durante el desarrollo de mi proyecto también han participado Luis
Miguel
dando
cobertura
a
las
mejoras
de
la
plataforma
en
infraestructura, proceso de compra y servidor Slim y Pedro Martínez con
el análisis Big Data de la información del sistema.
 Máquina de vending: aunque el usuario realiza las compras a través de
la Web App también necesita interactuar con la máquina de vending. Sin
embargo es imprescindible que esta interacción se limite al máximo:
simplemente acercar el teléfono móvil a la máquina y coger el producto
que ésta le entrega.
Todo esto se consigue interactuando con elementos físicos de la
máquina, tanto propios como añadidos: NFC para intercambiar datos
con su teléfono móvil, acceso al teclado de la máquina, etc.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 27 de 185
Redes malladas con Arduino para el Internet de las cosas
Por otro lado hay que realizar comunicaciones con los servidores
que se mencionaron anteriormente para comprobar qué producto ha
adquirido el usuario y si ha realizado o no el pago. El soporte para
realizar todas estas operaciones es Arduino, una plataforma de
hardware libre de bajo costo. Dado el gran número de tareas que recaen
sobre esta plataforma fuimos cinco los alumnos encargados de su
programación:
Patxi
Ballesteros,
Ángel
Cifuentes,
José
Daniel
Fernández, Ricardo Cárdenes y yo mismo.
Mi Proyecto se ha centrado en aumentar las posibilidades de
comunicación de la máquina con la plataforma, permitiendo compartir entre
varias máquinas con una ubicación cercana la conexión de acceso a datos
GPRS. Esto además nos llevó a plantear la opción de suprimir la conexión
acceso a datos GPRS y sustituirla por una conexión WIFI pudiéndose plantear
3 posibles escenarios:
 Máquina individual con conexión GPRS.
 Máquina individual con conexión WIFI:
 Conjunto de máquinas “tren de máquinas” en la que solo una tiene
acceso GPRS y genera un punto de acceso WIFI para las que están en
un entorno próximo.
En estos escenarios considerados, el principal objetivo es el de la
reducción de costes al propietario de la máquina, principalmente los costes
generados por el operador de telefonía. El escenario 2 podría ser usado por
Proyecto Fin de Carrera - Ingeniería en Informática
Página 28 de 185
Redes malladas con Arduino para el Internet de las cosas
máquinas que se encuentran en una ubicación con WIFI como podría ser una
máquina de tabaco en un bar. El propietario del bar ya tiene contratada una
línea de datos ADSL y no es necesario un alta nueva de una línea GPRS para
las comunicaciones de la máquina con la plataforma. En el tercer caso, cuando
tenemos varias máquinas próximas, una de bebidas frías, una de café, una de
snacks dulces y una de snacks salados, todas ellas compartirán una única
conexión de acceso datos GPRS.
Como parte inicial del proyecto se evaluaron diferentes alternativas que
nos permitieran la comunicación entre las distintas máquinas, para cada una de
las tecnologías planteadas se creó un proyecto piloto que nos permitiera
conocer las bondades y defectos de cada una de ellas.
De todas las soluciones que se plantearon tomamos la decisión de usar
WIFI. Al comenzar el proyecto no parecía ser la opción más posible debido a
su coste, pero justo en el momento de realizar el estudio apareció en el
mercado un nuevo componente, el ESP8266, que permitía conectarse a una
red WIFI y trabajar como punto de acceso con un coste 7 veces menor que el
resto de shields o componentes con la misma funcionalidad.
La aparición de este pequeño componente causó un gran revuelo en la
comunidad “maker” ya que por 4 euros se puede dotar a cualquier
microcontrolador de la posibilidad de conectarse a internet o de funcionar como
punto de acceso. Y que otros nodos bien sean ordenadores, teléfonos o tablets
se conecten a su red. Este componente ha proyectado el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 29 de 185
Redes malladas con Arduino para el Internet de las cosas
a niveles que eran insospechados hace tan solo unos meses. El auge ha sido
tal que ha sido esta misma comunidad la que generado nuevos firmwares para
el dispositivo, incluyendo nuevas funcionalidades que el fabricante no incorporó
inicialmente.
Los grandes retos del proyecto han consistido en el aprendizaje de la
plataforma Arduino, el uso de un lenguaje de programación de bajo nivel como
C++ (después de llevar varios años usando lenguajes de alto nivel), aprender
unos conceptos mínimos de electrónica necesarios para el proyecto y por
último, el más difícil, ha sido la integración de todos los módulos de una
plataforma construida como piezas aisladas y que funcionaban de manera
independiente pero que necesitábamos que llegasen a funcionar como una
única entidad.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 30 de 185
Redes malladas con Arduino para el Internet de las cosas
2.
PLANIFICACIÓN DE TAREAS Y ACTIVIDADES
2.1. DESARROLLO ÁGIL DE SOFTWARE Y SCRUM
2.1.1.
DESARROLLO ÁGIL DE SOFTWARE
Para el desarrollo de este proyecto se ha optado por la utilización del
desarrollo ágil de software. Con este nombre se conoce un conjunto de
métodos de ingeniería del software que surgió en los años 90 como alternativa
a los rígidos desarrollos tradicionales, basados en una estricta planificación y
que priorizan la generación de una documentación muy detallada frente al
propio desarrollo del software.
Los principios del desarrollo ágil de software se resumen perfectamente
en el Manifiesto por el Desarrollo Ágil de Software, enunciado en el año
2001 por un grupo de desarrolladores de software:
“Estamos descubriendo formas mejores de desarrollar software tanto por
nuestra propia experiencia como ayudando a terceros. A través de este trabajo
hemos aprendido a valorar:”
“Individuos e interacciones sobre procesos y herramientas.”
“Software funcionando sobre documentación extensiva.”
“Colaboración con el cliente sobre negociación contractual.”
“Respuesta ante el cambio sobre seguir un plan.”
Proyecto Fin de Carrera - Ingeniería en Informática
Página 31 de 185
Redes malladas con Arduino para el Internet de las cosas
Estos cuatro puntos constituyen los pilares fundamentales del desarrollo
ágil de software y, a pesar de su simplicidad, resumen a la perfección toda la
filosofía detrás de esta metodología.
 Individuos e interacciones sobre procesos y herramientas: el
software
está
desarrollado
por
personas,
no
por
procesos
o
herramientas, por lo que valora la capacidad de los desarrolladores para
trabajar en equipo de forma efectiva.
 Software funcionando sobre documentación extensiva: modelos
anteriores
como
el
modelo
en
cascada
enfatizaban
en
una
documentación altamente detallada. Pero una extensa documentación
no sirve de nada si el software final no se ajusta a las necesidades del
cliente. Aunque en el desarrollo ágil no se descarta la documentación, su
generación solamente es un medio más para que llegar al objetivo final,
que es el software funcional adaptado a las necesidades del cliente.
 Colaboración con el cliente sobre negociación contractual: en
contraposición a unas especificaciones rígidamente preestablecidas de
antemano, se valora una comunicación continua con el cliente
involucrándolo en todo el proceso de desarrollo.
 Respuesta ante el cambio sobre seguir un plan: el desarrollo del
software no tiene que ser algo cerrado y preestablecido de antemano,
sino que tiene que ser capaz de reaccionar de forma rápida y efectiva
ante los cambios en los requisitos.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 32 de 185
Redes malladas con Arduino para el Internet de las cosas
2.1.2.
SCRUM
El desarrollo ágil de software establece un marco general de trabajo que
se concretiza en una serie de aproximaciones o metodologías, pudiendo utilizar
una u otra en función de las necesidades del proyecto a desarrollar. Algunas de
las metodologías ágiles más utilizadas son Extreme Programming (XP), Agile
Modeling (AM), Kanban, Unified Process (UP), etc.
Para el desarrollo de este proyecto se ha optado por utilizar la que
probablemente sea la metodología ágil más utilizada: Scrum.
Scrum se puede definir como un proceso mediante el cual se aplican de
manera regular un conjunto de mejores prácticas para trabajar en equipo y
obtener los mejores resultados. En Scrum se realizan entregas parciales y
regulares del resultado final del proyecto, priorizadas por el beneficio que
aportan al receptor del proyecto según su propia opinión. Esto hace que esté
especialmente indicado para proyectos complejos, donde se necesitan obtener
resultados pronto, donde los requisitos son cambiantes o poco definidos y
donde la innovación, la competitividad y la productividad son fundamentales.
Scrum se fundamenta en tres aspectos principales: roles, reuniones y
documentos.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 33 de 185
Redes malladas con Arduino para el Internet de las cosas
2.1.2.1.
Roles de Scrum
Scrum define tres roles principales y una serie de roles auxiliares.
Los
roles
auxiliares
son
aquellas
partes
no
involucradas
frecuentemente en el proceso de desarrollo pero cuya participación y
retroalimentación es importante en determinados puntos del desarrollo. Dentro
de este grupo de roles se incluyen los administradores, que establecen el
ambiente para el desarrollo del producto, y los stakeholders, donde se
incluyen clientes, proveedores, vendedores, etc.
En cuanto a los roles principales se definen los siguientes:
 Product Owner: es el miembro del equipo que le da voz al cliente,
representa las necesidades y deseos de los stakeholders en las
reuniones. Su responsabilidad es mantener una visión global de qué es
lo que se quiere construir y transmitirla al equipo de desarrollo.
Asimismo debe recoger, priorizar y administrar los requerimientos del
producto, validar o rechazar los trabajos presentados en los sprints y
tomar decisiones junto con el equipo de desarrollo.
 Equipo de desarrollo: son los miembros encargados del desarrollo del
producto asumiendo tareas como realización de pruebas, análisis,
arquitectura,
diseño,
programación,
planificación,
estimación,
documentación, etc. Algunas características del equipo de desarrollo
son:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 34 de 185
Redes malladas con Arduino para el Internet de las cosas
o Auto-organizados.
o Multifuncionales, aglutinando todas las habilidades necesarias
para el desarrollo del producto.
o No hay títulos, todos los miembros son Desarrolladores,
independientemente del trabajo realizado por cada uno de ellos.
o Los
miembros
individuales
pueden
tener
habilidades
especializadas y áreas en las que estén más enfocados, pero la
responsabilidad recae en el Equipo como un todo.
 Scrum-Master: es el responsable de asegurar que el Scrum es
entendido y adoptado, orientando al equipo hacia la consecución de los
objetivos. No es un líder de proyecto en el sentido tradicional, sino que
más bien actúa como intermediario entre el equipo y las distracciones
que puedan tener.
2.1.2.2.
Eventos
En Scrum existen eventos predefinidos con el fin de crear regularidad y
minimizar la necesidad de reuniones no definidas en Scrum. Todos los eventos
son bloques de tiempo de tal modo que todos tienen una duración máxima que
no puede ser extendida.
Los diferentes eventos son:
 Sprint: es un bloque de tiempo de un mes o menos durante el cual se
crea un incremento de producto terminado, utilizable y potencialmente
desplegable. Cada sprint se puede considerar un proyecto dentro del
Proyecto Fin de Carrera - Ingeniería en Informática
Página 35 de 185
Redes malladas con Arduino para el Internet de las cosas
propio proyecto con una definición de qué se va a construir, un diseño y
un plan flexible que guiará la construcción, el trabajo y el producto
resultante. Los Sprints están limitados a un mes ya que así se limita la
posibilidad de que lo que se está construyendo pueda cambiar, la
complejidad se eleve y el riesgo aumente. Los Sprints limitan el riesgo
al costo de un mes de calendario.
 Reuniones: todas ellas forman parte de cada uno de los Sprints y son:
o Reunión de planificación de Sprint (Sprint Planning Meeting):
en ella se establece el plan de trabajo a realizar durante el Sprint
mediante el trabajo colaborativo de todo el equipo. El Scrum
Master es quien se asegura de que el evento se realice y que los
asistentes entiendan su propósito.
o Scrum Diario (DailyScrum): esta reunión se realiza cada día
durante el Sprint y tiene que seguir las siguientes reglas:
 Todos los miembros del equipo de desarrollo
acuden
preparados con sus revisiones.
 Comienza puntualmente aunque falte algún miembro del
equipo.
 Debe realizarse todos los días a la misma hora y lugar.
 Su duración máxima es de 15 minutos.
 Aunque pueden acudir miembros de todos los roles, solo
tienen la palabra miembros de los roles principales.
Durante estas reuniones los miembros del equipo tienen
que responder las siguientes preguntas:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 36 de 185
Redes malladas con Arduino para el Internet de las cosas
 ¿Qué he hecho desde ayer?
 ¿Qué voy a hacer hoy?
 ¿Ha surgido algún impedimento importante?
o Revisión de Sprint (Sprint Review): se realiza al final de Sprint
y tiene las siguientes características:
 Acuden tanto el Equipo Scrum como los interesados clave
invitados por el Product Owner.
 El Product Owner indica qué elementos se han terminado y
cuáles no.
 El Equipo de Desarrollo habla acerca de qué fue bien
durante el Sprint, qué problemas aparecieron y cómo
fueron resueltos esos problemas.
 El Equipo de Desarrollo demuestra el trabajo terminado.
 El grupo completo colabora acerca de qué hacer a
continuación, lo cual es muy útil como entrada para la
siguiente Reunión de Planificación.
 Revisión de cómo el mercado o el uso potencial del
producto podría haber cambiado lo que es de más valor
para hacer a continuación.
o Retrospectiva de Sprint (Sprint Retrospective): esta reunión
tiene lugar después de la Revisión de Sprint y antes de la
siguiente Planificación de Sprint. Sus objetivos son:
 Inspeccionar cómo fue el último Sprint en cuanto a
personas, relaciones, procesos y herramientas.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 37 de 185
Redes malladas con Arduino para el Internet de las cosas
 Identificar y ordenar los elementos más importantes que
salieron bien y las posibles mejoras.
 Crear un plan para implementar las mejoras a la forma en
la que el Equipo Scrum desempeña su trabajo.
2.1.2.3.
Artefactos
Constituyen la documentación necesaria para que todos los miembros
del equipo tengan una visión clara de los objetivos. Estos artefactos son:
 Lista de producto (Product Backlog): su responsable es el Product
Owner y constituye la única fuente de requisitos del proyecto. No es una
lista cerrada sino que al principio solo abarca los requisitos conocidos y
mejor entendidos y posteriormente irá evolucionando junto con el
proyecto, añadiendo nuevos requisitos a medida que estos vayan
surgiendo.
Esta lista enumera todas las características, funcionalidades,
requisitos, mejoras y correcciones que constituyen cambios a ser hechos
sobre el producto para futuras entregas.
 Lista de pendientes del Sprint (Sprint Backlog): es el conjunto de
elementos de la Lista de producto seleccionados para el Sprint. Define
cual será la funcionalidad del producto una vez que haya finalizado el
Sprint.
Esta lista es responsabilidad del Equipo de Desarrollo. Es una
lista dinámica en el sentido de que a medida que el equipo aprende más
Proyecto Fin de Carrera - Ingeniería en Informática
Página 38 de 185
Redes malladas con Arduino para el Internet de las cosas
acerca del trabajo necesario para conseguir el objetivo del Sprint pueden
surgir nuevos elementos. Igualmente algunos elementos se pueden
demostrar innecesarios, por lo que desaparecerían de esta lista.
La Lista de pendientes del Sprint se puede ver como una imagen
visible en tiempo real del trabajo que el Equipo de Desarrollo está
llevando a cabo en el Sprint.
2.2. PLANIFICACIÓN DEL TRABAJO
Para la planificación del proyecto se han utilizado las siguientes
herramientas:
 Trello: es una herramienta online gratuita que permite la gestión de
proyectos utilizando el paradigma kanban, también conocido como
sistema de tarjetas. El proyecto está representado por un tablero que
contiene listas que a su vez contienen tarjetas. Cada tarjeta representa
un objetivo o tarea que puede desplazarse entre las listas, las cuales
representan estados: backlog, to do, doing y done.
 Teamviewer: es una herramienta que permite la realización de
reuniones remotas con algunas funcionalidades interesantes como la
compartición de escritorios. Dispone de versiones para las plataformas
Windows, Linux y Android.
 Google Groups: la comunicación entre reuniones se ha realizado
utilizando el conocido sistema de listas de distribución de correo de
Google.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 39 de 185
Redes malladas con Arduino para el Internet de las cosas
 Hangouts: además de Google Goups para la comunicación entre los
miembros del grupo de una manera más directa se han usado las
conversaciones online tipo chat y llamadas a través de Voz Ip.
 Dropbox: soporte de almacenamiento en la nube que ha sido utilizado
para el intercambio de ficheros.
FIGURA 2-1 PANEL DE TARJETAS CON TRELLO
Proyecto Fin de Carrera - Ingeniería en Informática
Página 40 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 2-2 TARJETA DE ACTIVIDADES TRELLO
La planificación ha consistido en tres sprints y una demostración con los
supervisores, entre los meses de Octubre y Julio. Las funciones de Scrum
Máster han ido rotando entre todos los componentes del proyecto cambiando
en cada Sprint. El tutor del proyecto, Antonio Solano, ha ejercicio en todo
momento las funciones de product owner, proponiendo continuamente nuevas
vías a investigar y valorando nuestros trabajos.
Aunque personalmente considero que el trabajo en equipo con esta
metodología ha resultado una experiencia muy enriquecedora, creo que los
problemas inherentes al estudio a distancia han supuesto un lastre que no ha
permitido aprovechar todas las bondades de la metodología ágil, restando
eficiencia al desarrollo del proyecto.
Entre los principales problemas, los cuales también hubieran surgido en
cualquier otra metodología de trabajo en equipo a distancia, destacaría:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 41 de 185
Redes malladas con Arduino para el Internet de las cosas
 La aplicación TeamViewer tienen un funcionamiento muy irregular:
frecuentes cortes en las conversaciones, expulsiones sin motivo de
miembros de la reunión, pésimo funcionamiento en Linux que obliga a
acciones como tener una sesión en Linux para compartir escritorio y
simultáneamente otra en Windows o Android para hablar. En la parte
final del proyecto sustituimos TeamViewer por Hangouts y conseguimos
eliminar estos problemas.
 El seguimiento de Trello ha sido bastante desigual por lo que creo que
su utilidad se ha visto enormemente mermada.
 La comunicación mediante correo electrónico a un grupo de Google,
aunque proporciona inmediatez y acceso a todos los miembros del
grupo, tiene el problema de la complejidad de localizar conversaciones
pasadas. Viéndolo en retrospectiva tal vez hubiera sido más eficiente la
utilización de otro mecanismo, como puede ser un foro privado o similar,
con hilos para los diferentes temas que se abordaban de forma que sean
fácilmente accesibles y categorizables todas las conversaciones
anteriores.
 Las particularidades de cada persona y las necesidades de interacción
entre nuestros proyectos han supuesto un freno en muchas ocasiones.
Prácticamente todos trabajamos y tenemos obligaciones personales que
determinan los momentos que podemos dedicar al proyecto, a veces
incompatibles con los de nuestros compañeros. Esto nos ha obligado a
tener que esperar días o semanas hasta encontrar el momento en el que
Proyecto Fin de Carrera - Ingeniería en Informática
Página 42 de 185
Redes malladas con Arduino para el Internet de las cosas
todos los participantes en una prueba de integración estén disponibles
simultáneamente.
A pesar de todos estos problemas que han lastrado el desarrollo del
proyecto, también sería justo destacar todas las ventajas individuales que
proporciona un proyecto conjunto de estas características:
 El trabajo en equipo me ha permitido acceder fácilmente a expertos en
áreas de conocimiento que he necesitado en momentos puntuales
evitándome leer hojas y hojas de documentación. Al ser varios en el
equipo cada uno es experto en su tema y eso enriquece enormemente a
los demás.
 A pesar de los problemas de TeamViewer, las reuniones han sido muy
útiles para aclarar nuestras ideas, permitiendo discutirlas y exponerlas
de una forma que no se podría conseguir por otros medios como el
correo electrónico.
 El hecho de tener reuniones semanales donde justificar las tareas
realizadas durante la semana es un elemento motivador para avanzar en
el proyecto. Es la mejor solución a la tendencia de "dejarlo todo para el
final".
 La demo que se ha realizado, presentando nuestros avances a personas
ajenas al día a día del proyecto, ha servido para centrarnos en el
objetivo del proyecto. Independientemente de toda la investigación que
realicemos, el objetivo final es el proceso de compra sencillo en tres
Proyecto Fin de Carrera - Ingeniería en Informática
Página 43 de 185
Redes malladas con Arduino para el Internet de las cosas
pasos, y los avances en la consecución de dicho objetivo ha habido que
materializarlos en cada una de las demos.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 44 de 185
Redes malladas con Arduino para el Internet de las cosas
3.
INTRODUCCION A ARDUINO
3.1. ¿QUÉ ES ARDUINO?
Arduino es una plataforma de prototipado de proyectos de electrónica de
código abierto (open – source) basada en hardware y software flexibles y
fáciles de usar. Está pensado e inspirado en artistas, diseñadores, y
estudiantes de informatica o robótica y dirigido a cualquier interesado en crear
objetos o entornos interactivos, o simplemente por hobby. Arduino consta de
una placa principal de componentes electrónicos, donde se encuentran
conectados
los
controladores
principales
que
gestionan
los
demás
complementos y circuitos ensamblados en la misma.
Además, requiere de un lenguaje de programación para poder ser
utilizado y, como su nombre lo dice, programado y configurado a nuestra
necesidad, por lo que se puede decir que Arduino es una herramienta
"completa", ya que sólo debemos instalar y configurar con el lenguaje de
programación de esta placa los componentes eléctricos que queramos para
realizar el proyecto que tenemos en mente, haciéndola una herramienta, no
sólo de creación, sino también de aprendizaje en el ámbito del diseño de
sistemas electrónicos-automáticos y, además, fácil de utilizar.
Arduino
también
simplifica
el
proceso
de
trabajo
con
micro
controladores, ya que está fabricada de tal manera que viene “pre ensamblada”
y lista con los controladores necesarios para poder operar con ella una vez que
la saquemos de su caja, ofreciendo una ventaja muy grande para profesores,
Proyecto Fin de Carrera - Ingeniería en Informática
Página 45 de 185
Redes malladas con Arduino para el Internet de las cosas
estudiantes y aficionados interesados en el desarrollo de tecnologías. Las
posibilidades de realizar proyectos basados en esta plataforma tienen como
limite la imaginación de quien opera esta herramienta.
FIGURA 3-1 ARDUINO MEGA
Arduino está constituido en el hardware por un micro controlador
principal llamado Atmel AVR de 8 bits (que es programable con un lenguaje de
alto nivel), presente en la mayoría de los modelos de Arduino, encargado de
realizar los procesos lógicos y matemáticos dentro de la placa, además de
controlar y gestionar los recursos de cada uno de los componentes externos
conectados a la misma. Consta además de una amplia variedad de sensores
eléctricos como cámaras VGA, sensores de sonido, seguidores de línea,
botones de control de sensores, e incluso, otras placas de micro controladores
Proyecto Fin de Carrera - Ingeniería en Informática
Página 46 de 185
Redes malladas con Arduino para el Internet de las cosas
(más conocidos como Shields), que pueden adaptarse fácilmente gracias a que
Arduino cuenta con entradas de pines analógicos y digitales para integrar estos
componentes sin necesidad de alterar el diseño original de esta placa. Estos a
su vez son controlados junto con el procesador primario por otros componentes
de menor jerarquía, pero de igual importancia y prioridad, como el Atmega168,
Atmega328, Atmega1280 y el Atmega8 , que son lo más utilizados debido a
sus bajos precios y gran flexibilidad para construir diversidad de diseños.
Además, Arduino cuenta con la ventaja de tener entre sus elementos
principales puertos seriales de entrada /salida (input/output), lo que le permite
conectarse por medio de un cable USB a un ordenador para poder trabajar con
ella desde nivel software, ya que es dónde se le darán las “ordenes” que
ejecutarán cada uno de los componentes conectados a la placa, e incluso, para
operar como un dispositivo más (dependiendo de la configuración que
hayamos establecido y para que se quiere utilizar). Por otro lado, Arduino para
operar necesita de una fuente de alimentación externa, ya que por desgracia,
no cuenta con una propia, por lo que también se encuentra incorporada una
entrada para conectar un cable de alimentación.
Las características de la placa más conocida de Arduino (Arduino UNO):
 El microprocesador ATmega328
 32 kbytes de memoria Flash
 1 kbyte de memoria RAM
 16 MHz
 13 pins para entradas/salidas digitales (programables)
Proyecto Fin de Carrera - Ingeniería en Informática
Página 47 de 185
Redes malladas con Arduino para el Internet de las cosas
 5 pins para entradas analógicas
 6 pins para salidas analógicas (salidas PWM)
 Completamente autónomo: Una vez programado no necesita estar
conectado al PC
 Microcontrolador ATmega328
 Voltaje de operación 5V
 Voltaje de entrada (recomendado) 7-12 V
 Voltaje de entrada (limite) 6-20 V
 Digital I/O Pins 14 (con 6 salidas PWM)
 Entradas analógicas Pins 6
 DC corriente I/O Pin 40 mA
 DC corriente 3.3V Pin 50 mA
 Memoria Flash 32 KB (2 KB para el bootloader)
 SRAM 1 KB
 EEPROM 512 byte
 Velocidad de reloj 16 MHz
Realmente existen múltiples tipos de Arduinos y cada uno tiene unas
características diferentes, las principales características son:
 Procesador
 Voltaje de operación
 Velocidad del procesador
 Entradas y salidas analógicas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 48 de 185
Redes malladas con Arduino para el Internet de las cosas
 Entradas y salidas digitales
 Tamaño de la EEPROM
 Tamaño de la RAM
 Tamaño de la memoria Flash
 Tipo de conexión USB
 Numero de puertos serie
Proyecto Fin de Carrera - Ingeniería en Informática
Página 49 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 50 de 185
Redes malladas con Arduino para el Internet de las cosas
Operating
CPU
Analog
Digital
EEPROM
SRAM
Flash
Voltage/Input
Speed
In/Out
IO/PWM
[KB]
[KB]
[KB]
ATmega328
5 V/7-12 V
16MHz
6/0
14-jun
1
2
Due
AT91SAM3X8E
3.3 V/7-12 V
84 MHz
12-feb
54/12
-
Leonardo
ATmega32u4
5 V/7-12 V
16MHz
12/0
20-jul
1
Mega 2560
ATmega2560
5 V/7-12 V
16MHz
16/0
54/15
Mega ADK
ATmega2560
5 V/7-12 V
16MHz
16/0
54/15
Micro
ATmega32u4
5 V/7-12 V
16MHz
12/0
Mini
ATmega328
5 V/7-9 V
16MHz
8/0
Name
Processor
Uno
Nano
ATmega168
ATmega328
USB
UART
32
Regular
1
96
512
2 Micro
4
2.5
32
Micro
1
4
8
256
Regular
4
4
8
256
Regular
4
20-jul
1
2.5
32
Micro
1
14-jun
1
2
32
-
-
0.512
1
16
1
2
32
Mini-B
1
5 V/7-9 V
16MHz
8/0
14-jun
Ethernet
ATmega328
5 V/7-12 V
16MHz
6/0
14-abr
1
2
32
Regular
-
Esplora
ATmega32u4
5 V/7-12 V
16MHz
-
-
1
2.5
32
Micro
-
ArduinoBT
ATmega328
5 V/2.5-12 V
16MHz
6/0
14-jun
1
2
32
-
1
Fio
ATmega328P
3.3 V/3.7-7 V
8MHz
8/0
14-jun
1
2
32
Mini
1
Pro (168)
ATmega168
3.3 V/3.35-12 V
8MHz
6/0
14-jun
0.512
1
16
-
1
Pro (328)
ATmega328
5 V/5-12 V
16MHz
6/0
14-jun
1
2
32
-
1
Pro Mini
ATmega328
3.3 V/3.35-12 V
8MHz
5 V/5-12 V
16MHz
6/0
14-jun
0.512
1
16
-
1
2.7-5.5 V/2.7-5.5 V
8MHz
6/0
14-jun
0.512
1
16
-
-
ATmega32u4
3.3 V/3.8-5V
8MHz
4/0
09-abr
1
2.5
32
Micro
-
ATmega328
2.7-5.5 V/2.7-5.5 V
8MHz
4/0
09-abr
1
2
32
-
-
ATmega328
2.7-5.5 V/2.7-5.5 V
8MHz
4/0
09-abr
1
2
32
-
-
ATmega32u4
5V
16MHz
12/0
20-jul
1
2.5
32
Micro
1
LilyPad
LilyPad USB
LilyPad
Simple
LilyPad
SimpleSnap
Yun
ATmega168V
ATmega328V
FIGURA 3-2 TABLA DE MODELOS Y CARACTERISTICAS DE ARDUINOS
Proyecto Fin de Carrera - Ingeniería en Informática
Página 51 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 52 de 185
Redes malladas con Arduino para el Internet de las cosas
Cada una de estas versiones de Arduino tienen una forma y tamaño
diferente de modo que se pueden adaptar a las necesidades de la mayoría de
los proyectos, incluso existe una versión flexible apta para ser cosida a la ropa,
este tipo de Arduinos permite el desarrollo de que se conoce como wereables
que son un conjunto de aparatos y dispositivos electrónicos que se incorporan
en alguna parte de nuestro cuerpo interactuando continuamente con el usuario
y con otros dispositivos con la finalidad de realizar alguna función específica.
A continuación se muestran algunas imágenes de los diversos tipos de
Arduinos.
FIGURA 3-3 ARDUINO MICRO
FIGURA 3-5 ARDUINO LILYPAD
Proyecto Fin de Carrera - Ingeniería en Informática
FIGURA 3-4 ARDUINO YUN
FIGURA 3-6 ARDUINO NANO
Página 53 de 185
Redes malladas con Arduino para el Internet de las cosas
3.2. ¿CÓMO SE PROGRAMA?
Como se había mencionado, Arduino, no sólo son componentes
eléctricos ni una placa de circuitos, sino que además, también es una
plataforma que combina esto con un lenguaje de programación que sirve para
controlar los distintos sensores que se encuentran conectados a la placa, por
medio de instrucciones y parámetros que nosotros establecemos al conectar la
placa a un ordenador. Este lenguaje que opera dentro de Arduino se llama
Wiring, basado en la plataforma Processing y primordialmente en el lenguaje
de programación C/C++, que se ha vuelto popular hasta llegar a ser el preferido
para enseñar programación a alumnos de nivel superior que estudian
informática y robótica, gracias a que es muy fácil de aprender y brinda soporte
para cualquier necesidad. De este lenguaje derivan otros más que son muy
utilizados en el ámbito de Ingeniería y desarrollo, como C#, Java, BASIC, Php,
Phytom,
JavaScript, Perl, entre otros; por lo tanto, Arduino soporta varios
lenguajes de programación de alto nivel derivados de C, haciendo de esto una
ventaja para los diseñadores que trabajan en varios o en un sólo entorno de
desarrollo de programación. Para poder programar el procesador, debe
descargarse el software que incluye las librerías necesarias. Otra ventaja es
que este software puede descargarse desde el sitio web oficial de Arduino, ya
que opera bajo licencia libre y está disponible a todo el público. Su versión más
reciente para todos los sistemas operativos es la versión Arduino 1.6.1.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 54 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 3-7 ENTORNO DE DESARROLLO ARDUINO
Al ser una herramienta que incorpora tanto uso de hardware y software
(circuitos eléctricos y un lenguaje de programación respectivamente) se
requiere un nivel de conocimiento básico en estas dos ramas.
Es fácil encontrar diversidad de manuales en la página oficial e incluso,
pueden adquirirse libros donde se explica cómo utilizar esta herramienta
didáctica e innovadora. Además, existe en internet un simulador virtual de
Arduino de licencia libre llamado Virtual BreadBoard, que ayuda al aprendizaje
de esta plataforma antes de comenzar a utilizarla de manera real, ofreciendo
las herramientas necesarias y el mismo soporte que esta placa, pero de
manera digital.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 55 de 185
Redes malladas con Arduino para el Internet de las cosas
Durante el desarrollo de este proyecto se evaluaron dos alternativas a
este entorno de desarrollo más propias de otros lenguajes de programación
como son: Atmel Studio y el plugin Visual Micro para Visual Studio.
FIGURA 3-8 INTERFAZ DE DESARROLLO DE VISUAL STUDIO
El uso de herramientas de desarrollo más potentes como estas permiten
hacer uso de funcionalidades que facilitan: la codificación de los programas,
gestión y edición de los ficheros que componen la solución, uso de
herramientas de autocompletado, intellisense, descripción de los métodos y
parámetros recibidos a medida que se codifica una instrucción de invocación.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 56 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 3-9 INTELLISENSE DE VISUAL STUDIO 2013
3.3. VENTAJAS Y DESVENTAJAS DE ARDUINO
Existe
una
diversidad
de
plataformas
que
operan
con
micro
controladores disponibles para la programación del hardware. Todas estas
herramientas
se organizan en paquetes fáciles de usar para minimizar el
trabajo del desarrollo a nivel de programación (software). Además, Arduino
ofrece ventajas como:
 Asequible - Las placas Arduino son más asequibles comparadas con
otras plataformas de microcontroladores. La versión más cara de un
módulo de Arduino puede ser montada a mano, e incluso ya montada
cuesta menos de 60€.
 Multi-Plataforma - El software de Arduino funciona en los sistemas
operativos Windows, Macintosh OSX y Linux. La mayoría de los
entornos para microcontroladores están limitados a Windows.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 57 de 185
Redes malladas con Arduino para el Internet de las cosas
 Entorno de programación simple y directo - El entorno de programación
de Arduino es fácil de usar para principiantes y lo suficientemente
flexible para los usuarios avanzados. Pensando en los profesores,
Arduino está basado en el entorno de programación Procesing con lo
que el estudiante que aprenda a programar en este entorno se sentirá
familiarizado con el entorno de desarrollo Arduino.
 Software ampliable y de código abierto- El software Arduino está
publicado bajo una licencia libre y preparado para ser ampliado por
programadores experimentados. El lenguaje puede ampliarse a través
de librerías de C++, y si se está interesado en profundizar en los detalles
técnicos, se puede dar el salto a la programación en el lenguaje AVR C
en el que está basado. De igual modo se puede añadir directamente
código en AVR C en tus programas si así lo deseas.
 Hardware ampliable y de Código abierto - Arduino está basado en los
microcontroladores ATMEGA168, ATMEGA328 y ATMEGA1280. Los
planos de los módulos están publicados bajo licencia Creative
Commons, por lo que diseñadores de circuitos con experiencia pueden
hacer su propia versión del módulo, ampliándolo u optimizándolo.
Incluso usuarios relativamente inexpertos pueden construir la versión
para placa de desarrollo para entender cómo funciona y ahorrar algo de
dinero.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 58 de 185
Redes malladas con Arduino para el Internet de las cosas
A continuación detallaremos algunas de las desventajas del uso de
Arduino frente a otras plataformas de reciente aparición como puede ser una
Rapberry Pi.
 Arduino es mono-tarea aunque se puede llegar a simular algo parecido a
la multitarea no es algo real. Esto es algo que se ha visto superado por
la aparición de nuevos modelos de placas que permiten el desarrollo de
proyectos como el nuestro en dispositivos que poco tienen que envidiar
a la capacidad de proceso de un “Smartphone” actual. Algunas de estas
nuevas placas como el caso de la Intel Galileo han continuado siendo
compatible con los conectores de las placas Arduino.
FIGURA 3-10 INTEL GALILEO CON PINES ARDUINO
Proyecto Fin de Carrera - Ingeniería en Informática
Página 59 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 3-11 RASPBERRY PI MODELO 2B
 El entorno de desarrollo es pobre en comparación con todas las
herramientas que ya existen. El IDE de Arduino se limita a un editor de
texto en el que se dispone de un botón para cargar tu código en la placa,
lo cual hace que muchos desarrolladores busquen alternativas como
puede ser el uso de Atmel Studio, plugins para otros entornos de
desarrollo como puede ser Viual Studio de Micorosoft o Eclipse por
tratarse de un entorno multiplataforma.
 Algunas placas compatibles con Arduino como pueden ser las WBoard
de Itead utilizadas en este proyecto no exponen todos los pines del
microcontrolador que llevan incorporados lo que pierde la filosofía de las
placas originales donde cada pin del microcontrolador tiene su pin
correspondiente para usarlo como conector, esto ha provocado en
nuestro proyecto tener que duplicar el hardware WIFI para poder usar
pines que el fabricante tenia usados con otros fines y no exponer otros
que nos permitían tener la misma funcionalidad.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 60 de 185
Redes malladas con Arduino para el Internet de las cosas
4.
INTRODUCCION A REDES MALLADAS
4.1. INTRODUCCIÓN
En este capítulo vamos a definir lo que entendemos por red mallada
inalámbrica y los dos tipos de nodos que se utilizan, routers y clientes
mallados.
Explicaremos detalladamente las características que presentan las redes
malladas inalámbricas, como la robustez, la topología dinámica, el ancho de
banda limitado, la seguridad y los canales de comunicación aleatorios.
Además expondremos las diferentes redes que existen dependiendo de
la función que desempeñen los nodos de la red mallada. Podemos
encontrarnos una red donde la infraestructura está formada por routers
mallados, clientes mallados o una combinación de ambos.
Si nos fijamos en el modo que se interconectan los clientes y los routers
nos podemos encontrar con 3 generaciones diferentes. En la primera
generación los clientes y los routers utilizan el mismo canal de radio. En la
segunda generación se utilizan dos canales de radio diferentes, un canal de
radio para los clientes y otro canal de radio para los routers. Y por último nos
encontramos con la tercera generación que utiliza dos canales de radio para
los routers. Las redes malladas inalámbricas presentan ciertas ventajas que las
convierten en la mejor opción en múltiples ocasiones. Una de estas ventajas es
que no necesita cableado para interconectar a los nodos y por tanto el coste es
Proyecto Fin de Carrera - Ingeniería en Informática
Página 61 de 185
Redes malladas con Arduino para el Internet de las cosas
más bajo. Además como las redes van aumentando día a día otra ventaja que
presenta es la facilidad de incluir nuevos nodos para aumentar las zonas de
cobertura.
Las redes malladas inalámbricas ofrecen fiabilidad en la comunicación
gracias a los caminos redundante que se pueden utilizar en caso de fallo. Otro
punto a favor es que las redes malladas inalámbricas son compatibles con otro
tipo de redes que ya están desplegadas. Por todas estas ventajas as redes
malladas inalámbricas tienen un alto potencial en el mundo de las
telecomunicaciones.
4.2. DEFINICIÓN DE RED MALLADA
Podemos decir que la red mallada inalámbrica es una red de nodos
unidos todos con todos, o la gran mayoría, y que se conectan sin cables.
En estas redes existen dos tipos de nodos, los routers mallados y los
clientes mallados.
Los routers mallados se encargan de realizar funciones de reenvío de
tráfico de otros nodos y funciones de gateway para interconectar con otras
redes existentes. Si comparamos un router mallado con un router inalámbrico
convencional observamos que se alcanza la misma cobertura utilizando una
potencia de transmisión menor, ya que puede dar servicio a nodos fuera de su
cobertura radio a través de otros nodos.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 62 de 185
Redes malladas con Arduino para el Internet de las cosas
Un aspecto importante del funcionamiento de las redes malladas
inalámbricas, comparándolo con las redes tradicionales WIFI, es que no
necesitan que los nodos a los que quiere transmitir estén dentro del rango de
cobertura del nodo. Es decir, que un nodo puede transmitir a otro nodo que no
esté en su mismo rango de cobertura, ya que se realiza un encaminamiento
multi-salto y la información va atravesando nodos intermedios hasta que
alcanza el destino.
Los clientes mallados también realizan la función de reenvío de tráfico
de otros nodos pero no realizan las funciones de gateway. Para acceder a otras
redes, como por ejemplo Internet, los clientes mallados deben conectarse a los
routers mallados que permiten el acceso a otras redes gracias a la función de
gateway.
Como ya hemos comentado las redes malladas inalámbricas pueden
tener una conexión total de todos sus nodos o parcial. Si la conexión es total la
red es muy robusta ante fallos en la topología, pero resulta muy costoso y por
este motivo se utilizan la alternativa de conexión parcial que también presenta
una gran robustez.
El principal objetivo de las redes de comunicaciones es que la
información llegue a su destino de manera rápida y fiable. En este aspecto las
redes malladas inalámbricas ofrecen un buen servicio, son robustas ya que
poseen redundancia de enlaces y de nodos en caso de fallo. Cada nodo de la
Proyecto Fin de Carrera - Ingeniería en Informática
Página 63 de 185
Redes malladas con Arduino para el Internet de las cosas
red mallada posee al menos dos conexiones a dos nodos diferentes, por lo que
si se cae un enlace siempre se puede alcanzar al nodo por otro enlace.
Las redes malladas al ser inalámbricas presenta ventajas a la hora de
incrementar el número de nodos, ya que no es necesario cambiar
infraestructuras como en el caso de las redes cableadas. Y por tanto se puede
incluir un nuevo nodo en cualquier momento y lugar. Como consecuencia el
coste de este tipo de redes inalámbricas es mucho menor que en las redes
cableadas, ya que no hay que invertir en materiales de cableado y en estudios
enfocados a la unión más óptima de los nodos.
Como
en
todas
las
redes
debemos
utilizar
protocolos
de
encaminamiento que se encargan de la transmisión de la información desde el
nodo
origen
al
nodo
destino.
Para
conseguirlo,
los
protocolos
de
encaminamiento deben conocer el estado de la topología de la red y saber
cuándo se ha introducido un nuevo nodo, cuándo ha fallado un nodo, cuándo
se satura un enlace y cuándo es necesario balancear la carga por otros
caminos porque hay saturación.
4.3. CARACTERÍSTICAS DE LAS REDES MALLADAS
Las redes malladas inalámbricas presentan ciertas ventajas como la
robustez y la flexibilidad, y otras muchas más que hacen de este tipo de red
una opción muy ventajosa. Pero también existen puntos que hay que mejorar
como la seguridad, el ancho de banda y los canales de comunicación. Vamos a
explicar con más detalle cada una de las características de la red mallada.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 64 de 185
Redes malladas con Arduino para el Internet de las cosas
En una red mallada un conjunto de nodos se comunican entre sí de
manera directa transmitiendo la información de nodo a nodo hasta que llega a
su destino final. La información atraviesa múltiples saltos y no hay necesidad
de una unidad centralizada que controle el modo de transmisión. La
comunicación se realiza entre los nodos directamente. Cada nodo puede ser
origen y destino de los datos o encaminar la información de otros nodos.
Las redes malladas inalámbricas son robustas al tener varios caminos
disponibles entre el nodo origen y el destino. De modo que el servicio no se
verá afectado por la caída de un nodo o por la ruptura de un enlace.
Otro aspecto importante de las redes malladas es la flexibilidad, ya que
se pueden incluir nuevos nodos sin implicar un replanteamiento de la red
global, ya que las redes malladas inalámbricas afrontan los cambios en la
topología. Además se pueden incluir nuevos nodos en cualquier lugar siempre
que alcance a algún vecino que ya pertenezca a la red.
El ancho de banda es limitado ya que los nodos deben estar en
contacto, realizan el transporte de datos de otros nodos y se producen
congestiones en los enlaces. En este tipo de redes donde la información
atraviesa diversos nodos, se compromete la seguridad y se puede dar la
situación de que un usuario que no es el destinatario pueda acceder a
información privada de otros usuarios. Por este motivo se define una subcapa
de seguridad para proteger la información.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 65 de 185
Redes malladas con Arduino para el Internet de las cosas
A pesar de las desventajas presentadas, son más importantes las
ventajas que ofrecen las redes malladas inalámbricas por lo que merece la
pena invertir en mejorar estos puntos.
4.4. LA INFRAESTRUCTURA DE LAS REDES MALLADAS
Si nos fijamos en el funcionamiento de los nodos existen tres tipos de
redes malladas inalámbricas. Como hemos explicado, las redes malladas
tienen dos tipos de nodos, los routers y los clientes mallados. Por tanto nos
podemos encontrar una red donde la funcionalidad de la red reside únicamente
en los routers, en los clientes o una combinación de ambos nodos:
 Red de infraestructura: En este tipo de red los routers mallados forman
la infraestructura principal de la red y se conectan entre ellos de manera
inalámbrica. Permiten el acceso a clientes mallados y a clientes
convencionales de otras redes. Los clientes convencionales se pueden
conectar a los routers mallados a través de cable Ethernet o de manera
inalámbrica.
Esta es la infraestrutura elegida para nuestro proyecto. Existirá un router
mallado Gateway que se conectará a la plataforma mediante GPRS a la
vez que pone a disposición de los nodos próximos al acceso a esta
infraestructura de comunicaciones.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 66 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 4-1 DIAGRAMA DE INFRAESTRUCTURA
 Red de clientes mallados: En las redes de clientes mallados no se
utilizan los routers mallados. Los clientes mallados forman la
infraestructura de la red y se conectan de manera inalámbrica. En este
caso los clientes mallados actúan como cliente y router para el resto de
nodos.
 Red híbrida: Como su propio nombre indica es una red que combina los
dos conceptos mencionados anteriormente. En las redes híbridas los
routers y los clientes realizan las funciones de encaminamiento.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 67 de 185
Redes malladas con Arduino para el Internet de las cosas
5.
TECNOLOGIAS PROPUESTAS
Cuatro fueron las posibles tecnologías encontradas para tratar de
conseguir nuestro objetivo de intercomunicar varias máquinas con el claro
objetivo de reducir costes en hardware e infraestructura.
Todas las soluciones se basan en radio frecuencia en la banda libre de
los 2.4 GHz, que es la zona de frecuencias liberada por el ministerio de
industria para no interferir en otras emisiones como pueden ser la telefonía
móvil, TDT…
El alcance de todas las opciones evaluadas es muy parecido pudiendo
llegar a los 150 metros si se trata de un espacio abierto y sin obstáculos.
5.1. NRF24L01
Fue la primera tecnología evaluada y es una de las más extendidas. Los
módulos se conectan mediante SPI y poseen muchas características como:
modo de bajo consumo, múltiples canales, salto entre canales, calibración de
frecuencias, control de errores, modo repetidor, etc.
Son empleados con mucha frecuencia para aplicaciones de telemetría.
Tienen un alance de entre 10 y 150 metros, aunque es posible encontrar
módulos con un alcance de 1.5 Km.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 68 de 185
Redes malladas con Arduino para el Internet de las cosas
5.2. BLUETOOTH LE
Todavía no se está empleando mucho para la comunicación entre
máquinas. Ha evolucionado bastante durante los últimos años. La ultima
evolución ha sido la aparición del Bluetooth 4.0 LE el cual es de bajo consumo
y tiene un elevado ancho de banda. Puede abarcar una casa entera sin
problemas. Igual que el WIFI una de sus ventajas es que no necesita
componentes externos para conectarse a un ordenador.
Algunos Arduinos están incorporando módulos Bluetooth de modo que
se puede interactuar con ellos como si fueran un puerto COM, pudiendo
conectar con ellos desde el IDE de Arduino como si estuviera conectado a
través de un cable.
5.3. ZIGBEE
Es muy conocido en el campo de la domótica y en el ámbito Arduino.
Los módulos ZigBee son de bajo consumo y puede transmitir información a
muy larga distancia usando otros elementos como repetidores. Comparados
con el resto de soluciones más baratas son mucho más sencillos de utilizar.
Los módulos ZigBee son muy conocidos porque pueden funcionar
durante muchos años con baterías debido a su bajo consumo sin embargo su
principal desventaja es el precio
Proyecto Fin de Carrera - Ingeniería en Informática
Página 69 de 185
Redes malladas con Arduino para el Internet de las cosas
5.4. WIFI
Las redes WIFI son muy vulnerables a la interceptación de paquetes, a
los ataques o simplemente a que usuarios no autorizados se aprovechen de la
conexión, por tanto es conveniente implementar medidas de seguridad que
prevengan un uso indebido de la red.
El estándar IEEE 802.1x, parte del grupo de protocolos IEEE 802 (IEEE
802.1). Permite la autenticación de dispositivos conectados a un puerto LAN,
estableciendo una conexión punto a punto o previniendo el acceso por ese
puerto
si
la
autenticación
falla.
Es
utilizado
en
algunos puntos
de
acceso inalámbricos cerrados y se basa en el protocolo de autenticación
extensible (EAP). Originalmente este estándar era para redes cableadas pero
se modificó para poder ser utilizado en redes inalámbricas.
Consiste en el control de los puertos de acceso a la red, de forma que
sólo se abrirá el puerto y la conexión, si el usuario está autentificado y
autorizado.
En redes inalámbricas el estándar tiene tres componentes principales:
 El autenticador, será el punto de acceso, este recibirá la información del
cliente.
 El solicitante, será el software del cliente que dará la información de las
claves y permisos para mandarla al autenticador.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 70 de 185
Redes malladas con Arduino para el Internet de las cosas
 El servidor de autenticación, será el servidor que debe verificar los
permisos y claves de los usuarios.
Es de gran importancia “asegurar” las comunicaciones
vía WIFI,
evitando que la red inalámbrica esté abierta, (accesible a todos), y además
cifrar los paquetes de datos. Esto se consigue aplicando estándares de
seguridad, tales como WEP (Wired Equivalent Privacy o Privacidad equivalente
a cableado) o WPA (WIFI Protected Access o Acceso WIFI protegido).
WEP es un protocolo de seguridad en redes inalámbricas antiguo.
Permite utilizar claves de 64 a 128 bits. Este tipo de cifrado es bastante
inseguro, ya que actualmente existen multitud de utilidades que rompen
fácilmente la seguridad de redes con WEP. WEP codifica los datos mediante
una clave de cifrado antes de enviar la información. Cuanta más longitud tenga
la clave, más fuerte será el cifrado. Pero, si la clave de seguridad es estática o
no cambia, es posible que un intruso persistente consiga romper la seguridad
de la red WiFi. Por lo tanto, se recomienda cambiar la clave WEP
frecuentemente.
El protocolo de seguridad WPA y su variante WPA2 proporcionan una
protección más fiable y robusta que su antecesor, WEP.
Sin embargo, no
todos los dispositivos soportan WPA, sobre todo los más antiguos. WPA utiliza
claves de cifrado de entre 64 y 256 bits. Sin embargo en WPA se generan
claves nuevas de manera dinámica con lo que dificulta su descifrado. WPA
Proyecto Fin de Carrera - Ingeniería en Informática
Página 71 de 185
Redes malladas con Arduino para el Internet de las cosas
tiene una versión mejorada, la WPA2 que es aún más robusta y difícil de
descifrar.
WPA se sirve del protocolo de integridad de claves temporales (TKIP)
que es un tipo de mecanismo empleado para
crear el cifrado de clave
dinámico y autenticación mutua.
WPA2 es la segunda generación de WPA y está actualmente disponible
en los puntos de acceso más modernos del mercado. Es compatible con los
productos anteriores con WPA. La principal diferencia con WPA original WPA2
es que la segunda necesita el estándar avanzado de cifrado (AES) frente al
referido TKIP.
WPA puede utilizar dos tipos de encriptación:
 WPA-PSK que utiliza un algoritmo complejo de encriptación, utilizando el
protocolo TKIP que es el que cambia la clave dinámicamente. Por lo que
WPA-PSK es vulnerable en la primera conexión al punto de acceso que
es donde utiliza la clave preestablecida, después va cambiando las
claves de forma dinámica.
 Utilizando
servidores
de
encriptación,
usualmente Radius.
Estos
servidores utilizan protocolos de autenticación y autorización, de esta
manera es el servidor el que se encarga de distribuir claves diferentes
entre los usuarios. Este método es el más seguro, pero también el de
mayor coste.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 72 de 185
Redes malladas con Arduino para el Internet de las cosas
El filtrado de direcciones MAC es una medida de seguridad adicional y
se recomienda utilizarla como complemento de algunos de los métodos de
encriptación. Consiste en configurar el punto de acceso o router de tal forma
que tenga un listado de direcciones MAC de los equipos autorizados a
conectarse a la red inalámbrica, para que aquellos equipos que no estén en la
lista no puedan conectarse.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 73 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 74 de 185
Redes malladas con Arduino para el Internet de las cosas
6.
NIVELES DEL MODELO OSI
Entender el modelo OSI nos ayuda a definir las necesidades de
comunicación e intercambio de mensajes de un sistema como el que se
pretende construir.
6.1. MODELO DE REFERENCIA
El modelo OSI, siglas en inglés de Open System Interconnection o
traducido, Interconexión de Sistemas Abiertos, es el modelo de red creado por
la Organización Internacional para la Normalización (ISO) en el año 1984. El
modelo define un marco de referencia para la definición de arquitecturas de
interconexión de sistemas de comunicaciones.
Es conveniente tener en cuenta que el modelo OSI no es una
arquitectura desarrollada en ningún sistema, sino una referencia para
desarrollar arquitecturas de red, de forma que los protocolos que se desarrollen
puedan ser conocidos por todos.
Aunque el modelo OSI no esté realmente desarrollado en ningún
sistema, facilita la comprensión de los procesos de comunicación que se
producen en una red. Además puede usarse como referencia para la detección
de errores o desarrollo de un plan de mantenimiento.
En definitiva, el modelo OSI establece un conjunto de normas mínimas
que permiten una mayor compatibilidad e interoperabilidad entre los distintos
tipos de tecnología de red utilizados por las empresas a nivel mundial.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 75 de 185
Redes malladas con Arduino para el Internet de las cosas
Así mismo el modelo OSI simplifica las actividades de red, ya que
agrupa los procesos de comunicación en siete capas o niveles
con
funcionalidades específicas. Esta división en niveles diferenciados del proceso
de
comunicación
entre
dispositivos
aporta
las
siguientes
ventajas
fundamentales:
 Reducción de la complejidad del proceso global al abordar la
resolución por separado de problemas más sencillos.
 Normaliza los componentes de red para permitir el desarrollo y el
soporte de los productos de diferentes fabricantes.
 Permite a los distintos tipos de hardware y software de red comunicarse
entre sí.
 Minimiza o anula el efecto de los cambios producidos en una capa
sobre el resto de niveles, lo que permite un desarrollo más rápido.
 Facilita el aprendizaje y comprensión del proceso de comunicación.
Las características y funcionalidades esenciales de cada uno de los
niveles establecidos por el modelo OSI son las siguientes:
6.2. NIVEL FÍSICO
La Capa Física o Nivel 1 proporciona los medios mecánicos, eléctricos,
funcionales y de procedimiento para activar, mantener y desactivar conexiones
físicas. Para ello, en esta capa se definen especificaciones fundamentalmente
concernientes a la transmisión de las señales y al medio de transmisión.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 76 de 185
Redes malladas con Arduino para el Internet de las cosas
El objetivo final es el de la codificación y transmisión de las señales
(ópticas, eléctricas o electromagnéticas) que representan los bits que
conforman las tramas de la capa superior de Enlace de Datos.
Por tanto en esta capa se describen aspectos relativos a la propia
interpretación de la señal (como se define una señal que representa un bit a 1,
o un bit a 0). Se contemplan características físicas como la velocidad de
transmisión, atenuación de la señal, interferencias posibles, modulación,
amplitud o frecuencia, todo ello en función del medio de transmisión.
Igualmente son descritas las características del propio medio de
transmisión y por tanto aspectos relativos a las características físicas y
geométricas de éstos. Fundamentalmente se emplean como medios de
transmisión el cobre y la fibra óptica para redes cableadas y el aire o el vacío
para la transmisión de señales electromagnéticas (microondas, infrarrojos, etc).
Para cada tecnología, medio y tipo de señal, además han de adecuarse los
tipos de conexión entre el medio y las máquinas.
Los dispositivos intermedios vinculados con esta capa habitualmente se
limitan a actuar como repetidores de la señal transmitida, no interviniendo en el
procesado de la información (hubs -obsoletos-, repetidores inalámbricos, etc.).
Por último, señalar que son aspectos concernientes a este nivel los
relativos a la propia topología física de la red (bus, anillo, malla, estrella, etc.),
al modo de transmisión (simplex, halfduplex o full duplex) o al tipo de
comunicación (serie, paralela).
Proyecto Fin de Carrera - Ingeniería en Informática
Página 77 de 185
Redes malladas con Arduino para el Internet de las cosas
6.3. NIVEL DE ENLACE DE DATOS
La capa de Enlace de Datos o nivel 2, es responsable de la transferencia
fiable de información a través de un circuito de transmisión de datos. Recibe
peticiones de la capa de red y utiliza los servicios de la capa física. Por tanto,
se trata de una capa de conexión entre los procesos de software de las capas
superiores y la capa física inferior
La capa de enlace de datos releva a las capas superiores de la
responsabilidad de colocar datos en la red y de recibir datos de la red. Esta
capa prepara los paquetes de capa de red para la transmisión a través de
alguna forma de medio, ya sea cobre, fibra o entornos o medios inalámbricos y
proporciona servicios para soportar los procesos de comunicación para cada
medio por el cual se transmitirán los datos.
Los protocolos de la Capa 2 especifican la encapsulación de un paquete
en una trama y las técnicas para colocar y sacar el paquete encapsulado de
cada medio.
En función de la tecnología se define la trama, cuya estructura común
suele constar de cabecera, datos y cola.
La cabecera puede contener información relativa a; la definición del
comienzo de la trama, direccionamiento, tipo de PDU (Unidad de paquete de
datos) contenido en la trama y/o campos de control.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 78 de 185
Redes malladas con Arduino para el Internet de las cosas
La cola o "trayler" suele contener campos para el control de errores y
para la definición del final de la trama.
Entre ambos se insertan los datos propiamente dichos. De este modo se
brinda a las señales físicas una estructura que puede ser recibida por los nodos
y decodificada en paquetes en el destino.
La técnica utilizada para colocar y sacar la trama de los medios se
denomina método de control de acceso al medio. Para que los datos se
transfieran a lo largo de una cantidad de medios diferentes, puede que se
requieran distintos métodos de control de acceso al medio durante el curso de
una única comunicación. La capa de enlace de datos aísla de manera efectiva
a las capas superiores de las transiciones entre
medios que pueden
producirse.
Los métodos de control de acceso al medio utilizados dependerán de si
los nodos comparten los medios, de cómo lo hacen y del tipo de conexión entre
los nodos. En situaciones de medios compartidos estos métodos deben aportar
un equilibrio entre el grado de control requerido y las colisiones que se pueden
producir. A mayor control menor número de colisiones pero mayor sobre carga
en el proceso y viceversa.
Existen dos métodos básicos de control de acceso al medio para medios
compartidos: Controlado y Basado en la contención.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 79 de 185
Redes malladas con Arduino para el Internet de las cosas
 En el método Controlado, los dispositivos de red toman turnos en
secuencia para acceder al medio. A este método se lo conoce como
acceso programado o determinístico. Si un dispositivo no necesita
acceder al medio, la oportunidad de utilizar el medio pasa al siguiente
dispositivo en línea. Cuando un dispositivo coloca una trama en los
medios, ningún otro dispositivo puede hacerlo hasta que la trama haya
llegado al destino y haya sido procesada por el destino.
Aunque el acceso controlado está bien ordenado y provee
rendimiento predecible, los métodos determinísticos pueden ser
ineficientes ya que un dispositivo tiene que esperar su turno antes de
poder utilizar el medio independientemente de que éste esté ocupado.
 En el método Basado en la contención, todos los nodos compiten por
el uso del medio. Cualquier dispositivo tratara de obtener acceso al
medio cuando haya datos para enviar.
Estos métodos usan un proceso de Acceso múltiple por
detección de portadora (CSMA o Carrier Sense Multiple Access) para
detectar primero si los medios están transportando una señal. Cuando
un dispositivo está intentando transmitir y nota que el medio está
ocupado, esperará y volverá a intentarlo después de un período de
tiempo corto. Si no se detecta una señal portadora, el dispositivo
Proyecto Fin de Carrera - Ingeniería en Informática
Página 80 de 185
Redes malladas con Arduino para el Internet de las cosas
transmite sus datos. Las redes Ethernet e inalámbricas utilizan control
de acceso al medio por contención.
CSMA es generalmente implementado junto con un método para
resolver la contención del medio. Los dos métodos comúnmente
utilizados son: CSMA/CD (with Collision Detection) y CSMA/CA (with
Collision Avoidance).
En CSMA/CD, el dispositivo monitoriza los medios para detectar
la presencia de una señal de datos. Si no hay una señal de datos, que
indica que el medio está libre, el dispositivo transmite los datos. Si luego
se detectan señales que muestran que otro dispositivo estaba
transmitiendo al mismo tiempo, todos los dispositivos dejan de enviar y
lo intentan después. Las formas tradicionales de Ethernet usan este
método.
En CSMA/CA el dispositivo examina los medios para detectar la
presencia de una señal de datos. Si el medio está libre, el dispositivo
envía una notificación a través del medio, sobre su intención de
utilizarlo. El dispositivo luego envía los datos. Este método es utilizado
por las tecnologías de redes inalámbricas 802.11.
Por último, señalar que los servicios y especificaciones de la capa de
enlace de datos se definen mediante varios estándares basados en una
variedad de tecnologías y medios a los cuales se aplican los protocolos.
Algunos de estos estándares integran los servicios de la Capa 2 y la Capa 1.
Las organizaciones de ingeniería que definen estándares y protocolos abiertos
que se aplican a la capa de enlace de datos incluyen:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 81 de 185
Redes malladas con Arduino para el Internet de las cosas
 Organización Internacional para la Estandarización (ISO)
 Instituto de Ingenieros Eléctricos y Electrónicos (IEEE)

Instituto Nacional Estadounidense de Estándares (ANSI)

Unión Internacional de Telecomunicaciones (ITU)
A diferencia de los protocolos de la capa superior que están
implementados principalmente en el software como el sistema operativo de
host o aplicaciones específicas, los procesos de la Capa de enlace de datos se
producen tanto en el software como en el hardware. Los protocolos en esta
capa se implementan dentro de la electrónica de los adaptadores de red con
los que el dispositivo se conecta a la red física.
6.4. NIVEL DE RED
La capa de red, o nivel 3 del modelo, tiene como objetivo principal el
hacer que los datos lleguen desde el nodo origen al nodo destino. Estos nodos,
habitualmente no cuentan con acceso directo uno a otro puesto que se ubican
en redes diferenciadas, separadas a su vez por otras redes. Los dispositivos
que permiten la transición entre estas redes son los enrutadores.
Por tanto, las funciones más importantes de este nivel son las de las de
la identificación de la ubicación de los nodos mediante protocolos que definan
direcciones lógicas y la de determinar el camino o ruta optima de tránsito de los
datos a través de los sucesivos enrutadores hasta el destino final.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 82 de 185
Redes malladas con Arduino para el Internet de las cosas
Para la primera de las funciones, el direccionamiento lógico, protocolos
asociados a esta capa definen direcciones que permiten ubicar un nodo en
particular dentro de una red concreta. Ejemplos de estos protocolos son: IPX
que a partir de un número de 32bits define la red y el host mediante su MAC o
el protocolo IS-IS, que usa unas direcciones llamadas CLNP (nombre de otro
protocolo), que tienen una estructura más compleja que la basada en parte red/
parte host.
En el protocolo de Internet (IP), las direcciones IP consisten en un
número de 32bits (IPv4) al que se asocia una máscara de subred para
determinar qué parte de la dirección corresponde a la red y qué parte al host.
La versión IPv6 basada en direcciones de 128bits permitirá ampliar el número
de direcciones disponibles.
El protocolo de internet tiene en sus encabezados datos como la versión,
las direcciones origen y destino, unas banderas que controlan la fragmentación
en un enlace directo, otras banderas para calidad de servicio y otras opciones
por ejemplo, la encapsulación segura (ESP por sus siglas en inglés
Encapsulating Security Payload).
Una vez definidas las direcciones de los nodos extremos, la segunda
función principal, el enrutamiento, permite establecer el mejor tránsito posible
de los datos (designados paquetes en este nivel), en base a criterios
denominados métricas, a su vez asociada a distintas magnitudes: distancia,
Proyecto Fin de Carrera - Ingeniería en Informática
Página 83 de 185
Redes malladas con Arduino para el Internet de las cosas
coste, retardo de transmisión, número de saltos, etc., o combinaciones de
varias de éstas.
Para ello los routers, en base a la dirección de destino, encapsulada en
el paquete, han de determinar la dirección del reenvío de la información
recibida. Puesto que éstos 'conocen' únicamente las redes adyacentes deben
existir mecanismos que permitan intercambiar información sobre las redes y
ubicaciones entre los routers. Estos mecanismos son conocidos como
protocolos de enrutamiento (por ejemplo, RIP, IGRP u OSPF).
Existen algunas otras funciones adicionales que se vinculan en la
práctica a ésta capa, por ejemplo, el mapeado de direcciones lógicas a
direcciones físicas en ethernet se realiza con el protocolo (ARP) que se
considera de capa 3, la obtención automática de una dirección, parte de la
calidad de servicio (QoS), etc.
Otra funcion que cumple usualmente la capa de red es la fragmentación
en un enlace (en caso posible), que consiste en permitir que un paquete grande
se divida en varios paquetes pequeños, siendo responsabilidad del protocolo
de capa 3 en uso, controlar cuántos y cuáles fueron los fragmentos en los que
se dividió un paquete. Con IP eso sólo puede suceder en enlaces directos o
punto a punto.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 84 de 185
Redes malladas con Arduino para el Internet de las cosas
6.5. NIVEL DE TRANSPORTE
La capa de transporte, o nivel 4 del modelo, tiene como objetivo principal
el identificar flujos o conversaciones diferentes entre dos nodos de la red, es
decir; administrar las comunicaciones independientes entre dos nodos. La
PDU o Unidad de Datos genérica de la capa 4 la PDU tiene por nombre
Segmento o datagrama de datos.
En base a los niveles o capas previos los flujos de información
('conversaciones') que provienen de un dispositivo y van a otro, son
indistinguibles unos de otros con sólo la información y procesos implementados
hasta la capa 3.
Una conversación tiene como identificador general las direcciones origen
y destino (p. ej.: la IP u otra dirección de capa 3), pero para poder diferenciar
dos flujos de datos diferentes que ocurren simultáneamente entre el mismo
origen y destino se usan otros dos identificadores, uno para la conversación
saliente y otro para la entrante. Este concepto, a veces, es definido como
identificación de flujos de punto final a punto final o de extremo a extremo.
Por otro lado los protocolos de este nivel definen un tamaño máximo de
unidad llamado MSS -maximum segment size- para los Segmentos o
datagramas de datos. Cuando una comunicación llega a esta capa y tal
comunicación está compuesta por datos mayores a la MSS, se debe
segmentar la transmisión en partes de ese tamaño o menor que se puedan
Proyecto Fin de Carrera - Ingeniería en Informática
Página 85 de 185
Redes malladas con Arduino para el Internet de las cosas
transportar. De ser necesaria la segmentación, se hace necesaria la
identificación del orden de secuencia de cada segmento puesto que es posible
que los segmentos individuales tomen diferentes caminos y lleguen en un
orden distinto. La inclusión en cada segmento de su número de secuencia,
permite la reconstrucción ordenada de los datos así como detectar posibles
pérdidas de datos y hasta solicitar la retransmisión de tales datos lo que
redunda en mayor confiabilidad. Es decir, garantizar que si algún segmento se
pierde en el camino se pueda pedir la retransmisión y retribuir la pérdida
transparentemente.
Es función, así mismo, de esta capa el control del flujo. Es decir, facilitar
mecanismos para evitar que un emisor rápido desborde a un receptor lento
incapaz de entregar velozmente los datos recibidos a los procesos que los
necesitan.
Los protocolos más conocidos de este nivel son TCP y UDP dado que
forman parte de la definición de pila de protocolos TCP/IP. Ambos se ocupan
de diferentes necesidades de la capa de transporte, teniendo en común el uso
de
puertos para
diferenciar
las
conversaciones
entre
dos
nodos.
Normalmente quien origina el flujo de datos conoce a qué puerto enviar sus
datos y espera que el otro lado esté atento a ese puerto para responder.
TCP (Transmission Control Protocol) es un protocolo complejo que
obedece a la necesidad de una comunicación confiable. Dentro de los
mecanismos que implementa TCP para asegurar la confiabilidad está el
Proyecto Fin de Carrera - Ingeniería en Informática
Página 86 de 185
Redes malladas con Arduino para el Internet de las cosas
establecimiento de sesión, el uso de acuses de recibo y el control de flujo con
ventana deslizante.
UDP (User Datagram Protocol) por otro lado responde a una necesidad
de comunicación no confiable, es decir, una entrega simple de datos pequeños
que no requieren retransmisión ni acuses de recibo. En este caso la
confiabilidad es implementada por capas superiores o bien no se hace
necesaria debido a que la pérdida esporádica de fragmentos de información
(denominados datagramas en UDP) es irrelevante como puede ser el caso de
transmisión de una conversación de voz. A su vez el menor tamaño del
encabezado UDP (de 8bytes) frente a los 20bytes de UTP, lo hace más
eficiente para el envío de datos pequeños.
6.6. NIVEL DE SESIÓN
La capa de Sesión o nivel 5 del modelo, usa las funciones de la capa de
transporte para efectuar las suyas y ofrecérselas a la capa de presentación.
La capa de sesión permite a los usuarios de máquinas diferentes
establecer sesiones entre ellos. Una sesión permite el transporte ordinario de
datos, como lo hace la capa de transporte, pero también proporciona servicios
mejorados que son útiles en algunas aplicaciones.
A la capa de sesión usualmente se le responsabiliza de iniciar y
gestionar la conexión de alto nivel dentro de un servicio particular. Allí se
decide cuándo y cómo iniciar una conexión, qué requisitos debe cumplir y en
Proyecto Fin de Carrera - Ingeniería en Informática
Página 87 de 185
Redes malladas con Arduino para el Internet de las cosas
qué modalidad se llevará a cabo. Se encarga entonces de decidir si la
transmisión va a ser alternada, lo que en programación se suele llamar
sincronizada o bloqueante o no bloqueante o asíncrona, (las entidades
transmiten sin esperar a que el otro lado reciba la información).
Otra responsabilidad de la capa de sesión del modelo de referencia OSI
es establecer puntos de chequeo, de tal manera que si la operación es
interrumpida, la transacción pueda mantener su integridad, es decir, deshacer
todo o recuperar lo que se había hecho.
Finalmente, la capa de sesión también se ocupa del control de la
concurrencia. Cuando un servicio está en escucha y varias comunicaciones
intentan abrir una sesión con éste, la capa de sesión administra cuándo y cómo
se van a establecer las comunicaciones concurrentes con el servidor en
cuestión.
Algunos protocolos que realizan funciones a este nivel pueden ser; SAP,
tuberías nombradas de Unix/Linux, NetBIOS, RCP (llamada a procedimiento
remoto), SCP (protocolo de comunicación simple) o ASP (Protocolo de sesión
APPLE TALK).
6.7. NIVEL DE PRESENTACIÓN
La capa de presentación o nivel 6 del modelo permite la comunicación
entre aplicaciones en diversos sistemas informáticos de tal forma que sean
transparentes para las aplicaciones.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 88 de 185
Redes malladas con Arduino para el Internet de las cosas
La capa de presentación tiene la misión de presentar los datos en una
forma que el dispositivo receptor pueda comprender. Para ello debe gestionar
aspectos como el formateo, cifrado y compresión de los datos.
La Capa opera como traductor entre la sintaxis específica de las
aplicaciones y la sintaxis de la transferencia, permitiendo gestionar diferentes
tipos de códigos de representación de caracteres, imágenes, sonido, etc.
La capa 6 también es responsable del cifrado de datos con el objeto de
proteger información confidencial durante la transmisión. Para ello se utiliza
una clave de cifrado para cifrar los datos en el lugar origen y luego descifrarlos
en el lugar destino.
Otra de las funciones de esta capa de presentación es la compresión de
los datos. La compresión funciona mediante el uso de algoritmos (fórmulas
matemáticas complejas) para reducir el tamaño de los archivos. El algoritmo
busca patrones de bits repetidos en el archivo y entonces los reemplaza con un
token. Un token es un patrón de bit mucho más corto que representa el patrón
largo
Hay varios ejemplos de protocolos que se clasificarían en ésta capa:
ASN.1 y MIME. El primero es una forma normalizada de representar datos, es
decir, define una forma “estándar” de pasar un tipo de dato por una red, por
ejemplo, cómo codificar un número con punto decimal que sea reconocible
tanto en el extremo que lo envía como en el que lo lee sin importar si las
máquinas tienen arquitecturas diferentes (p. ej.: Windows y Unix). Mime es un
Proyecto Fin de Carrera - Ingeniería en Informática
Página 89 de 185
Redes malladas con Arduino para el Internet de las cosas
protocolo que también define tipos de datos, sólo que de un poco más alto
nivel. MIME se usa para transportar los archivos adjuntos en protocolos como
HTTP o SMTP, con él se definen tipos de archivo como IMAGE/JPG o
TEXT/HTML para enviar éstos archivos como parte de una página web o de un
mensaje de correo.
6.8. NIVEL DE APLICACIÓN
La capa de Aplicación o nivel 7 del modelo de referencia OSI, tiene
como principal función la de proveer mecanismos para que las aplicaciones
puedan acceder a los servicios de las demás capas y por tanto a la red. Así
mismo, define los protocolos que utilizan las aplicaciones para intercambiar
datos, como correo electrónico (POP y SMTP), gestores de bases de datos y
protocolos de transferencia de archivos (FTP). En algunos casos actúa demás
como interface para los usuarios y los procesos de aplicaciones para tener
acceso a servicios de red.
Otras funciones específicas asociadas a esta capa son:
 Uso compartido de recursos y redirección de dispositivos
 Acceso a archivos remotos.
 Acceso a la impresora remota.
 Comunicación entre procesos.
 Administración de la red.
 Servicios de directorio.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 90 de 185
Redes malladas con Arduino para el Internet de las cosas
 Mensajería electrónica (como correo).
 Terminales virtuales de red.
La capa utiliza los protocolos de las aplicaciones y servicios. Los
protocolos especifican como se estructuran los datos dentro de los mensajes y
los tipos de mensajes posibles a intercambiar entre origen y destino. Estos
tipos de mensajes pueden ser, por ejemplo; solicitudes de servicio, acuses de
recibo, mensajes de datos, mensajes de estado o de error.
Dada la variedad de aplicaciones y servicios de red, existen multitud de
protocolos, siendo los más populares entre otros los siguientes: FTP para
transferencia de archivos, HTTP, HTTPS para aplicaciones web, DNS para
resolución de nombres, TELNET, SSH para conexiones remotas, DHCP para
configuración dinámica de direcciones o SMTP, POP para servicios de correo.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 91 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 92 de 185
Redes malladas con Arduino para el Internet de las cosas
7.
HARDWARE PARA ESTE PROYECTO
Para conseguir el objetivo del proyecto ha sido necesaria la conexión de
diversos módulos hardware, los cuales detallaremos a continuación. En la
sección de anexos puede encontrarse la manera en que deben conectarse
todos estos componentes según el caso de uso.
7.1. TARJETA ARDUINO GBOARD PRO
7.1.1.
VISIÓN GENERAL
GBoard Pro es la única placa Arduino con módulo SIM900 GSM/GPRS,
zócalo Xbee, interfaz para el módulo nRF24L01+, interfaz tarjeta micro SD,
interfaz paralela ITDB02 para modulo LCD. Permite en un único bloque
electrónico control inalámbrico vía XBee, nRF24L01+, o GSM/GPRS con
funciones que van desde un hogar inteligente hasta el control remoto de robots.
7.1.2.
ESPECIFICACIONES
 Tamaño de la placa: 131.0mm X 68.8mm X 1.6mm
 Alimentación: 7~23V DC
 Voltaje de operación: 3.3V DC
 Microcontrolador: ATmega2560
 Indicadores: PWR, NET, Status, Test
 Interfaces de comunicación: XBee, nRF24L01+,UART, IIC, ITDB02 LCD,
micro SD
Proyecto Fin de Carrera - Ingeniería en Informática
Página 93 de 185
Redes malladas con Arduino para el Internet de las cosas
7.1.3.
CARACTERÍSTICAS ELÉCTRICAS
Característica
Min.
Valor típico
Max.
Unidades
Alimentación
7
-
23
VDC
Entrada en alto
3
3.3
3.6
V
Entrada en bajo
-0.3
0
0.5
V
Media de consumo de corriente
-
100
500
mA
Máximo consumo puntual
-
-
2
A
7.1.4.
HARDWARE
FIGURA 7-1 PLACA GBOARD PRO
Proyecto Fin de Carrera - Ingeniería en Informática
Página 94 de 185
Redes malladas con Arduino para el Internet de las cosas
7.1.5.
MAPA DE PINES
Interfaz del módulo paralelo LCD ITBD02
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
GND
GND
GND
2
DB0
D37
PC0
3
VCC
4.2V
-
4
DB1
D36
PC1
5
NC
-
-
6
DB2
D35
PC2
7
LCD_RS
D38
PD7
8
DB3
D34
PC3
9
LCD_WR
D39
PG2
10
DB4
D33
PC4
11
LCD_RD
3V3
3V3
12
DB5
D32
PC5
13
DB8
D22
PA0
14
DB6
D31
PC6
15
DB9
D23
PA1
16
DB7
D30
PC7
17
DB10
D24
PA2
18
Touch_CLK
D6
PH3
19
DB11
D25
PA3
20
Touch_CS
D5
PE3
21
DB12
D26
PA4
22
Touch_DIN
D48
PL1
23
DB13
D27
PA5
24
Touch_BUSY
-
-
Proyecto Fin de Carrera - Ingeniería en Informática
Página 95 de 185
Redes malladas con Arduino para el Internet de las cosas
25
DB14
D28
PA6
26
Touch_DOUT
D3
PE5
27
DB15
D29
PA7
28
Touch_IRQ
D2
PE4
29
LCD_CS
D40
PG1
30
SD_MISO
D50
PB3
31
NC
-
-
32
SD_SCK
D52
PB1
33
LCD_RST
D41
PG0
34
SD_MOSI
D51
PB2
35
NC
-
-
36
SD_CS
D53
PB0
37
LED+
3V3
3V3
38
NC
-
-
39
LED-
GND
GND
40
NC
-
-
Interfaz de conectores
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
EB0
A0
PF0
2
EB1
A1
PF1
3
EB2
A2
PF2
4
EB3
A3
PF3
5
EB4
A4
PF4
6
EB5
A5
PF5
7
EB6
A6
PF6
8
EB7
A7
PF7
9
EB8
A8
PK0
10
EB9
A9
PK1
11
EB10
A10
PK2
Proyecto Fin de Carrera - Ingeniería en Informática
Página 96 de 185
Redes malladas con Arduino para el Internet de las cosas
12
EB11
A11
PK3
13
EB12
A12
PK4
14
EB13
A13
PK5
15
EB14
A14
PK6
16
EB15
A15
PK7
17
SCL
D21
PD0
18
SDA
D20
PD1
19
RX1
D19
PD2
20
TX1
D18
PD3
Modulo nrf24l01+
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
GND
-
-
2
3V3
-
-
3
CE
D12
PB6
4
CS
D11
PB5
5
SCK
D9
PH6
6
MOSI
D8
PH5
7
MISO
D7
PH4
8
IRQ
-
PE7
Micro SD Socket
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
SD_CS
D4
PG5
2
SD_MOSI
D51
PB2
3
3V3
-
-
4
SD_SCK
D52
PB1
5
GND
-
-
6
SD_MISO
D50
PB3
Proyecto Fin de Carrera - Ingeniería en Informática
Página 97 de 185
Redes malladas con Arduino para el Internet de las cosas
Interfaz XBee
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
XBee_DOUT
D15(RX3)
PJ0
2
XBee_DIN
D14(TX3)
PJ1
3
XBee_RESET
D49
PL0
Interfaz de comunicaciones SIM900
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
SIM900_TXD
D17(RX2)
PH0
2
SIM900_RXD
D16(TX2)
PH1
3
SIM900_RST
D47
PL2
4
SIM900_PWR
D46
PL3
7.1.6.
INDICADORES
PWR: Indicador de corriente. Normalmente “on” indica un correcto
suministro de energía en la GBoard Pro.
Estado: Indicador de estado. Normalmente “on” indica que SIM900
todavía esta encendido.
NET: Indicador de Red,
 “off” indica que SIM 900 no funciona.
 Ciclo “on” de 64 ms. y “off” 800 ms. indica que SIM900 no puede
encontrar la red.
 Ciclo “on” de 64 ms. y “off” 3000 ms. indica que SIM900 está registrado
en la red.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 98 de 185
Redes malladas con Arduino para el Internet de las cosas
 Ciclo “on” de 64 ms. y “off” 300 ms. indica comunicación GPRS.
7.1.7.
BOTONES
Reset: Botón de “reset”, presiona el botón para reiniciar el ATmega2560.
SIM_Reset: Botón de “reset” SIM900, presiona el botón para resetear el
SIM900
SIM_Power: Botón de encendido SIM900, si el SIM900 está apagado,
se encenderá manteniendo el botón pulsado durante más de 500 ms. Si
SIM900 esta encendido se apagará manteniendo presionado el botón durante
más de 500 ms.
7.1.8.
SIM900
CONEXIÓN DE ALIMENTACIÓN Y RESET DEL
En la Gboard Pro, los botones de encendido y apagado para el módulo
SIM900 pueden ser manipulados vía software con los pines de entrada/salida,
la conexión de estos pines se muestra a continuación:
Pin Arduino
Pin SIM900
Activo
D46
PWR
Activo en alto
D47
RESET
Activo en alto
Proyecto Fin de Carrera - Ingeniería en Informática
Página 99 de 185
Redes malladas con Arduino para el Internet de las cosas
7.2. TARJETA ARDUINO WBOARD PRO
7.2.1.
VISIÓN GENERAL.
WBoard Pro es una placa de desarrollo wifi basada en Arduino
MEGA2560. Cuenta con un chip en placa ESP8266 (que tiene el firmware ya
cargado en él). Puedes programar el ESP8266 para conectarte a internet a
través de los puertos serie. Wboard Pro soporta la librería IoTgo para agilizar el
desarrollo de los proyectos.
7.2.2.
CARACTERISTICAS.
Interfaz Bee estándar, interfaz nRF24L01+, zócalo para tarjeta SD,
indicadores Led de Test y corriente.
Chip ESP8266 integrado en la placa que permite las conexiones a
internet via WIFI.
Interfaz de 40 pines compatible con Raspberry Pi, por lo que puede
usarse con la mayoría de los complementos de Raspberry Pi.
Diseñada para usarse dentro de una carcasa.
7.2.3.
ESPECIFICACIONES.
Pin Arduino
Pin SIM900
Tamaño PCB
90 x 60 x 1.6mm
Interface
Interfaz estándar Bee, interfaz nRF24L01+, uSD, uUSB
Indicadores
PWR, Test
Proyecto Fin de Carrera - Ingeniería en Informática
Página 100 de 185
Redes malladas con Arduino para el Internet de las cosas
7.2.4.
CARACTERISTICAS ELECTRICAS
Característica
Símbolo
Min.
Valor típico
Max.
Unidades
Alimentación
Vsupply
7
-
23
VDC
Entrada en alto
VDD
3
3.3
3.6
V
Entrada en bajo
VIH
-0.3
0
0.5
V
Media de consumo de corriente
VIL
-
100
500
mA
Máximo consumo puntual
IDD
-
-
2
A
7.2.5.
HARWARE
FIGURA 7-2 PLACA WBOARD PRO
Proyecto Fin de Carrera - Ingeniería en Informática
Página 101 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 7-3 FOTO WBOARD PRO
Aclaraciones sobre el uso del Jumper 3 y FW
J3: Cuando hay jumpers conectando 2-4 y 1-3, CP2102 conectará con el
Puerto UART0 del Mega2560. Conectando 4-6 y 3-5, CP2102 conectará con el
Puerto UART0 del ESP8266.
FW: Conecta el pin GPIO0 a masa GND. Si quieres actualizar el
firmware en el ESP8266, se debe conectar un jumper en FW. Después del
reset del ESP8266, se puede comenzar con la actualización del firmware en el
ESP8266.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 102 de 185
Redes malladas con Arduino para el Internet de las cosas
E-RESET: Reseteo del ESP8266. El pin de reset del ESP8266 está
conectado al PC0 (Arduino D37) del Mega2560. Si se establece PC0 a bajo, se
puede hacer un reseteo suave del ESP8266.
7.2.6.
MAPA DE PINES
Interfaz Rpi
Posición en la Interfaz
Nombre de la interfaz
Índice Arduino
Pin Atmega 2560
1
3V3
2
5V
3
IIC-SDA
PD0
D20
4
5V
5
IIC-SCL
PD1
D21
6
GND
7
GPIO0
PF0
A0
8
TXD2
PH1
D16
9
GND
10
RXD2
PH0
D17
11
GPIO1
PF1
A1
12
GPIO2
PF2
A2
13
GPIO3
PF3
A3
14
GND
15
GPIO4
PF4
A4
16
GPIO5
PF5
A5
17
3V3
18
GPIO6
PF6
A6
19
SPI-MOSI
PB2
D51
20
GND
21
SPI-MISO
PB3
D50
Proyecto Fin de Carrera - Ingeniería en Informática
Página 103 de 185
Redes malladas con Arduino para el Internet de las cosas
22
CS
PG1
D40
23
SPI-SCK
PB1
D52
24
SPI-NSS
PB0
D53
25
GND
26
GPIO7
PF7
A7
27
GPIO8
PK0
A8
28
GPIO9
PK1
A9
29
GPIO10
PK2
A10
30
GND
31
GPIO11
PK3
A11
32
GPIO12
PK4
A12
33
GPIO13
PK5
A13
34
GND
35
GPIO14
PK6
A14
36
GPIO15
PK7
A15
37
RST
PG0
D41
38
WR
PG2
D39
39
GND
40
RS
PD7
D38
Proyecto Fin de Carrera - Ingeniería en Informática
Página 104 de 185
Redes malladas con Arduino para el Internet de las cosas
7.3. ESP8266
FIGURA 7-4 FOTO WBOARD PRO
Esta placa permite las comunicaciones desde un microcontrolador como
puede ser Arduino. Se lanzó al mercado a finales del año 2014 y desde
entonces se ha popularizado en la comunidad “maker” y profesional por ser un
componente de bajo coste, que permite dar grandes capacidades de
comunicación a los proyectos. A continuación se puede ver una gráfica de
“Google Tendencias” que muestra este hecho.
FIGURA 7-5 GOOGLE TENDENCIAS ESP8266
7.3.1.
VISIÓN GENERAL
ESP8266 ofrece una solución completa para la conexión a redes WIFI,
permitiendo no solo alojar la solución sino descargar de ésta funcionalidad a
otros procesos.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 105 de 185
Redes malladas con Arduino para el Internet de las cosas
Si el ESP8266 aloja la aplicación y solo él es el procesador en el
dispositivo, es capaz de arrancar directamente de una memoria flash externa.
Tiene memoria cache integrada para mejorar el funcionamiento del sistema en
estas aplicaciones y para reducir las necesidades de memoria externa.
Alternativamente, funcionando como adaptador WIFI, se puede dotar a
cualquier microcontrolador a través del puerto Serie UART o con un puente
interfaz CPU AHB de capacidades de comunicación inalámbrica.
La capacidad de procesamiento y almacenamiento permiten a este
componente ser integrado con sensores y otros componentes a través de sus
pines GPIO.
7.3.2.
POSIBLES USOS
Algunos de los posibles usos que se pueden dar a este componente son:
 Enchufes inteligentes
 Domótica
 Redes malladas
 Control industrial inalámbrico
 Monitorización de bebes
 Cámaras IP
 Redes de sensores WSN
 Wereables electrónicos
 Tags Identificativos de seguridad
Proyecto Fin de Carrera - Ingeniería en Informática
Página 106 de 185
Redes malladas con Arduino para el Internet de las cosas
 Sistemas de balizas para posicionamiento
7.3.3.
COMANDOS AT
El modo de comunicación con este módulo es a través de comandos AT
que se envían a través del puerto UART0. En este caso del ESP8266.
El conjunto de comandos Hayes es un lenguaje desarrollado por la
compañía Hayes Communications que prácticamente se convirtió en estándar
abierto de comandos para configurar y parametrizar módems. Los caracteres
«AT», que preceden a todos los comandos, significan «Atención», e hicieron
que se conociera también a este conjunto de comandos como comandos AT.
Midiendo la longitud de los bits se puede determinar en detalle la velocidad de
transmisión.
Un aparato que implemente el conjunto de comandos Hayes se
considera compatible Hayes. Parte del conjunto de comandos Hayes fue
incluido por la ITU-T en el protocolo V.25ter, actual V.250. La adopción de este
estándar hizo superfluo el desarrollo de controladores específicos para distintos
módems.
A continuación se muestran algunos de los comandos AT que soporta
este dispositivo:
Comando
Descripción
Tipo
Parámetros y ejemplos
AT
Pruebas generales
Básico
-
Proyecto Fin de Carrera - Ingeniería en Informática
Página 107 de 185
Redes malladas con Arduino para el Internet de las cosas
AT+RST
Reinicio del modulo
Básico
-
AT+GMR
Comprobar la
Básico
-
Wifi
1= Sta, 2= AP, 3=both, Sta es el modo por defecto para un
versión del firmware
AT+CWMODE
Modo del wifi
router, AP es el modo por defecto para dispositivos
AT+CWJAP
Unirse al punto de
Wifi
ssid = ssid, pwd = wifi contraseña
acceso
AT+CWLAP
Listar los puntos de
Wifi
acceso
AT+CWQAP
Desconectar del
Wifi
punto de acceso
AT+ CWSAP
AT+CWLIF
Establecer los
Wifi
ssid, pwd, chl = canal, ecn = encriptacion; eg. Conectar a tu
parámetros del
router: AT+CWJAP="www.electrodragon.com","helloworld"; y
punto de acceso
comprueba si esta conectado: AT+CWJAP?
Comprobar la ip del
Wifi
dispositivo
conectado
AT+
Comprobar el
CIPSTATUS
estado de la
TCP/IP
<id>,<type>,<addr>,<port>,<tetype>= modo cliente o servidor
TCP/IP
id = 0-4, type = TCP/UDP, addr = dirección IP, port= puerto;
conexión
AT+CIPSTART
Establecer una
conexión TCP o
eg. Conectar a otro servidor ip, Establecer conexión multiple
UPD
primero: AT+CIPMUX=1; conectar:
AT+CIPSTART=4,"TCP","X1.X2.X3.X4",9999
AT+CIPMODE
Establecer el modo
TCP/IP
de transmisión
AT+CIPSEND
Enviar datos
0 no modo de datos, 1 modo de datos; devuelve "Link is
builded"
TCP/IP
eg. send data: AT+CIPSEND=4,15 y entonces enviar los
datos.
AT+CIPCLOSE
Cerrar la conexión
TCP/IP
TCP UDP
AT+CIFSR
Obtener la dirección
TCP/IP
IP
AT+ CIPMUX
Permitir conexiones
TCP/IP
0 para conexión simple 1 para conexión múltiple
TCP/IP
mode 0 para finalizar el modo servidor, mode 1 para abrir;
múltiple
AT+
Funcionar como
CIPSERVER
servidor
port = puerto; eg. Inicializar servidor TCP
AT+CIPSERVER=1,8888, comprobar la propia ip del
servidor: AT+CIFSR=?
AT+ CIPSTO
Establecer el
AT+CIP
timeout del servidor
STO=<ti
Proyecto Fin de Carrera - Ingeniería en Informática
Página 108 de 185
Redes malladas con Arduino para el Internet de las cosas
me>
+IPD
Información recibida
Para modo de conexión simple(CIPMUX=0): + IPD, <len>:
Para modo de conexión múltiple (CIPMUX=1): + IPD, <id>,
<len>: <data>
7.4. WEE SERIAL WIFI MODULE
FIGURA 7-6 WEE ESP8266
El módulo Wee es usado en el proyecto para facilitar la conexión de los
dispositivos a la placa principal. La ventaja de esta placa es que incorpora el
chip ESP8266 como el de la sección anterior y el de la WBoar Pro pero en este
caso está montado sobre una placa que cumple el estándar de conexión XBee
lo que nos permite usarlo sobre el zócalo que tiene la placa GBoar Pro.
Usando este zócalo reducimos el número de conexiones y aumentamos
la consistencia de todo el conjunto ya que este tipo de conexiones son mucho
más estables que usar cables conectados a los jumpers de las placas y nos
evitan posibles malos contactos durante el desarrollo de los prototipos.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 109 de 185
Redes malladas con Arduino para el Internet de las cosas
Este zócalo además permite que el fabricante haya expuesto más pines
del ESP8266 por lo que podrían usarse más funcionalidades a través de los
pines GPIO lo que en el caso anterior no es posible.
Índice del pin
Nombre del pin
1
3V3
2
TX
3
RX
4
-
5
RST#
6
-
7
FW
8
-
9
-
10
GND
11
-
12
-
13
MTMS
14
GPIO2
15
-
16
-
17
-
18
MTD0
19
MTCK
20
MTDI
Descripción
Permite resetear a estableciendo a “bajo”
Pin para actualizar firmware
Proyecto Fin de Carrera - Ingeniería en Informática
Página 110 de 185
Redes malladas con Arduino para el Internet de las cosas
7.5. NRF24L01
FIGURA 7-7 IMAGEN NFR24L01
7.5.1.
VISION GENERAL
Este módulo permite que varios microcontroladores sean capaces de
comunicarse entre sí de forma distante a través de una red inalámbrica.
 Permite manejar sensores remotos de temperatura, presión, alarmas,
etc…
 Comunicarse con Robots de control y vigilancia desde 10 a 500 metros
de distancia.
 Control remoto y monitorización de edificios cercanos y maquinaria.
 Vehículos autónomos de todo tipo.
Los transceptores NRF24L01 son una serie de módulos de radio de 2,4
GHz que se basan en el chip de Nordic Semiconductor nRF24L01+. El Nordic
nRF24L01+ integra un completo transceptor RF de 2,4 GHz, un sintetizador de
Proyecto Fin de Carrera - Ingeniería en Informática
Página 111 de 185
Redes malladas con Arduino para el Internet de las cosas
RF y toda la lógica de banda base incluyendo un acelerador de protocolo por
hardware Enhanced ShockBurst™ con una interfaz SPI de alta velocidad para
el controlador de la aplicación. El módulo Transceptor es de baja potencia y
corto alcance (200 metros más o menos).
7.5.2.
RANGO DE COBERTURA
El rango es muy dependiente de la situación de los transceptores y
tienen mucho más alcance cuando: están en la línea de visión, al aire libre sin
obstáculos como paredes y otros materiales. La distancia normal, que indican
los distintos proveedores para el módulo de baja potencia, es de unos 50
metros. Pero este valor es para espacio abierto entre unidades funcionando a
250 KHz, en interiores, el alcance es mucho menor como hemos comentado.
Se sugiere que las pruebas se realicen en ubicaciones reales antes de
tomar una decisión de cuál es la ideal para el proyecto. Hay unidades con un
preamplificador de antena para el receptor y un amplificador de potencia para
el transmisor que cuentan con antena externa.
La comunicación entre una unidad de este tipo y varias unidades de bajo
consumo producirá mejores resultados que utilizar dos unidades de baja
potencia. Cada situación es diferente y es difícil conseguir un número exacto
sin hacer pruebas reales.
Afortunadamente, el mismo producto se encargará, a nivel de placa, de
muchos de los detalles físicos y eléctricos, de la impedancia de adaptación de
Proyecto Fin de Carrera - Ingeniería en Informática
Página 112 de 185
Redes malladas con Arduino para el Internet de las cosas
antena, etc. Esta librería se encarga de la inicialización de registro de varios
detalles operativos.
Hay módulos adicionales que añaden amplificadores de potencia al
transmisor y preamplificadores al receptor para conseguir distancias más
largas, (aseguran que pueden llegar hasta 1 km). Estos módulos utilizan una
antena externa que puede ser una antena simple que esté directamente
conectada o un cable conectado a una antena con más ganancia o directividad.
Así es como se ven los diferentes tipos:
 2.4GHz
NRF24L01+
Antenna
Wireless
Transceiver
Module
For
Microcontrol
Esta es la versión de bajo consumo, con antena en zig-zag
incorporada.
 nRF24L01-LN-PA-2nRF24L01-LN-PA-1
Está la versión con amplificador de potencia de transmisión y
preamplificador para recepción. Los 8 pines se conectan con Arduino igual
en todas las versiones de transceptor y se utiliza el mismo software.
Estos transceptores pueden tanto enviar, como recibir datos en
“paquetes” de varios bytes a la vez. Incluyen una función de corrección de
errores y reenvío y es posible comunicar una unidad con hasta otras 6
unidades similares al mismo tiempo.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 113 de 185
Redes malladas con Arduino para el Internet de las cosas
Sin embargo, a pesar de su bajo coste estas unidades tienen una
increíble complejidad interna, pero gracias a algunas personas con talento
quienes han escrito las librerías para Arduino, los hacen fáciles de utilizar para
el resto de usuarios.
7.6. HM-10
FIGURA 7-8 HM-10
7.6.1.
VISION GENERAL
Bluetooth Low Energy (BLE) es una nueva funcionalidad añadida al
estándar Bluetooth a partir de la versión 4.0. La versión tradicional de Bluetooth
se denomina Bluetooth Classic para distinguirla de esta nueva versión. La
especificación se puede descargar desde este enlace. BLE surgió para
responder al requisito de "muy" bajo consumo que Bluetooth Classic no podía
cumplir. Principales características:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 114 de 185
Redes malladas con Arduino para el Internet de las cosas
BLE utiliza la misma banda (2.4GHz) que Bluetooth Classic o WIFI sin
embargo el protocolo está optimizado para evitar colisiones y reducir el
consumo de energía (tiempo en que la radio está emitiendo).
Un dispositivo puede implementar sólo BLE, sólo Bluetooth Classic o
ambos.
BLE no está pensando para streaming de datos (su throughput está en
el orden de bytes o unos pocos Kbyes por segundo).
BLE tiene un alcance real de unos pocos metros (Personal Area
Networks, PAN).
En la versión 4.0 aún no se define una funcionalidad mesh para generar
redes malladas de dispositivos (wireless sensor networks, WSN). La versión
4.1 ya incluye funcionalidad mesh. La versión 4.0 sólo permite la conexión
punto a punto entre dos dispositivos (por ejemplo un móvil se puede conectar a
varios dispositivos sensores, pero cada conexión es independiente).
El objetivo de BLE es conseguir objetos conectados que puedan tener
una vida útil de varios meses e incluso años alimentados con una pila de botón.
Su principal caso de uso actual es la conectividad con dispositivos
móviles. La gran mayoría de los móviles actuales soportan BLE (iOS, Android,
Windows Mobile, Blackberry). EL móvil sueles actuar como gateway para
conectar el objeto a Internet
Proyecto Fin de Carrera - Ingeniería en Informática
Página 115 de 185
Redes malladas con Arduino para el Internet de las cosas
El Módulo HM-10 abstrae y empaqueta una conexión Bluetooth Low
Energy en una conexión serie. En la configuración "de fábrica" del firmware el
módulo se comporta como un periférico BLE que expone un servicio BLE de
conectividad (UUID: 0000ffe0-0000-1000-8000-00805f9b34fb) que permite la
comunicación entre el módulo y cualquier otro dispositivo central que se
conecte a él. Para ello utiliza una característica (UUID: 0000ffe1-0000-10008000-00805f9b34fb) que almacena una lista de bytes (sin formato) con la
siguiente lógica de funcionamiento:
Cuando el dispositivo central quiere enviar algún dato al módulo, hace
un WRITE en la característica con el contenido del dato.
Cuando el módulo quiere enviar un dato al dispositivo central conectado,
envía una NOTIFICATION al dispositivo central.
El módulo HM-10 implementa una conexión serie en los pines 1 (TXD en
la placa breakout) y 2 (RXD) que está conectada a nivel lógico con la conexión
BLE. Todo lo que le entra por el pin RXD lo envía vía notificaciones al
dispositivo central y todo lo que escribe el dispositivo central se saca vía el pin
TXD. De esta forma aunque los dos dispositivos (módulo HM-10 y dispositivo
central) se están comunicando a través de BLE, de cara al micro que controla
el módulo se trata de una simple conexión serie. En el caso de Arduino, está
conexión se gestiona como cualquier otra conexión serie utilizando las librerías
Serial o SoftwareSerial según los pines de Arduino a los que se conecten los
pines TXD y RXD del módulo.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 116 de 185
Redes malladas con Arduino para el Internet de las cosas
7.7. DNFC
FIGURA 7-9 TAG DINAMICO NFC
Desarrollado por ElecFreaks y basado en la interfaz dinámica NFC
RF430CL330H de Texas Instruments, DNFC Tag, posibilita el intercambio de
datos gracias a comunicar su MCU con la interfaz I2C a una tasa de 848kbps y
una radio frecuencia de 13,65Mhz para cumplir con la ISO14443B.
Incluye una memoria SRAM de 3 kilobytes para mensajes NDEF, lo que
habilita a su MCU poder intercambiar mensajes vía I2C tanto en lectura como
en escritura a una distancia aproximada de 3 centímetros y de una manera
totalmente autónoma.
DNFC tag puede intercambiar datos fácilmente con dispositivos móviles
con NFC. Comparado con los tag de sólo lectura su principal ventaja recae en
la comunicación en tiempo real que puede soportar este dispositivo al ejercer
como puente entre ambos, usando su propio MCU y la interfaz I2C. No
Proyecto Fin de Carrera - Ingeniería en Informática
Página 117 de 185
Redes malladas con Arduino para el Internet de las cosas
debemos obviar que, al fin y al cabo, es sólo un tag aunque con características
especiales.
Estas características hacen posible que se pueda intercomunicar
mediante lectura y escritura sin intervención de placas externas por lo que se
puede escribir en él desde cualquier dispositivo y leer de él exactamente igual.
Si se quiere dotar de mayor funcionalidad, se puede acoplar a cualquier
plataforma de desarrollo y usarlo de forma independiente, sin tener que
controlarlo o gestionarlo. Sólo es necesario tenerlo en cuenta cuando surge
alguna interrupción que hayamos establecido y que debamos atender.
7.8. FOCA
FIGURA 7-10 IMAGEN FOCA V2.0
Proyecto Fin de Carrera - Ingeniería en Informática
Página 118 de 185
Redes malladas con Arduino para el Internet de las cosas
7.8.1.
VISIÓN GENERAL
Foca v2.0 es una placa de comunicación USB con UART que cuenta con
un socket de conexión XBee. Es la herramienta necesaria para las
comunicaciones entre un PC y la mayor parte de microcontroladores o Xbee.
Especialmente, es la herramienta óptima para las placas Arduino que no
cuentan con interfaz USB
7.8.2.
CARACTERISTICAS BÁSICAS
 Interfaz sencilla de comunicación serie asíncrona a USB.
 Tamaño reducido
 Implementación completa del protocolo USB.
 No requiere firmware.
 Selector 3.3v o 5.0v
 Compatible con Xbee
7.8.3.
ESPECIFICACIONES
Característica
Valor
Tamaño de la placa
45.72mm X 29.21mm X 1.6mm
Alimentación
5V DC
Indicadores
TX,RX,PWR
RoSH
Si
FIGURA 7-11 TABLA ESPECIFICACIONES FOCA
Proyecto Fin de Carrera - Ingeniería en Informática
Página 119 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 120 de 185
Redes malladas con Arduino para el Internet de las cosas
8.
SELECCIÓN DE TECNOLOGIA
Una vez evaluadas todas las tecnologías y realizadas pruebas de
comunicación con ellas, cuando fue posible, se tuvieron que considerar las
ventajas y desventajas de cada una de ellas con el fin de poder tomar una
decisión respecto de la tecnología que mejor se adaptaba a las necesidades
del proyecto.
Todas las tecnologías están basadas en emisiones radioeléctricas en la
banda libre de 2.4 GHz ya que nos evitan tener que disponer de una
infraestructura de cableado que seguramente no sea posible en muchos de los
escenarios.
La tecnología de ZigBee fue estudiada pero no se llegó a implementar
ningún prototipo puesto que se salía del ámbito del proyecto e iba en contra de
los requisitos del mismo que son el bajo coste y tecnologías libres.
Si bien con el estudio previo se vio que podía ser una de las opciones
candidatas a implementar, se trata de una tecnología propietaria que se sale de
las filosofías open hardware del proyecto y, además, en relación con el resto de
opciones evaluadas multiplicaba por 10 los costes.
La siguiente opción que se descartó fue el uso de Bluetooth. Si bien es
cierto que se consiguió hacer un prototipo funcional que nos permitía el
intercambio de mensajes entre dos microcontroladores, el principal problema
que se encontró fue que la implementación de buetooth 4.0 todavía no
Proyecto Fin de Carrera - Ingeniería en Informática
Página 121 de 185
Redes malladas con Arduino para el Internet de las cosas
incorporaba la opción de mesh networking, se espera esté disponible a partir
de la versión 4.1. Por tanto nuestra comunicación estaba limitada a una
conexión peer to peer entre dos máquinas.
Cabe destacar en esta opción los problemas que tuvimos con las placas
empleadas. Debido al tamaño de sus pines fue casi imposible poder trabajar
con ellas en un entorno doméstico y sin herramientas más profesionales.
La siguiente opción que descartamos debido a la complejidad de
desarrollo necesario fue el uso de nfr24l01.
Las placas se conectaban de un modo muy sencillo en las placas de
Itead y tanto la GBoard Pro como WBoard Pro cuentan con zócalos específicos
para este tipo de componentes.
Su precio era muy similar al de otras opciones como pueden ser el WIFI
o el Bluetooth 4.0.
Para el direccionamiento, recepción y confirmación de recepción de
mensajes se debían implementar al menos 4 de los niveles del modelo teórico
OSI que se salía del ámbito del proyecto.
Por suerte la comunidad de Arduino es muy amplia y hay gran cantidad
de código disponible para poder utilizar. Con algunas modificaciones
conseguimos hacer funcionar el código de “manicbug” que encontramos en
Proyecto Fin de Carrera - Ingeniería en Informática
Página 122 de 185
Redes malladas con Arduino para el Internet de las cosas
github de modo que pudimos asignar direcciones de red a varios
microcontroladores y poder intercambiar mensajes entre ellos.
Realizando estas pruebas pronto nos dimos cuenta de una limitación
importante en esta tecnología, el payload “tamaño del mensaje” era demasiado
pequeño (32 bytes) para los requerimientos de la solución planteada.
Ésto no es una limitación para los proyectos para los que están
pensados estos componentes como la creación de redes malladas de sensores
de temperatura o presión donde la información a intercambiar no es mucho
más que un valor entero o un bit si se trata de una entrada o salida digital.
Éste fue el motivo principal para descartar el nrf24l01 ya que nuestro
proyecto tiene unas necesidades de comunicación mayores usando el
protocolo HTTP. Por ejemplo, para el envío del fichero DEX se necesitan más
de 1024 bytes.
Una posible solución era haber partido la información e intercambiar
cada uno de los trozos, pero fue descartada ya que otra tecnología evaluada
nos ofrecía esta característica y se prefirió no “reinventar la rueda”.
La última opción fue usar WIFI. En las primeras reuniones del grupo no
parecía una opción muy viable debido al precio de los componentes.
A mediados del 2014 hacer que un microcontolador se comunicase por
WIFI suponía aumentar el presupuesto de nuestro proyecto entre 20 y 30 €.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 123 de 185
Redes malladas con Arduino para el Internet de las cosas
Pero a finales de año 2014 se empezaron a escuchar noticias sobre un
nuevo componente que estaba revolucionando el mercado y que permitía con
apenas 4 €, poder comunicar cualquier microcontrolador a través de una red
WIFI o incluso que fuera el microcontrolador el que expusiera un punto de
acceso para que otros dispositivos se conectaran él.
Este componente era el ESP8266 y permitía mediante un puerto UART
del Arduino establecer una comunicación bidireccional entre el componente y el
microcontrolador. Esta comunicación entre ambos se realiza mediante
comandos AT con un protocolo parecido al del SIM900.
Otra de las ventajas que se obtuvo usando WIFI fue que como toda la
plataforma está basada en el intercambio de mensajes HTTP, estos se envían
contra la API RESTFULL del servidor Slim y éste es el único punto de acceso a
toda nuestra plataforma. El proxy reverso se encarga de direccionar las
llamadas a los servidores correspondientes del propietario de la máquina.
El uso del WIFI nos añade una capa de seguridad que con otros
elementos de radiofrecuencia no teníamos ya que el punto de acceso WIFI que
expone la máquina Gateway está protegido mediante contraseña y las
comunicaciones son cifradas.
Uno de los problemas que nos encontramos al usar una única conexión
de datos compartida entre diferentes máquinas fue que recientemente se había
implementado un sistema de paso de mensajes a las máquinas a través de
SMS por lo que si queríamos mantener esa funcionalidad las máquinas a las
Proyecto Fin de Carrera - Ingeniería en Informática
Página 124 de 185
Redes malladas con Arduino para el Internet de las cosas
que se conectaba la Gateway debían poder recibir notificaciones de alguna
manera desde esta. Esta circunstancia obligó a configurar las máquinas cliente
también como máquinas que implementasen un servidor de modo que pudieran
recibir esas conexiones entrantes con la información que recibió el Gateway.
De este modo el servidor de SMS enviaría el SMS al Gateway y este se
encargaría de redistribuirlo a todos los posibles clientes que tiene conectados.
8.1. MOTIVOS
Los principales motivos para decidirnos por el uso del WIFI fueron:
 Reducido coste.
 Es una tecnología muy implementada y extendida.
 Implementa todos los niveles del modelo OSI.
 Permite el uso de peticiones HTTP RestFull ya empleadas en el proyecto
8.2. ALTERNATIVAS VIABLES
Aunque la decisión final fue el uso de los ESP8266, cabe destacar que el
uso del bluetooth 4.1, será igualmente una buena alternativa como solución al
intercambio de mensajes en una red mallada.
Incluso el uso de nrf24l01 podría ser usado modificando ligeramente la
forma en la que se intercambian los mensajes entre los nodos de la red.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 125 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 126 de 185
Redes malladas con Arduino para el Internet de las cosas
9.
CASOS DE USO
9.1. ESCENARIO MULTI-MÁQUINA, GPRS GATEWAY + WIFI
CLIENT
9.1.1.
CONTEXTO
Este escenario describe la situación en la que tenemos varias máquinas
en una misma ubicación. Para el estado previo del proyecto hubiéramos
necesitado cuatro placas con capacidades de comunicaciones GPRS y dar de
alta con el operador de telefonía móvil 4 líneas M2M diferentes, una para cada
máquina, con los elevados costes que esto supone.
Con la solución propuesta de la creación de una red mallada,
necesitaríamos un único módulo GPRS y una única línea de datos. Los nodos
clientes solo necesitarían un componente para la conexión WIFI de muy bajo
coste.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 127 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 9-1 ESCENARIO MULTIMÁQUINA
9.1.2.
ANÁLISIS DEL ESCENARIO
Todas las comunicaciones deben ser centralizadas en el nodo
“Gateway”, que debe actuar de servidor HTTP en el puerto 80 de la red interna
y para cada petición HTTP recibida de los nodos clientes. Éste debe
interceptarla y trasladarla al su módulo GPRS, una vez recibida la respuesta
desde la interfaz GPRS ésta debe ser devuelta al nodo cliente que comenzó la
comunicación, así conseguimos que toda la lógica de comunicaciones que se
estaba utilizando en el proyecto siga siendo válida. Lo único que se modifica es
el canal y el número de puntos por los que se transmite el mensaje.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 128 de 185
Redes malladas con Arduino para el Internet de las cosas
9.1.3.
DISEÑO, IMPLEMENTACIÓN Y EVALUACIÓN
FIGURA 9-2 ESCENARIO MULTIMÁQUINA
El primer paso en el desarrollo fue la conexión de un módulo WIFI
ESP8266 en las placas Gboard que nos permitiera funcionar como servidor y
permanecer a la escucha de las peticiones que pudieran hacer los clientes.
Pero antes de esto, fue necesario que el módulo WIFI expusiera un SSID al
que pudieran conectarse los clientes. Para ello se debe enviar el siguiente
comando AT:
AT+CWSAP="NOMBRESSID","CONTRSAEÑASSID",3,3
En esta llamada debemos pasar los siguientes parámetros: identificador
SSID de la red que queremos exponer, contraseña que usaran los clientes que
se quieran conectar, canal de comunicaciones y seguridad empleada.
Para que el módulo sea capaz de recibir conexiones, debemos ponernos
en modo escucha a través del siguiente comando:
AT+CWMODE=3
Proyecto Fin de Carrera - Ingeniería en Informática
Página 129 de 185
Redes malladas con Arduino para el Internet de las cosas
Con estos dos pasos, el módulo expone el punto de acceso y además
actúa de servidor atendiendo a peticiones del resto de dispositivos que puedan
estar conectados al punto de acceso.
Cuando llega una petición HTTP, se recibirá a través del puerto UART
del dispositivo WIFI un mensaje con la información del remitente así como el
contenido de la misma. Podemos ver un ejemplo de mensaje a continuación:
+IPD,1,250:GET /credit/ HTTP/1.1
Host: 10.40.10.1
Connection: keep-alive
Api-Key: fdG4fshk56
En este ejemplo vemos una llamada realizada por uno de los clientes y
recibida por la Gateway. En concreto es una llamada a la interfaz RestFull
credit. El primer parámetro “+IPD” identifica una petición recibida, el segundo
parámetro indica el número del cliente que ha realizado la petición, el tercer
parámetro indica el número de bytes que contiene la petición y, por lo tanto, el
número de caracteres que se deberán leer para obtener la petición completa.
La parte del cliente es común al escenario siguiente por lo que lo
trataremos en el próximo apartado.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 130 de 185
Redes malladas con Arduino para el Internet de las cosas
Para las pruebas y depuración se buscó la manera de poder simular las
peticiones HTTP y la escucha de las peticiones recibidas en un puerto. Con el
programa Hércules de la compañía www.hw-group.com pudimos simular esto y
nos fue útil para otros procesos del proyecto ya que en la misma herramienta
podemos: simular peticiones TCP contra un servidor, recibir conexiones TCP
provenientes de un cliente y simular la respuesta
FIGURA 9-3 INTERFAZ DEL PROGRAMA HERCULES
9.1.4.
CONCLUSIÓN
Fue posible mediante el ESP8266 exponer nuestro propio punto de
acceso WIFI con el SSID “OpenVend” por lo que cualquier dispositivo con WIFI
se podría conectar a nuestra red y comunicarse con los elementos que la
forman.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 131 de 185
Redes malladas con Arduino para el Internet de las cosas
Esta capacidad podría ser usada como medio de comunicación para
tareas de mantenimiento que pudieran ser realizadas in situ por un operario.
Se consiguió que las máquinas cliente se conectasen a este punto de
acceso y que pudieran hacer conexiones HTTP con el nodo “Gateway”. Éste
las recoge y las envía a través de su interfaz GPRS. Cuando recibe la
respuesta, la devuelve de nuevo a través del canal que comenzó la
comunicación.
Si se supone un escenario de 5 máquinas la reducción de costes en
cuanto a hardware seria aproximadamente de 75 €. Así mismo, reduce el
número de líneas M2M que deben ser dadas de alta con el operador de
telefonía de 5 a 1, ya que todas comparten la misma interfaz de salida.
9.2. ESCENARIO MÁQUINA INDIVIDUAL WIFI CLIENT
9.2.1.
CONTEXTO
FIGURA 9-4 ESCENARIO MÁQUINA CONECTADA POR WIFI
Proyecto Fin de Carrera - Ingeniería en Informática
Página 132 de 185
Redes malladas con Arduino para el Internet de las cosas
Éste es un escenario que se producía con cierta frecuencia y, de igual
manera que en el caso anterior, la solución propuesta supone una reducción de
costes tanto en hardware como en consumo de líneas móviles.
Este escenario es aplicable a lugares públicos donde existe una red
WIFI. Nuestra máquina podría conectarse para realizar las comunicaciones.
Supongamos un bar donde se tiene contratada una línea ADSL y se dispone de
una máquina de tabaco, en lugar de contratar una línea M2M para las
comunicaciones de la máquina, ésta se conectaría a la red WIFI ya existente.
Determinados operadores de telefonía están desplegando redes WIFI en
los núcleos urbanos, a los que se podrían conectar las maquinas, previa
negociación con el operador sobre los costes del uso de su infraestructura.
FIGURA 9-5 MAPA DE COBERTURA WIFI
9.2.2.
ANÁLISIS DEL ESCENARIO
Se analizará, el cliente WIFI que aplica tanto a la parte cliente del
Gateway del punto anterior como a este nuevo concepto, donde no existe un
Proyecto Fin de Carrera - Ingeniería en Informática
Página 133 de 185
Redes malladas con Arduino para el Internet de las cosas
nodo Gateway, y nos conectamos a una red WIFI ya contratada o a una
infraestructura ya desplegada por un operador de telefonía.
9.2.3.
DISEÑO, IMPLEMENTACIÓN Y EVALUACIÓN
En este escenario nos centramos solo en la parte cliente. Como punto
de partida se utilizaron las versiones entregadas por otros participantes del
proyecto. Lo que se realizó fue la sustitución de los módulos de
comunicaciones GPRS a través del SIM900, por unos nuevos módulos de
comunicación a través de WIFI y los ESP8266.
De igual manera que en las comunicaciones a través de GPRS, son
necesarios una serie de parámetros de configuración como son las
credenciales del APN. En WIFI son necesarios: el nombre del SSID al que nos
queremos conectar, usuario y contraseña. Todos estos parámetros se
configuran en el fichero “settings.h” del directorio raíz del código fuente.
Con el objetivo de hacer el código lo más fácil de mantener y en vistas
de que la parte de comunicaciones debía ser reemplazable (puede que más
adelante se desee usar otro sistema de comunicaciones como por ejemplo
Ethernet) se ha incluido un “define” que nos permite antes de la compilación del
proyecto decidir si queremos que el módulo de comunicaciones sea WIFI o
GPRS.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 134 de 185
Redes malladas con Arduino para el Internet de las cosas
Para poder establecer una comunicación WIFI lo primero que debemos
hacer es conseguir conectarnos al punto de acceso SSID del que necesitamos
conocer las credenciales del acceso, esto se consigue mediante el comando:
AT+CWJAP="<access_point_name>","<password>"
El módulo ESP8266 posee un comando para poder listar todos los
puntos de acceso disponibles.
AT+CWLAP
Una vez que estamos conectados al punto de acceso podemos consultar
la IP que nos ha sido asignada. En el caso de la conexión con el punto de
acceso al Gateway la ip será “10.40.10.X” donde X es un valor entre 1 y 5. En
el caso de conexión a un SSID ajeno, dependerá de la configuración de la red.
El siguiente paso es la conexión de un socket contra el servidor al que
queremos realizar una petición. Esto se realiza mediante el comando:
AT+CONECT 92.16.32.7 80
Que trata de establecer una conexión con el servidor en el puerto 80 que
es el puerto estándar para el protocolo HTTP.
Ya sólo queda enviar una petición siguiendo el estándar HTTP. Es muy
importante ser cuidadoso con los caracteres salto de línea ya que son
Proyecto Fin de Carrera - Ingeniería en Informática
Página 135 de 185
Redes malladas con Arduino para el Internet de las cosas
utilizados en el protocolo para distinguir entre la sección de cabeceras y la
sección del cuerpo de la petición.
GET /credit2/ HTTP/1.1
X-Apikey: eyagc9zffczXInF
Host: openvend.eu
Connection: close
REQUEST_BODY
Para poder realizar el envío de esta petición deberemos invocar el
comando SEND, indicando el número de bytes que vamos a enviar
AT+CIPSEND=180
Como respuesta a este comando, el módulo nos devolverá un prompt
donde comenzar a enviar la petición. Una vez enviada la petición obtendremos
un SEND OK y finalmente, recibiremos la respuesta en el mismo prompt.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 136 de 185
Redes malladas con Arduino para el Internet de las cosas
9.2.4.
CONCLUSIÓN
Tras haber implementado las comunicaciones a través de GPRS y WIFI,
se observaron grandes similitudes entre ambos procesos e incluso en los
comandos que se deben enviar a cada uno de los módulos de comunicaciones.
El concepto de interconectar varias máquinas de vending entre sí a través de
una red mallada de infraestructura es posible. Este escenario podría ser
extendido con mucha facilidad a otros de similares características.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 137 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 138 de 185
Redes malladas con Arduino para el Internet de las cosas
10. Trabajos futuros
 Limitar los accesos a peticiones del protocolo.
Como medida de seguridad se propone limitar las peticiones, a las que
respondería el nodo Gateway, a aquellas cuyo destino sea la comunicación con
la plataforma así como las que cumplen el protocolo de comunicaciones que se
ha implementado.
Aunque las conexiones de datos en los teléfonos móviles están cada vez
más extendidas, se plantea la posibilidad de que los compradores pudieran
conectarse al WIFI de la máquina para poder completar el proceso de compra.
Si la maquina hace de “hotspot”, se podría plantear un portal cautivo
donde la página de inicio sea le web App de compra y se puede ofrecer al
usuario ciertos minutos de navegación gratuita. En este escenario se puede
prescindir del NFC dinámico o cambiarlo por NFC estático para facilitar la
conexión WIFI. Este escenario también solventaría la falta de cobertura
2G/3G/LTE. Sería la maquina con su “hotspot” de WIFI la responsable de llevar
al usuario a internet, al usar la propia red de la maquina garantizamos la
presencia ya que de otro modo no podría estar conectado a nuestra red.
 Añadir BIDI en pantalla LCD para clientes sin NFC.
Si bien es cierto que cada vez son más los teléfonos que cuentan con la
tecnología NFC, todavía son muchos los que no la tienen. Por ello, para tratar
Proyecto Fin de Carrera - Ingeniería en Informática
Página 139 de 185
Redes malladas con Arduino para el Internet de las cosas
de llegar a un público más amplio se propone la incorporación a la máquina de
una pantalla LCD. En dicha pantalla se mostrará un código BIDI con la url de
acceso a la plataforma, que incorpore el token de acceso único.
Con ésto conseguimos llegar al 90% de la flota de teléfonos móviles, a
pesar de añadir un paso más de complejidad al proceso de compra.
 Uso de balizas Bluettoth como reclamo de posibles clientes.
Se propone el uso de beacons para atraer mayor cantidad de
compradores. Durante el estudio de las tecnologías que se podían emplear en
el proyecto se vio la posibilidad de usar bluetooth 4.0. En este proceso se
descubrió que existe un mecanismo de envío de notificaciones a teléfonos
móviles que están próximos a la máquina, a través de Bluetooth. La mejora
consiste en captar posibles nuevos clientes u ofertar productos con descuentos
a clientes existentes. Para la toma de decisiones sobre a quién o qué productos
ofertar se puede usar la información obtenida de Big Data en la plataforma.
 Extender la red mallada para aumentar el número de máquinas.
Una de las limitaciones de tienen los dispositivos ESP8266 es que sólo
se pueden conectar 5 dispositivos, por lo que en una Gateway no podemos
conectar
más
que
esas
máquinas.
Como
solución
se
propone
la
implementación de un Gateway WIFI-WIFI, de modo que ésto nos permita
extender la red con otros cinco clientes conectados a esa Gateway. Así
ampliaríamos nuestra red de árbol con nuevas ramas. El proceso se podría
Proyecto Fin de Carrera - Ingeniería en Informática
Página 140 de 185
Redes malladas con Arduino para el Internet de las cosas
repetir tantas veces como queramos pero siempre teniendo en cuenta el factor
limitante del ancho de banda de la conexión GPRS.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 141 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 142 de 185
Redes malladas con Arduino para el Internet de las cosas
11. Conclusiones
El desarrollo del proyecto me ha resultado muy interesante debido a
varios motivos. Por un lado, me ha permitido aumentar mis conocimientos de la
plataforma de Arduino y por otro, me ha dado la posibilidad de conocer
diversos campos del conocimiento a partir de los proyectos del resto de
compañeros, desde el cloud computing, administración de máquinas virtuales,
interfaces restfull, html5 hasta el Big Data. El aporte individual de cada uno
hace un gran conjunto.
Si algo he aprendido del mundo “maker” de Arduino es la impresionante
capacidad de escalabilidad de los proyectos, donde el límite lo pone la
imaginación de la persona. La unión de un Arduino con cualquier shield o con
un simple (o complejo) componente electrónico es una funcionalidad nueva
añadida, una mejora en la experiencia de usuario o una nueva información
publicada en un entorno de Big Data.
Son muchos los conceptos y aplicaciones relacionados con el Internet de
las cosas, desde un sensor de temperatura situado en medio de una ciudad, un
sistema de detección de incendios en medio de un bosque, un sistema de
localización gps, un sistema embarcado en un vehículo capaz de detectar un
accidente en base a las mediciones de un acelerómetro y envío de una alerta
con las posición del vehículo hasta un sistema de alumbrado inteligente en una
ciudad.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 143 de 185
Redes malladas con Arduino para el Internet de las cosas
Con esta plataforma la elaboración de un prototipo es como un juego de
construcción en el que las piezas van encajando unas encima de las otras, casi
sin posibilidad de equivocarte. Buena prueba de ello es que Arduino está
siendo utilizado en muchos colegios e institutos como medio de enseñanza de
nociones de programación a niños de entre 5 y 14 años.
Las “piezas” de este juego de construcción siempre parten de una placa
de Arduino que, podría ser como el cerebro principal del sistema al que se le
unen una serie de sensores y actuadores que le permiten interactuar con el
entono que le rodea:
 Comunicaciones WIFI, Ethernet, gprs, bluetooth, redes inalámbricas.
 Principales actuadores: motor, válvula de fluidos, bomba de fluidos,
motor, motor de pasos, motor brushless (empelado en drones), pantallas
lcd, pantallas eink
 Principales sensores: Temperatura presión, acelerómetros, giróscopos,
sensor de presión ,gps, lectores de huella digital,
En la mayoría de estas soluciones es igual de importante la plataforma
que recibe los datos que el modo en el que se lo presentamos al usuario,
siendo necesarios sistemas basados en el conocimiento que sean capaces de
recopilar, agrupar e interpretar la información recibida para aplicarla
posteriormente en la toma de decisiones. De nada nos sirve disponer de
cantidades ingentes de información si no somos capaces de convertirla en
información útil.
Por este motivo ha sido tan beneficioso para mi aprendizaje participar en
un proyecto donde están involucradas tantas personas y tantos campos del
Proyecto Fin de Carrera - Ingeniería en Informática
Página 144 de 185
Redes malladas con Arduino para el Internet de las cosas
conocimiento. Si bien no se puede ahondar en todas ellas, si permite tener una
visión global de las funcionalidades principales de cada una de ellas.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 145 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 146 de 185
Redes malladas con Arduino para el Internet de las cosas
BIBLIOGRAFÍA
Foro de usuarios del módulo SIM900 incluye un simulador,
http://m2msupport.net/m2msupport/forums/forum/at-command-tester/
Información de redes malladas, http://earchivo.uc3m.es/bitstream/handle/10016/11159/PFC%20Evaluacion%20experi
metal%20de%20redes%20malladas.pdf?sequence=1
Manual de comandos AT pare el SIM 900,
http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Com
mand%20Manual_V1.03.pdf
Repositorio de código del fabricante de las placas WBoard, Gboard
y Wee, https://github.com/itead
Repositorio de código para el módulo nrf24l01,
https://github.com/maniacbug
Tutorial de uso del módulo ESP8266,
http://www.instructables.com/id/Using-the-ESP8266-module/
Web del fabricante de la placa WBoard, Gboard y Wee,
http://imall.iteadstudio.com/
Web del fabricante del módulo ESP8266,
http://bbs.espressif.com/index.php
Proyecto Fin de Carrera - Ingeniería en Informática
Página 147 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 148 de 185
Redes malladas con Arduino para el Internet de las cosas
SIGLAS, ABREVIATURAS Y ACRÓNIMOS
AES
American Encryption Standard
ACK
Acknowledgement
AES
Advanced Encryption Standard
Ajax
Asynchronous JavaScript and XML
ANSI
American National Standards Institute
API
Application Programming Interface
APN
Access Point Name
BIOS
Basic Input/Output System
CA
Certificate Authority
CBC
Cipher Block Chaining
CCM
Counter with CBC-MAC
CoAP
Constrained Application Protocol
CoRE
Constrained RESTful Environment
CSS3
Cascading Style Sheets
DES
Data Encryption Standard
DEX
Data Exchange
DNFC
Dynamic Near Field Communication
DNS
Domain Name Server
DOM
Document Object Model
DTLS
Datagram Transport Layer Security
ECDH
Elliptic Curve Diffie-Hellman
EEPROM
Electrically Erasable Programmable Read-Only Memory
EFF
Electronic Frontier Foundation
EVA
European Vending Association
EVMMA
European Vending Machine Manufactures Association
FOTA
Firmware Over The Air
FTP
File Transfer Protocol
GPL
General Public Licence
Proyecto Fin de Carrera - Ingeniería en Informática
Página 149 de 185
Redes malladas con Arduino para el Internet de las cosas
GPRS
General Packet Radio Service
GSM
Global System for Mobile communications
HATEOAS Hypermedia as the Engine of Application State
HMAC
Hashed Message Authentication Code
HTML
HyperText Markup Language
HTML5
Hypertext Markup Language
HTTP
HyperText Transfer Protocol
HTTPS
Secured Hypertext Transfer Protocol
I+D
Investigación + Desarrollo
I2C
Inter Integrated Circuit
IaaS
Infrastructure as a Service
ICP
Internal Communication Protocol
ICSP
In Circuit Serial Programming
IDE
Integrated Development Environment
IEC
International Electrotechnical Commision
IETF
Internet Engineering Task Force
IMEI
International Mobile system Equipment Identity
IOT
Internet Of Things
IR
Infrared
ISO
International Organization for Standardization
ISP
Serial Peripheral Interface
IV
Initialization Vector
JSON
JavaScript Object Notation
LCD
Liquid Crystal Display
LED
Light-Emitting Diode
LSB
Least Significant Bit
LWM2M
LightWeight M2M
M2M
Machine to Machine
MAC
Media Access Control
MCU
Micro-Controller Unit
Proyecto Fin de Carrera - Ingeniería en Informática
Página 150 de 185
Redes malladas con Arduino para el Internet de las cosas
MD5
Message-Digest Algorithm 5
MDB
Multi-Drop Bus
MDB/ICP
Multi Drop Bus / Internal Communication Protocol
MVC
Model - View - Controller
MVC(L)
Model - View - Controller - Language
NAK
Negative Acknowledgment
NAMA
National Automatic Merchandising Association
NDEF
NFC Data Exchange Format
NFC
Near Field Communication
NIST
National Institute of Standards and Technology
NRZ
Non Return to Zero
OMA
Open Mobile Alliance
OTA
Over The Air
OTP
One Time Password
Paas
Platform as a Service
PC
Personal Computer
PHP
PHP Hypertext Pre-Processor
PIN
Personal Identification Number
PKCS
Public-Key Cryptography Standards
PSK
Pre-Shared Keys
PYME
Pequeña Y Mediana Empresa
QR
Quick Response
QR Code
Quick Response Code
RAM
Random Access Memory
REST
Representational State Transfer
RFID
Radio Frecuency Identification
ROM
Read Only Memory
RSA
Rivest - Shamir - Adleman
SaaS
Software as a Service
SCP
Secure Copy
Proyecto Fin de Carrera - Ingeniería en Informática
Página 151 de 185
Redes malladas con Arduino para el Internet de las cosas
SD
Secure Digital
SGML
Standard Generalized Markup Language
SHA
Secure Hash Algorithm
SIM
Subscriber Identity Module
SMS
Short Message Service
SOAP
Simple Object Access Protocol
SPI
Serial Peripheral Interface
SRAM
Static Random-Access Memory
SSL
Secure Socket Layer
TCP
Transmission Control Protocol
TFTP
Trivial File Transfer Protocol
TLS
Transport Layer Security
TPV
Terminal Punto de Venta
UART
Universal Asynchronous Receiver-Transmitter
URL
Uniform Resource Locator
USB
Universal Serial Bus
UUID
Universally Unique Identifier
VLAN
Virtual Area Network
VMC
Vending Micro-Controller
W3C
World Wide Web Consortium
WDSL
Web Services Description Language
XML
Extensible Markup Language
Yourls
Your Own URL Shortener
Proyecto Fin de Carrera - Ingeniería en Informática
Página 152 de 185
Redes malladas con Arduino para el Internet de las cosas
ANEXOS
1.
API RestFull
GET credit
Resources
/credit
Request
Header
X-ApiKey: xxxxxx
Response
Hay crédito en la máquina
HTTP Status 200 OK
Body
JSON ↦ {“p”:“D1402041241C0050L21T001191”, "u":" 9K6XHO"}
No hay crédito
HTTP Status: 304 Not Modified
PIN necesario
HTTP Status: 300
Body
JSON ↦ {“p”:“D1402041241P1234”}
Proyecto Fin de Carrera - Ingeniería en Informática
Página 153 de 185
Redes malladas con Arduino para el Internet de las cosas
POST vend
Resources
/vend
Request
Header
X-ApiKey: xxxxxx
Body
JSON ↦ {“p”:“D1402041241S1T001191”}
Response
HTTP Status 200 OK
GET balance
Resources
/balance
Request
Header
X-ApiKey: xxxxxx
X-CardKey: xxxxxx
Response
HTTP Status 200 OK
Body
Proyecto Fin de Carrera - Ingeniería en Informática
Página 154 de 185
Redes malladas con Arduino para el Internet de las cosas
JSON ↦ {“p”:“D1402041241B0240”}
POST balance
Resources
/balance
Request
Header
X-ApiKey: xxxxxx
X-CardKey: xxxxxx
Body
JSON ↦ {“p”:“D1402041241B0200”}
Response
HTTP Status 200 OK
POST dex
Resources
/dex
Request
Header
X-ApiKey: xxxxxx
Body
JSON ↦ {“d”:“....”}
Proyecto Fin de Carrera - Ingeniería en Informática
Página 155 de 185
Redes malladas con Arduino para el Internet de las cosas
Response
HTTP Status 200 OK
GET token
Resources
/token
Request
Header
X-ApiKey: xxxxxx
Response
HTTP Status 200 OK
Body
JSON ↦ {"u":"9K6XHO"}
GET apikey
Resources
/apikey
Request
Headers
X-SN: xxxxxx
Response
HTTP Status 200 OK
Proyecto Fin de Carrera - Ingeniería en Informática
Página 156 de 185
Redes malladas con Arduino para el Internet de las cosas
Body
JSON ↦ {“k”:“abcde”},
GET status
Resources
/status
Request
Headers
X-ApiKey: xxxxxx
Response
HTTP Status 200 OK
Body
JSON ↦ {“p”:“D1402041241S1”}
Proyecto Fin de Carrera - Ingeniería en Informática
Página 157 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 158 de 185
Redes malladas con Arduino para el Internet de las cosas
2.
Diagrama de conexión del cliente WIFI
Para el cliente WIFI, como se ha comentado anteriormente, se ha usado
la placa WBoar PRO del fabricante Itead que incluye un microcontrolador Mega
2560 y un ESP8266 integrado en la placa que permite las conexiones WIFI.
Debido a ciertas necesidades del proyecto en cuanto al uso de interrupciones y
la implementación del fabricante del módulo ESP8266 en la placa tuvimos que
desechar la opción de usar el módulo integrado y optar por usar un módulo “al
aire” por lo que en lugar de usar la placa WBoard PRO ésta podría ser
sustituida por una IteadDuino Mega 2560. La relación de costes es
prácticamente la misma en ambos casos.
FIGURA 2-1 DIAGRAMA DE CONEXION CLIENTE WIFI
Proyecto Fin de Carrera - Ingeniería en Informática
Página 159 de 185
Redes malladas con Arduino para el Internet de las cosas
En la parte izquierda del diagrama encontramos la WBoard PRO, en la
parte inferior ESP8266, en la parte izquierda DNFC y en la parte superior la
conexión con la máquina real.
Los módulos DNFC, ESP8266 y VMC están conectados a los pines VCC
3.3v y GND de la Gboard. Finalmente la GBoar debe estar conectada a una
fuente de alimentación recomendada de 12v. y 2 Amperios. Las necesidades
de intensidad de corriente no son tan elevadas como en el caso de la GBoard
PRO, ya que en este caso no es necesaria la sobre alimentación del módulo
GPRS.
MDB: Está conectado al puerto UART3 de la Wboard que se encuentra
en los pines 2 y 3 “Tx y Rx respectivamente” del zocalo XBee.
DNFC: El tag dinámico se conecta mediante el protocolo de
comunicaciones serie I2C. Para ello hace uso de los pines SDA y SCL que se
encuentran en los pines 3 y 5 de la implementación de conector Rpi que tiene
la WBoard. Esta interfaz de conexión la ha popularizado la placa Raspberry Pi,
que es una placa similar a las empleadas en este proyecto, con la principal
característica de contar con un procesador más potente “ARM a 700 MHz”,
sobre el que se ejecutan versiones reducidas de Linux.
Además hace uso de otras dos conexiones, el pin de interrupción y el pin
de reset.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 160 de 185
Redes malladas con Arduino para el Internet de las cosas
El primero lo debíamos conectar a uno de los 6 pines de interrupción del
Mega2560, el problema que encontramos fue que el fabricante decidió no
exponer en la placa un conector para todos los pines con los que cuenta el
Mega 2560 y otros estaban siendo usados por las funciones añadidas a la
placa. Como solución se planteó dejar de usar el chip wifi de la placa y usar
una de sus conexiones como chip de interrupción Int3. Para trabajos futuros se
plantea encargar un nuevo diseño a Itead en el que se expongan el resto de
pines de interrupción u optar por algún otro modelo de placa como puede ser la
IteadDuino.
El segundo, el pin Reset del Dnfc se conecta al pin A25 del Mega que
corresponde con el pin 25 de la interfaz Rpi.
ESP8266: este es el módulo que hemos tenido que añadir, aunque sea
redundante, debido a los problemas que encontramos en el uso de
interrupciones comentadas en el apartado anterior. Este módulo se conecta al
UART2 del Mega 2560.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 161 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 162 de 185
Redes malladas con Arduino para el Internet de las cosas
3.
Diagrama de conexión de la pasarela GRPS-WIFI
Para el Gateway GRPS-Wifi se ha optado por una placa GBoard PRO
del mismo fabricante. Esta placa cuenta con un microcontrolador Mega 2560 y
con un módulo SIM 900 mediante el cual se pueden realizar conexiones de
datos con el operador de telefonía. Para ello se debe usar una tarjeta SIM en el
zócalo.
Este módulo de comunicaciones tiene unos grandes requisitos de
intensidad de corriente por lo que se requiere que la fuente de alimentación
empleada sea lo más estable posible y proporcione 2 Amperios o más. En caso
contrario podemos encontrarnos con comportamientos inesperados de este
módulo de comunicaciones.
Para la comunicación WIFI se ha optado por el módulo ESP8266, igual
que en el caso del cliente WIFI, pero aquí para tratar de reducir la complejidad
de las conexiones se ha usado la Wee de IteadStudio que incorpora este chip
en una placa que sigue el estándar de conexión del zócalo ZigBee, por lo que
no es necesaria ninguna conexión adicional (parte superior del diagrama).
Proyecto Fin de Carrera - Ingeniería en Informática
Página 163 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 3-1 DIAGRAMA DE CONEXION GATEWAY GPRS WIFI
MDB: Está conectado al puerto UART1 de la Gboard que se encuentra
debajo del zócalo EB0-15 y debajo del conector I2C.
GPRS: Según la implementación del fabricante el módulo SIM 900 está
conectado al puerto UART2 del Arduino Mega 2560. Además usa el pin 46
como pin de “power” para el reseteo e inicialización de la placa.
DNFC: El tag dinámico se conecta mediante el protocolo de
comunicaciones serie I2C. Para ello hace uso de los pines SDA y SCL que se
encuentran debajo del zócalo EB0-15.
El pin de interrupción que se conecta al PIN EB15 y el pin de Reset del
Dnfc se conectará al pin T-DOUT de la interfaz LCD.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 164 de 185
Redes malladas con Arduino para el Internet de las cosas
4.
Actualización del firmware del módulo ESP8266
Este módulo fue comercializado a finales del año 2014. Si bien es cierto
que ha supuesto una gran revolución debido a su bajo coste y sus capacidades
de conexión, más cierto es, que hasta mediados del 2015 el módulo ha recibido
más de 20 actualizaciones en su firmware. Estas modificaciones se deben a la
inclusión de nuevas funcionalidades por parte del fabricante pero también a la
respuesta de éste ante los numerosos errores detectados por la comunidad.
Probablemente el fabricante quería distribuirlo lo antes posible para
adelantarse en el mercado. Esta política hizo que algunas versiones
distribuidas no fuesen operativas y, al final, somos los usuarios los que
realmente hacemos el proceso de beta tester para el fabricante.
Durante el desarrollo del proyecto se tuvo que actualizar dos veces el
firmware de las placas. Una de ellas porque la versión que vino de fábrica no
permitía acceder a la mac del hardware y era la opción que estábamos
barajando para la generación del ApiKey en la plataforma y la otra por
problemas en el reconocimiento del salto de línea en la respuesta recibida por
el módulo.
Las versiones que el fabricante va liberando se pueden encontrar en:
http://bbs.espressif.com/viewforum.php?f=5
A continuación se detalla el proceso de actualización del firmware:
Conexión de la Foca inicial
Proyecto Fin de Carrera - Ingeniería en Informática
Página 165 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 4-1 PINES DEL ESP8266
Foca <--> ESP8266
GND <--> GND
TX <--> RX
RX <--> TX
VCC <--> VCC, CH_PD
DTR <--> NULL
NULL <--> RST
NULL <--> RST
NULL <--> GPIO0
NULL <--> GPIO2
Desde la interfaz de Arduino IDE se abre una conexión al puerto COM
de la Foca, en nuestro caso el 3, usamos "9600 baudio" y "Ambos NL & CR"
Proyecto Fin de Carrera - Ingeniería en Informática
Página 166 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 4-2 INTERFAZ DEL IDE ARDUINO PUERTO SERIAL
Si enviamos los comandos AT deberemos recibir un OK.
Si enviamos un AT+GMR recibiremos la versión del firmware
Con AT+RST haremos un reset del ESP8266. Se nos mostrará la
información del fabricante.
Comenzamos con la instalación del firmware:
Añadimos una conexión del pin GPIO0 del ESP8266 a GND de la Foca
Foca <--> ESP8266
GND <--> GND, GPIO0
TX <--> RX
RX <--> TX
Proyecto Fin de Carrera - Ingeniería en Informática
Página 167 de 185
Redes malladas con Arduino para el Internet de las cosas
VCC <--> VCC, CH_PD
DTR <--> NULL
NULL <--> RST
NULL <--> RST
NULL <--> GPIO2
Reiniciamos "Power cycle" desconectando el vcc de la foca y volvemos a
conectarlo.
Iniciamos la aplicación esp8266_flasher.exe
FIGURA 4-3 INTERFAZ DEL ESP8266 FLASH DOWNLOAD
Elegimos el fichero "AI-v0.9.5.0 AT Firmware.bin" y ponemos el puerto
COM de nuestra Foca, en nuestro caso el 3.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 168 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 4-4 INTERFAZ DEL ESP8266 FLASH DOWNLOAD
Cuando finaliza, aparece un mensaje que debemos ignorar "Failed to
leave Flash mode".
Desconectamos el pin GPIO0 de GND. Desconectamos y volvemos a
conectar.
De nuevo desde el IDE de Arduino podemos enviar el comando
"AT+CIPSTAMAC?" que pertenece al nuevo conjunto de comandos AT que
añade el firmware recién instalado.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 169 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 4-5 INTERFAZ DEL IDE ARDUINO MOSTRANDO MAC
En el caso que nos ocupa la MAC del dispositivo es 18:fe:34:9e:00:00.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 170 de 185
Redes malladas con Arduino para el Internet de las cosas
5.
Comandos AT de módulo WIFI ESP8266
En este esquema se detallan los posibles comandos AT que se pueden enviar al módulo en función del modo en el que esté
operando en ese momento.
FIGURA 5-1 DIAGRAMA DE COMANDOS AT
Proyecto Fin de Carrera - Ingeniería en Informática
Página 171 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 172 de 185
Redes malladas con Arduino para el Internet de las cosas
6.
Comandos AT de módulo GPRS SIM900
AT+CIPMUX
Iniciar conexión múltiple
AT+CIPSTART
Inicia una conexión TCP o UPD
AT+CIPSEND
Envía datos a través de una conexión TCP o UPD
AT+CIPQSEND
Selecciona el modo de transmisión
AT+CIPACK
Consulta el estado de la transmisión anterior
AT+CIPCLOSE
Cierra la conexión TCP o UDP
AT+CIPSHUT
Desactiva el contexto PDP anterior
AT+CLPORT
Establece el puerto local
AT+CSTT
Comienza una tarea y establece APR, usuario y password
AT+CIICR
Levanta la conexión inalámbrica con GPRS o CSD
AT+CIFSR
Obtiene la IP local
AT+CIPSTATUS
Consulta el estado de la conexión
AT+CDNSCFG
Configura el nombre del servidor
AT+CDNSGIP
Consulta la IP del nombre de dominio dado
AT+CIPHEAD
Añade una cabecera HTTP cuando se recibe información
AT+CIPATS
Establece temporizador de auto envió
AT+CIPSPRT
Establece el prompt de envío de datos
AT+CIPSERVER
Configurar como servidor
AT+CIPCSGP
Establece el modo de conexión GRPS o CSD
AT+CIPSRIP
Establece si se muestra la IP u puerto del remitente cuando se recibe información
AT+CIPMODE
Selecciona TCPIP como modo
AT+CIPCCFG
Configura el modo de transferencia transparente
AT+CIPSHOWTP
Muestra el protocolo de transferencia en la cabeceras cuando se recibe
información
AT+CGATT
Conectar/Desconectar del servicio GPRS
AT+CGDCONT
Define el contexto PDP
AT+CGQMIN
Calidad del perfil de servicio (Mínimo)
Proyecto Fin de Carrera - Ingeniería en Informática
Página 173 de 185
Redes malladas con Arduino para el Internet de las cosas
AT+CGQREQ
Calidad del perfil de servicio (Aceptable)
AT+CGACT
Activa o desactivar el contexto PDP
AT+CGDATA
Entrar en estado DATOS
AT+CGPADDR
Mostrar la dirección PDP
AT+CGCLASS
Tipo de la estación GPRS
AT+CGEREP
Controlar reporte de eventos GRPS no solicitados
AT+CGREG
Estado del registro en la red
AT+CGSMS
Seleccionar el servicio para mensajes SMS
AT+ SIDET
Cambiar la ganancia
AT+CPOWD
Apagar
AT+SPIC
Numero de reintentos restantes para PIN/PUK
AT+CMIC
Cambiar la ganancia del micrófono
AT+CALA
Establecer hora de alarma
AT+CADC
Leer ADC
AT +CSNS
Esquema de marcado simple
AT +CDSCB
Reset del dispositivo
AT +CMOD
Configurar modos de llamada alternativos
AT +CFGRI
Indicar RI cuando se use URC
AT+CLTS
Obtener la hora local
AT+CEXTHS
Control de auriculares externo
AT+CEXTBUT
Botón de reporte de estado de auriculares
AT+CSMINS
Reporte de inserción de SIM
AT+CLDTMF
Generación de tono DTMF local
AT+CDRIND
Indicador de fin de llamada
AT+CSPN
Obtener el proveedor de servicios de la SIM
AT+CCVM
Obtener o establecer el número del buzón de voz en la tarjeta SIM
AT+CBAND
Establecer y consultar la banda de operación
AT+CHF
Configurar manos libres
Proyecto Fin de Carrera - Ingeniería en Informática
Página 174 de 185
Redes malladas con Arduino para el Internet de las cosas
AT+CHFA
Intercambiar los canales de audio
AT+CSCLK
Configurar reloj lento
AT+CENG
Encender o apagar el modo Debug
AT+SCLASS0
Almacenar los SMS de clase 0 en la tarjeta SIM cuando se reciban
AT+CCID
Mostrar ICCID
AT+CMTE
Establecer la temperatura critica de operación o consultar la temperatura
AT+CSDT
Encender o apagar detección de tarjeta SIM
AT+CMGDA
Borrar todos los mensajes
AT+SIMTONE
Generar tono especifico
AT+CCPD
Identificador de línea
AT+CGID
Obtener el grupo identificador de la tarjeta SIM
AT+MORING
SHOW STATE OF MOBILE ORIGINATED CALL
AT+CMGHEX
Permitir enviar caracteres no ASCII
AT+AUTEST
Prueba del canal de audio
AT+CCODE
Configurar el modo de codificación SMS
AT+CIURC
Habilitar o deshabilitar presentación inicial URC
AT+CPSPWD
Cambiar contraseña súper PS
AT+EXUNSOL
Permitir o no indicaciones no solicitadas
AT+CGMSCLASS
Cambiar la clase de GRPS Multislot
AT+CDEVICE
Ver tipo Flash del dispositivo
AT+CCALR
Consulta de llamada preparada
AT+GSV
Muestra información de la identificación del producto
Proyecto Fin de Carrera - Ingeniería en Informática
Página 175 de 185
Redes malladas con Arduino para el Internet de las cosas
Proyecto Fin de Carrera - Ingeniería en Informática
Página 176 de 185
Redes malladas con Arduino para el Internet de las cosas
7.
Proceso de inicialización de un operador y una tienda
Para simular las llamadas de un cliente REST realizadas en este
proceso se ha usado el plugin de Chrome “DHC - REST/HTTP API Client” que
puede ser descargado con un navegador web desde la siguiente url:
https://chrome.google.com/webstore/detail/dhc-resthttp-apiclient/aejoelaoggembcahagimdiliamlcdmfm. Las capturas de pantalla de
peticiones REST han sido realizadas con este programa.
Accedemos a la siguiente url de administración con nuestro navegador
web:
http://openvend.eu/web/
Dentro del menú “propietarios” usamos la opción de la parte interior
“AddOwner”.
El nombre del operador NO debe contener números, mayúsculas ni
símbolos raros.
El tipo de hardware debe ser vending.small.
La máquina debe pedir el apliKey, indicando el IMEI o MAC del
dispositivo con la cabecera X-Sn:HARDWARE_SERIAL mediante una llamada
GET a http://openvend.eu/apikey/.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 177 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 7-1 INTERFAZ DHC ENVIO APIKEY
El siguiente paso es que la máquina envíe el fichero DEX, indicando el
ApiKey obtenido en el proceso anterior X-Apikey, mediante una llamada POST
a http://openvend.eu/dex/.
FIGURA 7-2 INTERFAZ DHC ENVIO APIKEY
El contenido de esta petición debe ir en una única línea. El DEX
debe contener los saltos de línea con los caracteres CR y LR \r y \n
respectivamente. Se debe poner atención al carácter del final del DEX \u0000
Este es un ejemplo del cuerpo de post.
Proyecto Fin de Carrera - Ingeniería en Informática
Página 178 de 185
Redes malladas con Arduino para el Internet de las cosas
{"d" : "DXS*WUR0*VA*V0\/6*1\r\nST*001*0001\r\nID1*WUR0*WUR
S=49*W*W*W*0*6*0\r\nCB1*88200205*IVC2*309\r\nVA1*202473*2656*202473*
2656*0*0*0*0\r\nVA2*1104*524288*1104*524288**\r\nTA2*0*0*0*0****\r\nCA
2*202473**202473*2656\r\nCA3*324482*144982**179500*324482*144982**1795
00\r\nCA4*36380*15010*36380*15010\r\nCA5**77\r\nCA8*2476*2476\r\nCA9*0
*0\r\nCA10*14664*13560\r\nDA2*111020*1418*111020*1418*\r\nDA4*235000*235
000*\r\nDB2*0*0*0*0*\r\nDB4*0*0*\r\nEA1*EGS*20131226*1130\r\nEA2*EGS*
*186**0\r\nEA3*50*20131226*1131**20131224*1436**50*0\r\nEA7*77*77\r\nEA9*
1882**\r\nLS\r\nPA1*10*60****\r\nPA2*49*2940*49*2840*0*0*0*0\r\nPA3*0*
0*0*0\r\nPA5***0\r\nPA1*11*80****\r\nPA2*50*4000*50*4000*0*0*0*0\r\nP
A3*0*0*0*0\r\nPA5***0\r\nPA1*12*80****\r\nPA2*70*5000*70*5000*0*0*0*0
\r\nPA3*0*0*0*0\r\nPA5***0\r\nPA1*13*60****\r\nPA2*50*3000*50*3000*0*
0*0*0\r\nPA3*0*0*0*0\r\nPA5***0\r\nPA1*14*60****\r\nPA2*55*3000*50*30
00*0*0*0*0\r\nPA3*0*0*0*0\r\nPA5***0\r\nPA1*15*0****\r\nPA2*0*0*0*0*0
*0*0*0\r\nPA3*0*0*0*0\r\nPA5***0\r\nPA1*16*0****\r\nPA2*0*0*0*0*0*0*0
*0\r\nPA3*0*0*0*0\r\nPA5***0\r\nPA1*17*0****\r\nPA2*0*0*0*0*0*0*0*0\r\
nPA3*0*0*0*0\r\nPA5***0\r\nPA1*18*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3
*0*0*0*0\r\nPA5***0\r\nPA1*19*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0
*0*0\r\nPA5***0\r\nPA1*20*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0*0*0
\r\nPA5***0\r\nPA1*21*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0*0*0\r\nP
A5***0\r\nPA1*22*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0*0*0\r\nPA5**
*0\r\nPA1*23*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0*0*0\r\nPA5***0\r
\nPA1*24*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0*0*0\r\nPA5***0\r\nPA
1*25*0****\r\nPA2*0*0*0*0*0*0*0*0\r\nPA3*0*0*0*0\r\nPA5***0\r\nLE\r\n
G85*EDE8\r\nSE*262*0001\r\nDXE*1*1\r\n\u0000"}
Como respuesta a esta petición debemos esperar un Response status
200, indicando que el proceso ha funcionado correctamente y se ha
Proyecto Fin de Carrera - Ingeniería en Informática
Página 179 de 185
Redes malladas con Arduino para el Internet de las cosas
conseguido almacenar en la base de datos del servidor de Slim para la
posterior inicialización de la tienda.
Una vez que la máquina ha enviado el DEX, deberá aparecer en la web
de
administración
http://openvend.eu/web/
dentro
del
menú
“ApiKey”,
“Máquinas que han enviado el DEX”, buscamos la máquina en el listado a partir
del ApiKey, en el ejemplo que nos ocupa “eyagc9zffczXInF”.
FIGURA 7-3 ALTA DE MÁQUINA EN LA PLATAFORMA
Proyecto Fin de Carrera - Ingeniería en Informática
Página 180 de 185
Redes malladas con Arduino para el Internet de las cosas
Al seleccionar el ApiKey debemos asignar la máquina al propietario deseado
cumplimentando en el formulario: el número de máquina, datos de
geolocalización de la máquina y modelo de máquina “Necta”. Al pulsar enviar
se nos pedirá confirmación para la inicialización de la máquina. Al confirmar,
pasados unos segundos la tienda asociada a esa máquina estará levantada y
habrá pasado al listado de máquinas inicializadas dentro de la aplicación web.
Ahora que la máquina está asociada al propietario debemos configurar
los productos. Un primer paso que podemos hacer es comprobar que el envío
del fichero DEX es correcto. Para ello accedemos a la página de administración
de la tienda por defecto de ese operador, cuya url tendrá el siguiente formato,
“http://openvend.eu/#NOMBREPROPIETARIO#/admin/” (en el ejemplo que nos
ocupa será http://openvend.eu/enviodex/admin/), para acceder al sistema, las
credenciales son:
Usuario: vending
Contraseña: uned2014vending
Una vez logados en el sistema podemos consultar los últimos envíos de
DEX en el menú “Extensiones” -> “text_dex_report” -> “text_dex_report”.
Realizada esta comprobación podemos, ahora sí, configurar los productos de
nuestra tienda. Para acceder debemos ir a una url con el siguiente formato
“http://openvend.eu/#NOMBREPROPIETARIO#/index.php?route=module/opera
Proyecto Fin de Carrera - Ingeniería en Informática
Página 181 de 185
Redes malladas con Arduino para el Internet de las cosas
tor/operatorVending”,
(en
el
caso
que
nos
ocupa
será
http://openvend.eu/enviodex/index.php?route=module/operator/operatorVendin
g). Las credenciales de acceso son:
Usuario: default_operator
Contraseña: default
Elegimos la opción “Máquinas nuevas” y posteriormente seleccionamos
la máquina que queremos configurar. En nuestro ejemplo será la máquina
“enviodex15”.
Seleccionamos la categoría del almacén que queremos configurar “Latas
y botellas pequeñas” y arrastramos los productos de la parte inferior a los
carriles en los que deben aparecer.
Cuando hayamos terminado, pulsamos sobre el botón máquina
configurada. Nos deberá mostrar el mensaje “Máquina configurada”.
Desde este momento la web de compra de esta máquina estará
accesible
desde
una
url
con
el
siguiente
formato:
http://openvend.eu/#NOMBREPROPIETARIO##NUMEROMAQUINA#/?route=
module/openvend.
(En
el
ejemplo
que
nos
ocupa
será
http://openvend.eu/enviodex15/?route=module/openvend). Esta es la interfaz
que deberemos ver:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 182 de 185
Redes malladas con Arduino para el Internet de las cosas
FIGURA 7-4 PROCESO DE COMPRA
La siguiente llamada que debe hacer la máquina después de inicializada
es la petición de una url corta que, tras leerla del tag de nfc dinámico situado en
la máquina, le redireccionará a una url larga con un token único para esa tienda
y de un único acceso.
En esta petición deberá indicar el ApiKey obtenido en el proceso inicial
X-Apikey, mediante una llamada GET a http://openvend.eu/token/
FIGURA 7-5 OBTENCION DE UN TOKEN
Este es un ejemplo de url obtenida mediante la llamada a token:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 183 de 185
Redes malladas con Arduino para el Internet de las cosas
“http://openvend.eu/yourls/SOKQPJ”, el formato es el mismo para todos
los propietarios, esta url corta será almacenada en el sistema yourls (a
continuación se detallan los datos de acceso a este servicio en la plataforma)
Datos de acceso a yourls:
La ruta base donde está instalado es:
http://openvend.eu/yourls/
Para el acceso a su administración y consulta debemos acceder a la
siguiente url:
http://openvend.eu/yourls/admin/
Las credenciales son:
Usuario: vgonzalez
Contraseña: vgonzalez
Cada url corta de este sistema se traduce en una dirección larga a la que
se re direcciona al usuario tras el acceso a la primera. Este es el formato que
debe
tener
el
contenido
de
una
url
larga
“http://openvend.eu/#NOMBREPROPIETARIO#/?route=module/openvend&tok
en=o5YR6q12gBZcSRXuUkOeow..&id_machine=#NOMBREPROPIETARIO##
NUMEROMAQUINA#”. (En el ejemplo que llevamos siguiendo en esta guía es:
Proyecto Fin de Carrera - Ingeniería en Informática
Página 184 de 185
Redes malladas con Arduino para el Internet de las cosas
http://openvend.eu/enviodex/?route=module/openvend&token=o5YR6q12gBZc
SRXuUkOeow..&id_machine=enviodex15).
Proyecto Fin de Carrera - Ingeniería en Informática
Página 185 de 185