diseÑo e implementaciÓn de un sistema de ......diseÑo e implementaciÓn de un sistema de...

124
DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MEDICIÓN DE CONSUMO DE ENERGÍA ELÉCTRICA Y AGUA POTABLE REMOTO CON INTERACCIÓN AL USUARIO BASADO EN EL CONCEPTO “INTERNET DE LAS COSAS” GERARDO GUACANEME VALBUENA. 9920553. DIDIER ALEXIS PARDO AGUDELO. 20042005070. UNIVERSIDAD DISTRITAL FRANCISO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA ELECTRÓNICA 2016.

Upload: others

Post on 27-Mar-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE MEDICIÓN DE

CONSUMO DE ENERGÍA ELÉCTRICA Y AGUA POTABLE REMOTO CON

INTERACCIÓN AL USUARIO BASADO EN EL CONCEPTO “INTERNET DE

LAS COSAS”

GERARDO GUACANEME VALBUENA.

9920553.

DIDIER ALEXIS PARDO AGUDELO.

20042005070.

UNIVERSIDAD DISTRITAL

FRANCISO JOSÉ DE CALDAS

FACULTAD DE INGENIERÍA ELECTRÓNICA

2016.

CONTENIDO

I. INTRODUCCION……………………………………………………………………………… 1

II. PLANTEAMIENTO DEL PROBLEMA………………………………………………………. 2

III. ANTECEDENTES……………………………………………………………………………… 2

IV. OBJETIVO GENERAL………………………………………………………………………… 4

V. OBJETIVOS ESPECÍFICOS…………………………………………………………………… 4

VI. JUSTIFICACIÓN………………………………………………………………………………. 5

VII. ALCANCES Y LIMITACIONES……………………………………………………………… 6

1. INTERNET DE LAS COSAS………………………………………………………………….. 7

1.1 COMPONENTES DE UNA IoT………………………………………………………... 8

1.2 MODOS DE COMUNICACIÓN E INTERACCIÓN………………………………….. 9

2. MÉTODO DE MEDICIÓN DE CONSUMO DE AGUA……………………………………… 13

2.1 CLASIFICACIÓN GENERAL DE LOS MEDIDORES DE FLUJO………………….. 13

2.2 CRITERIOS PARA LA SELECCIÓN…………………………………………………. 14

2.3 SELECCIÓN DEL TIPO DE DISPOSITIVO………………………………………….. 17

2.4 MEDIDOR DE FLUJO VOLUMÉTRICO…………………………………………….. 17

2.5 SENSOR SELECCIONADO…………………………………………………………... 20

2.6 CONCLUSIONES……………………………………………………………………... 24

3. MÉTODO DE MEDICIÓN DE CONSUMO DE ENERGÍA ELÉCTRICA…………………… 26

3.1 CLASIFICACIÓN GENERAL DE LOS MEDIDORES DE ENERGÍA ELÉCTRICA… 26

3.2 CRITERIOS PARA LA SELECCIÓN…………………………………………………… 28

3.3 SELECCIÓN DEL TIPO DE DISPOSITIVO……………………………………………. 31

3.4 MEDICIÓN DE CORRIENTE…………………………………………………………... 31

3.5 MEDICIÓN DE VOLTAJE……………………………………………………………… 33

3.6 SENSOR SELECCIONADO…………………………………………………………….. 33

3.7 CONCLUSIONES………………………………………………………………………... 41

4. MÉTODO DE COMUNICACIÓN DE DISPOSITIVOS……………………………………….. 42

4.1 PROTOCOLOS DE COMUNICACIÓN ENTRE DISPOSITIVOS…………………….. 42

4.2 SELECCIÓN DEL MÓDULO DE COMUNICACIÓN INALÁMBRICO……………… 43

4.3 DISPOSITIVO WIFI ESP8266EX……………………………………………………….. 44

4.4 CONCLUSIONES………………………………………………………………………… 54

5. INTEGRACIÓN DE ELEMENTOS Y ELABORACIÓN DE OBJETOS IoT…………………. 55

5.1 ESQUEMA GENERAL…………………………………………………………………... 55

5.2 CARACTERÍSTICAS DEL MICROCONTROLADOR………………………………… 57

5.3 CARACTERÍSTICAS DE LA MEMORIA………………………………………………. 58

5.4 INTEGRACIÓN DE ELEMENTOS DEL HARDWARE………………………………... 59

5.5 PROGRAMACION: MODOS DE OPERACIÓN………………………………………... 63

5.6 ESTRUCTURA DE DATOS ENVIADOS POR EL OBJETO IOT……………………… 75

5.7 ENSAMBLE DE OBJETOS IoT…………………………………………………………. 79

6. CONEXIÓN DE LOS OBJETOS IoT A LA WEB……………………………………………… 80

6.1 BASE DE DATOS………………………………………………………………………... 81

6.2 WEBSOCKET…………………………………………………………………………….. 83

6.3 DISEÑO BACK-END (NODE.JS)……………………………………………………….. 87

6.4 DISEÑO FRONT-END…………………………………………………………………… 89

6.5 FUNCIONAMIENTO DEL SERVIDOR………………………………………………… 92

6.6 PRUEBAS DEL SERVIDOR WEB……………………………………………………… 98

6.7 CONCLUSIONES………………………………………………………………………… 108

7. ETIQUETADO E INTERACCIÓN DE OBJETOS IoT………………………………………… 109

7.1 GENERACIÓN DE CÓDIGOS QR……………………………………………………… 111

7.2 PASOS PARA EL ACCESO AL OBJETO IoT MEDIANTE CÓDIGOS QR…………... 112

7.3 PERFIL PÚBLICO DEL OBJETO IoT DE CONSUMO DE AGUA……………………. 113

7.4 PERFIL PÚBLICO DEL OBJETO IoT DE CONSUMO DE ENERGÍA………………... 115

8. CONCLUSIONES Y CONSIDERACIONES FUTURAS………………………………………. 117

8.1 CONCLUSIONES………………………………………………………………………… 117

8.2 CONSIDERACIONES FUTURAS………………………………………………………. 118

9. MANUALES DE OPERACIÓN………………………………………………………………… 120

9.1 INSTALACION Y CONFIGURACION DE LOS DISPOSITIVOS WIFI………………. 120

9.2 MANUAL DE USUARIO DE LA INTERFAZ WEB…………………………………… 126

9.3 ESPECIFICACIONES TÉCNICAS………………………………………………………. 130

9.4 COSTOS…………………………………………………………………………………… 131

10. BIBLIOGRAFÍA…………………………………………………………………………………. 133

1

I. INTRODUCCION

El presente proyecto aplica las características generales de la denominada “Internet de las

Cosas” (Internet of Things, IoT abreviadamente, como se usará en adelante) en un sistema

orientado a la medición de variable propias de un ambiente domótico. IoT ha madurado

como consecuencia del desarrollo de nuevos dispositivos de comunicación que permiten un

fácil acceso a redes conectadas a Internet, así como la aparición de sistemas de

identificación electrónicos capaces de compartir información sobre los objetos a los cuales

se encuentran asociados. Este concepto brinda nuevas posibilidades de interacción, ya sea

en el hogar, en ambientes industriales o comunitarios diversos generando un aumento no

sólo en la información disponible del entorno, sino también en las acciones que se pueden

ejecutar a partir del conocimiento de variables y estados seleccionados. IoT se encuentra

inmerso dentro del marco de los denominados sistemas ubicuos cuya pretensión es

transformar la computación actual en una donde los sistemas informáticos en general se

encuentran inmersos de forma natural en los entornos humanos e interconectados a través

de redes inteligentes.

Las secciones II a VII describen los requisitos propios del proyecto (alcance y limitaciones,

objetivos, justificación y antecedentes). En el capítulo 1 se mencionan las generalidades de

la IoT y sus elementos componentes, para pasar a la selección de los sensores de medición

de consumo de agua portable (capítulo 2) y energía eléctrica (capítulo 3), en estos se ha

seguido una metodología de exploración de las diferentes técnicas de medición y la

selección de la más conveniente de acuerdo a la naturaleza del proyecto. En el capítulo 4 se

selecciona el método de comunicación y el módulo inalámbrico que se incluirá en los

objetos IoT y que dotará de interactividad a los dispositivos, se explican los detalles de

operación necesarios para efectuar la integración de los componentes en los objetos

propiamente dichos. En el capítulo 5 se detalla el desarrollo de firmware del objeto IoT, sus

modos de operación y configuración, así como una serie de conceptos asociados a la

medición. En el capítulo 6 se detalla la selección de herramientas de software y de red

necesarias para la conexión y la elaboración de las aplicaciones cliente (front-end) y

servidor (back-end) haciendo énfasis en el uso de Websocket como método de

comunicación en el nivel de aplicación, igualmente se detallan diferentes pruebas del

sistema completo efectuadas usando diferentes servicios en la nube. En el capítulo 7 se

explica el uso de las etiquetas QR como método para establecer el vínculo entre los objetos

IoT y su identidad virtual. Finalmente se exponen las conclusiones del presente trabajo y

las consideraciones a futuro en el capítulo 8 y un manual de operación de los dispositivos y

las interfaces en el capítulo 9.

2

II. PLANTEAMIENTO DEL PROBLEMA.

En la actualidad el denominado Internet de las cosas aún se encuentra en un proceso de

estructuración, donde apenas existen algunas primeras soluciones con algunas aplicaciones

a nivel comercial, esto debido a los múltiples desafíos que se deben afrontar a fin de hacer

que la IoT sea comercialmente viable, segura, eficiente, y atractiva para los de diferentes

actores involucrados en el mercado de los sistemas de información y comunicación

(Compañías de electrónica, proveedores de servicios de Internet, empresas dedicadas a la

infraestructura de los servicios públicos, entre otros).

Se desarrollará una aplicación orientada al “Internet de las cosas” donde se pueda observar

el consumo de recursos de energía eléctrica y agua potable en un ambiente doméstico con

cinco dispositivos previamente instalados, tres para terminales eléctricas (monofásicas) y

dos para medir el consumo de agua de un grifo de uso domestico. La observación de estos

datos se puede efectuar interactuando con los dispositivos a través de un dispositivo móvil

inteligente conectado a Internet. Con este ejercicio se espera poder mostrar los diferentes

actores que intervienen en una arquitectura de Internet de las cosas así como tratar con

soluciones particulares para cada una de las características del sistema.

III. ANTECEDENTES

En 1990 El ingeniero informático Estadounidense Mark Weiser del grupo de investigación

del Computer Science Laboratory de Xerox PARC publicó un artículo titulado “The

Computer for the Twenty-First Century” [1] en el cual sentó las bases de lo que hoy se

denomina “computación ubicua”. En este describe el estado del arte de la computación al

final del siglo XX, indicando que el uso de computadores crea una ruptura con el entorno

pues estas exigen un conocimiento técnico distinto al propósito para el cual fueron

diseñadas, además de ser costosas y requerir de un espacio donde ser ubicadas y

manipuladas. Haciendo un paralelo de la conversión de la escritura en una tecnología

ubicua (que se encuentra inmersa en el ambiente humano y con la cual se interactúa sin ser

conscientes de ello) argumenta que las computadoras personales de su momento sólo son

un paso para que la computación se introduzca completamente en el ambiente humano.

Considera que se ha de pasar del procesamiento y análisis centralizados en un sólo

dispositivo, al desarrollo de sistemas interactivos y multimedia (múltiples sensores de

entrada y sistemas de salida) que conllevarán a la “desaparición del dispositivo” en el

sentido de que se reemplazará por pequeños sistemas que estarán acoplados a los elementos

3

del ambiente con los cuales se interactúa de forma natural. Weiser esboza la necesidad de

que una vez estos dispositivos estén presentes en el ambiente estos sean capaces de

comunicarse a través de redes ubicuas de dispositivos lográndose una integración a nivel de

hardware, de software y de red en lo que denomina “virtualidad incorporada” en

contraposición al concepto de “realidad virtual” donde el humano se sumerge en un

ambiente ficticio creado a partir de un programa de computador.

En el año 2001 Sun Microsystems inició el desarrollo del proyecto JXTA (acrónimo de

Juxtapose), el cual tenía como uno de sus propósitos “especificar un conjunto estándar de

protocolos omnipresentes de tipo peer-to-peer (P2P - de igual a igual) como base de la

futura Web de las Cosas” [2] Este se centra en la elaboración de una plataforma de código

abierto capaz de funcionar en una amplia gama de dispositivos, dado el inicio de la

masificación de estos (teléfonos móviles, beepers, PDA, computadoras portátiles, sensores

de telemetría y sistemas de seguimiento, entre otros). El proyecto se fija en la necesidad de

crear una red virtual (independiente de la ubicación de los objetos o de la red de transporte)

para el adecuado intercambio de información entre dispositivos con características de

máquina dispares mediante el uso de documentos XML. Su enfoque de comunicación P2P

pugnaba por una arquitectura sencilla donde los servidores centralizados y los DNS son

reemplazados por comunicaciones entre nodos con información redundante. Oracle

adquirió Sun Microsystems en 2010 y en Noviembre de ese mismo año anunció que no

continuaría el apoyo a los proyectos JXTA.

En el año 2006 se usa el término “Internet of Things (IoT)” para hacer referencia a los

intentos de efectuar de forma práctica comunicación del tipo M2M (máquina a máquina)

En ese mismo año, Echelon Corporation publicó un artículo titulado Deploying the

“Internet of Things” [3] en el cual indica los desafíos que se deben superar a fin de obtener

una IoT operativa, entre éstos se encuentran la eficiencia energética, los costos y las

demoras en la implementación, los modelos de negocio basados en beneficios de largo

plazo, los tiempos de vida de los proyectos y de las implementaciones que deben rondar

sobre los 10 años, la solución de los problemas de conexión a red ya que la IoT aún es poco

atractiva para los proveedores de servicios de red (ISP), los problemas de seguridad

consistentes en la difícil implementación en los dispositivos embebidos de los actuales

protocolos de seguridad, la interoperabilidad para dar a dispositivos diversos la capacidad

de entender y procesar información entre ellos. El proyecto CASAGRAS (Acción de apoyo

y coordinación de actividades relacionadas con la RFID y la normalización) dio inicio en el

año 2008 y en 2010 presentó un informe de gran detalle sobre los avances en la

estructuración de una IoT el cual se centra en los sistemas de RFID como mecanismo

central de comunicación e interacción [4].

4

IV. OBJETIVO GENERAL.

Diseñar e implementar un sistema de medición de consumo de energía eléctrica y agua

potable remoto con interacción al usuario basado en el concepto "Internet de las cosas"

V. OBJETIVOS ESPECÍFICOS.

- Establecer un método de medición de energía eléctrica y agua potable que permita

la lectura de los datos a fin de ser capturados y enviados por un dispositivo de

comunicación inalámbrico.

- Establecer el método de comunicación entre los dispositivos sensores y el colector

de datos.

- Diseñar e implementar un sistema de medición de agua potable.

- Diseñar e implementar un sistema de medición de energía eléctrica.

- Diseñar e implementar una plataforma de software de comunicación y

almacenamiento de datos dentro del marco del Internet de las cosas.

- Diseñar e implementar una plataforma de software de interfaz al usuario dentro del

marco del Internet de las cosas.

5

VI. JUSTIFICACIÓN.

El estado actual de la electrónica y la informática ha alcanzado una gran capacidad en

cuanto a la recepción y análisis de datos gracias a la conectividad de Internet y el uso

masivo de redes inalámbricas, así como la aparición de dispositivos móviles inteligentes

capaces de efectuar procesos computacionales complejos. El denominado “Internet de las

cosas” es un concepto nacido dentro de esta tendencia. La idea general que hay detrás de

IoT postula que “cualquier objeto convenientemente etiquetado, podrá ser capaz de

comunicarse con otros objetos y sistemas, ya sea utilizando Internet, redes privadas u otros

mecanismos de comunicación” [5]. Este enfoque es mucho más amplio que el actual

concepto de domótica, pues implica la posibilidad de tener, de una parte, objetos con algún

tipo de inteligencia indistintamente si son parte del hogar o de otros entornos, y por el otro

una interacción mucho más abierta, donde se puede intercambiar información más allá de

las funciones hasta ahora previstas para el hogar. La conectividad se logra mediante

sistemas de redes inteligentes o similares que se caracterizan por ser aplicaciones de la

denominada web semántica, igualmente se hace uso de los conceptos de los sistemas

ubicuos, tales como tareas específicas, reconocimiento del entorno, proactividad, entre

otros.

Aunque en la actualidad existen algunos desarrollos tendientes a mejorar las condiciones

del uso de recursos dentro y fuera del hogar, dichas herramientas poseen un impacto menor

al esperado en el ahorro y la concientización del uso de los mismos, como en el caso de la

energía eléctrica y el agua potable. Esto se debe principalmente a que la introducción de

instrumentos de medición y control al interior de viviendas y otros entornos se enfoca

principalmente a conseguir espacios más confortables con un menor esfuerzo por parte del

usuario. Por otra parte, las aplicaciones de domótica se dirigen principalmente al hogar, que

es un entorno donde la interacción suele ser con unas pocas personas: Encender

automáticamente una luz o conocer el estado de temperatura y humedad de un recinto están

restringidos a los dueños de la vivienda. Al tratar de aplicar estos elementos de confort a

sitios con una presencia de personas mucho mayor (espacios públicos) la interacción se

vuelve muy compleja; en estos casos resulta más atractivo tener aplicaciones en la nube

desde las cuales efectuar dichas interacciones.

El diseño de entornos orientados al Internet de las cosas pretende abrir nuevas

posibilidades de interacción con las personas y entre los dispositivos para mejorar el

confort, pero también para hacer un uso más eficiente de los recursos, preocupación que

tiene una gran importancia en la actualidad dados fenómenos como el cambio climático y la

creciente escasez de recursos naturales. Introduciendo algún grado de inteligencia a

elementos cotidianos como un grifo de agua, se puede lograr un mayor control en cuanto al

consumo del recurso así como una pronta detección de problemas como fugas, que suelen

verse reflejados en altos costos en las facturas de consumo amén del evidente desperdicio

de agua.

6

VII. ALCANCES Y LIMITACIONES.

A fin de mostrar la efectividad de la propuesta realizada se utilizaron un total de cinco

dispositivos repartidos de la siguiente manera: Tres dispositivos de medición de consumo

de energía eléctrica monofásica enviando estos datos de forma inalámbrica. Igualmente se

utilizaron dos dispositivos de medición de consumo de agua para aplicación residencial

capaces de enviar estos datos de forma inalámbrica. Mediante un dispositivo móvil

inteligente tipo Smartphone, tableta o PC es posible la interacción con los objetos y el

vínculo inicial se establece mediante la lectura de etiquetas QR. Finalmente, un servidor

web con capacidad de interpretar un protocolo a nivel de aplicación de las Cosas sobre IP

versión 4 (Websocket) soporta la estructura de datos.

No se han establecido nuevos protocolos o arquitecturas adicionales a las que se han estado

experimentando en los últimos años, en cambio se amoldaron las características de estas

arquitecturas en los circuitos que se encuentran actualmente a disposición como lo son los

dispositivos de comunicación inalámbricos embebidos así como las redes 810.11 Wi-Fi que

están en su momento de mayor difusión. Al hacer uso de los elementos disponibles

actualmente se ha logrado una implementación que muestra los conceptos principales de

una IoT. Para una implementación completa y óptima, sin embargo, es necesario la

modificación o el desarrollo de nuevos protocolos y sistemas de conexión en red para los

objetos. Igualmente, no se efectúa un control estricto sobre el consumo de energía eléctrica

o el de agua potable, simplemente se efectúan las mediciones a fin de que sean los usuarios

quienes tomen las acciones pertinentes de control y optimización.

La plataforma web propuesta es sólo demostrativa de los requerimientos tecnológicos de

una IoT funcional, por ende, se han omitido estructuras necesarias para mejorar la

seguridad de los datos y de los elementos de la red como el servidor, la base de datos, el

encriptamiento de paquetes, entre otros. Existen igualmente limitaciones en el tamaño y el

consumo de potencia de los dispositivos ya que, aunque se ha pretendido hacer un diseño lo

más pequeño posible, la selección de componentes ha dependido igualmente del costo,

tratando de usar módulos de bajo valor para demostrar su usabilidad en el entorno de una

IoT.

7

1. INTERNET DE LAS COSAS

El Internet de las Cosas es un concepto que hace referencia a la interconexión de objetos

cotidianos en una red, “los objetos adquieren una identidad propia, detectando el entorno

en el que se encuentran e intercambiando información” [6]. Dispositivos y personas están

conectados y pueden comunicarse entre sí en lo que se ha denominado un entorno ubicuo.

Puede definirse como una infraestructura de red global dinámica con capacidades auto

configurables basadas en estándares y protocolos de comunicación donde los “objetos”

físicos y virtuales llevan asociados una identidad así como atributos físicos y

personalidades virtuales que se integran perfectamente en la red de información.

IoT nace como una evolución de la tecnología actual de Internet y la rápida masificación de

dispositivos inteligentes. A diferencia de otros procesos tecnológicos, este no es

consecuencia de una teoría científica sino más bien de una sinergia entre conceptos de

carácter comercial, experimental y técnico, siendo su principal impulsor el desarrollo de las

etiquetas RFID. IoT es la forma de describir dos esquemas estrechamente relacionados.

Uno es la “Internet de la información de productos” [7] el cual se centra en el fácil acceso a

través de la web de información útil sobre un producto (fecha de fabricación, caducidad,

detalles técnicos de fabricación, distribución al consumidor, etc.) en este caso los objetos se

comportan como una fuente de información cuyo contenido no depende de ellos de forma

directa pues los datos son manipulados y permanecen en la web. El otro esquema es el

“Internet de los sensores y actuadores” en el cual se busca tener no sólo la posibilidad de

conocer información de un entorno, sino la capacidad de interactuar con él ya sea de forma

local o remota mediante el uso de redes; en este caso la información proviene de las cosas

propiamente dichas y se hace uso de diversos recursos tecnológicos a fin de logar la

comunicación e interacción [8]. De forma general se podría hablar entonces de Internet de

las cosas como la “Internet de información de objetos” sean estos artículos de consumo o

redes de sensores-actuadores como los que se encuentran en los ambientes domóticos

actuales.

La gran mayoría de las conexiones a Internet se establecen entre los dispositivos utilizados

directamente por los seres humanos, tales como computadoras y teléfonos móviles, la

interacción principal es entre personas. La tendencia actual es que también los objetos se

puedan conectar a la red. Las cosas, comprendidas estas como elementos cotidianos a los

cuales se les ha añadido algún grado de inteligencia, tienen cada vez mayor capacidad para

intercambiar información por sí mismas y entre ellas. Se estima que en algún momento la

cantidad de "cosas" conectadas a Internet será mucho más grande que el número de

"personas" y los seres humanos nos convertiremos en la minoría de los generadores y

receptores de tráfico [33]. Anthony Furness del proyecto CASAGRAS nos da una

8

propuesta sobre la arquitectura básica del Internet de de las cosas el cual se aprecia en la

Figura 1 [34].

Figura 1. Esquema básico de un Internet de las cosas (tomado de los documentos de trabajo del proyecto

CASAGRAS y traducido al español).

1.1. COMPONENTES DE UNA IOT.

El esquema general del internet de las cosas consiste en un conjunto que posee los

siguientes componentes:

Cosas: Son los distintos objetos que poseen alguna inteligencia, estos se deben

considerar como los emisores-receptores de la información. Según sea su nivel de

inteligencia pueden comportarse como “productos” o como sistemas de “sensores-

actuadores”. Idealmente todas las cosas deben poseer una etiqueta que les

identifique de forma única.

Identificadores: Son las entradas a la información contenida en una cosa, estas

pueden ser soportes pasivos, como códigos QR o códigos de barras, o poseer

capacidad de conexión como las etiquetas RFID, también podrían considerarse

como etiquetas otras formas de identificación de dispositivos como solicitudes o ID

de conexión a través de una red de dispositivos, en estos casos la identificación se

da por la ubicación (proximidad) entre los objetos.

Zona de interfaz física: Corresponde a la ubicación física real de los dispositivos

(cosas) que poseen algún grado de inteligencia e interacción con el entorno y son

9

capaces de comunicarse a través de una red, dicha zona de interfaz física cumple

con las condiciones generales de un sistema ubicuo.

Red de cosas: Los distintos objetos “inteligentes” pueden comunicarse al exterior o

entre ellos a través de una red. Dada la gran cantidad de tecnologías de

comunicación existentes, que en muchos casos son incompatibles entre sí, una red

de cosas debe garantizar ante todo la posibilidad de conectar una cosa con otra a

través de una pasarela adecuada.

Pasarelas: Son los dispositivos encargados de conectar la red de cosas con Internet.

Como en el caso de las pasarelas Web, el hardware también podría ejecutar tareas

de seguimiento y control e incluso comportarse como servidor local a fin de

efectuar una gestión de la información.

Internet: Se convierte en el medio a través del cual se establece interacción remota

entre cosas así como el ente que almacena y gestiona la información. IoT puede

hacer uso, o poseer recursos paralelos a los de la Internet de las personas:

Servidores Web, DNS, protocolos específicos para la localización y la

comunicación, etc. En este aspecto el desarrollo apenas se encuentra en una fase

experimental y la estandarización de conceptos y métodos se encuentra incompleta

o aun sin establecer.

1.2. MODOS DE COMUNICACIÓN E INTERACCIÓN.

Existen dos modos básicos de comunicación en Internet de las cosas: cosa-persona y cosa-

cosa [5].

Cosa – persona: Las comunicaciones de este tipo abarcan una serie tecnologías y

aplicaciones en las cuales las personas interactúan con cosas y viceversa. Las más comunes

son el acceso a distancia, control remoto y monitorización. También existen cosas que

informan a las personas de cambios en su estado, datos recogidos, etc.

Cosa – Cosa: Abarca tecnologías y aplicaciones en donde objetos interactúan sin que

ningún humano haya iniciado la interacción ni sea receptor o intermediario. Los objetos

pueden controlar otros objetos, tomar medidas correctivas y realizar notificaciones a las

personas según sea necesario (Suelen denominarse aplicaciones M2M - Machine-to-

Machine).

En este contexto, una cosa se considera “Inteligente” si es capaz de entregar algún tipo de

información a otra. Diversos niveles de inteligencia se pueden inferir a partir de esta

10

definición, siendo la interacción más elemental aquella entre una cosa T cuyo recurso

inteligente es una etiqueta que puede ser leída por la cosa S, quien a su vez es capaz de usar

los datos contenidos en la etiqueta para obtener una información adicional de contexto, la

cual se hace disponible a través de una red. Como se observa en la figura 2, S tiene una

inteligencia “superior” a T ya que este es capaz de leer códigos (se denomina agente de

lectura) e interactúa con una red. A este nivel pertenecen la mayoría de los dispositivos

“Smart” disponibles comercialmente como teléfonos inteligentes, Tablets y demás PDA.

Figura 2. Interacción básica entre un objeto etiquetado (T) y un dispositivo inteligente (S) este es el tipo de

esquema utilizado en la Internet de información de productos.

Este tipo de interacción es el que se presenta sobre todo en la llamada “Internet de la

información de productos” en un supermercado para poder conocer información adicional

de un producto, en un cinema para poder obtener información sobre la cartelera de películas

e incluso hacer reservaciones. Dicha interacción también es casi siempre de tipo cosa-

persona.

Otra interacción básica es la que se establece entre una cosa T, la cual posee una de

etiqueta de identificación y adicionalmente es capaz de capturar algún tipo de información

del entorno y almacenar este contenido. En este caso S es capaz de acceder a la información

mediante la identificación de la etiqueta la cual se usa para establecer una comunicación

con T. En este caso tanto S como T tienen la capacidad de acceder a una red a través de

pasarelas. G es la pasarela entre T y la web, la comunicación se efectúa a través de internet

haciendo uso de los recursos de esta. Como se observa en la figura 2, para esta interacción

se involucran múltiples elementos que hacen más compleja la comunicación y esbozan de

forma general las partes componentes de una IoT.

11

Figura 3. Esquema de interacción de un Internet de las cosas con dispositivos incluyen sensores (T)

conectados a Internet a través de pasarelas (G).

1.2.1. CONEXIÓN LOCAL MÁQUINA A MÁQUINA (M2M).

Una de las críticas válidas que se hace a los esquemas del internet de las cosas es que

requieren del uso de una gran cantidad de componentes a fin de lograr una interacción tanto

local como remota; sin embargo en muchos casos la interactividad entre cosas se da

únicamente en entornos locales en los cuales los objetos se encuentran muy cerca entre sí y

la información que se comparte entre ellos sólo tiene importancia y validez en breves

intercambios que se suceden entre estos. Es por esta razón que el establecimiento de las

interacciones del tipo M2M locales revisten una gran importancia al momento de efectuar

el diseño de una red de objetos, así mismo representan un desafío ya que la gran mayoría de

dispositivos que se encuentran actualmente en el mercado (PDA, Tablet, PC portátil, entre

otros) aun cuando incluyen diversos sistemas de comunicación (infrarrojos, Bluethoot, Wi-

fi, entre otros) que no permiten de una forma fácil el intercambio entre métodos de

comunicación para una misma interacción.

En esta interacción dos dispositivos “T” en la misma zona de interfaz física son capaces de

detectar uno la presencia del otro, autentificarse entre sí y establecer un intercambio de

información. Según los requerimientos esta información podría registrarse externamente en

Internet a través de las pasarelas correspondientes (Figura 4).

12

Figura 4. Esquema general de una interacción del tipo M2M local.

1.2.2. MODELO DE CAPAS.

No existe un modelo de capas estándar para la Internet de las cosas, sin embargo, los

esquemas elaborados se han preocupado por el funcionamiento multiplataforma dada la

diversidad de componentes y de protocolos existentes para las diferentes conexiones; de esa

manera se suele seguir la estructura de capas existente para las conexiones a Internet. En

general se diseña una capa de coordinación adicional para procesar la estructura de

paquetes de diferentes sistemas de aplicación y volverlos a ensamblar en una estructura que

puede ser identificada y procesada por el sistema de aplicación de cada objeto [33]. Por

supuesto, si se completan y unifican las normas de la Internet de las cosas entonces los

sistemas que se basen en estas normas no tendrán ningún problema en la interoperabilidad.

Por lo pronto existen incompatibilidades entre esquemas ya comercializados como el EPC

Global (etiquetas RFID). Nuevamente el proyecto CASAGRAS nos brinda un esquema

general de capas para Internet de de las cosas el cual se aprecia en la Figura 5. [34]

Figura 5. Modelo general de capas para el Internet de las Cosas (tomado de los documentos de trabajo del

proyecto CASAGRAS y traducido al español).

13

2. MÉTODO DE MEDICIÓN DE CONSUMO DE AGUA.

2.1. CLASIFICACIÓN GENERAL DE LOS MEDIDORES DE FLUJO.

Los elementos primarios de medición de flujo que se usan en la industria, y que se han

tomado como referente para la selección se clasifican según su principio de funcionamiento

como se muestra en la figura 1. [9]

Figura 6. Clasificación de los medidores de flujo según su principio de funcionamiento (Tomado del libro

Instrumentación industrial Séptima edición, Editorial Alfaomega-Marcombo y adaptado al presente trabajo)

las flechas verdes indican las características del medidor seleccionado.

La diversidad de técnicas y dispositivos de medición se debe a la diversidad de fluidos que

son objeto de las mediciones, así como de sus características físicas y los volúmenes de

caudal. Análisis detallados de cada uno de estos tipos se encuentran en [9], [10] y [11]. Para

este trabajo se ha efectuado un proceso de selección teniendo en cuenta una serie de

criterios que se describen en los apartados siguientes, de donde se ha concluido que por las

características generales el tipo de sensor más adecuado es un sensor de flujo volumétrico

rotativo con sensor de efecto hall.

14

2.2. CRITERIOS PARA LA SELECCIÓN.

Los criterios que se han tenido en cuenta para la selección de dispositivo de medición son

los siguientes:

Tipo de fluido a medir: El tipo de fluido a medir es agua potable de uso doméstico. El agua

es el fluido a monitorear por antonomasia dada su importancia en diversidad de procesos y

brinda además un amplio abanico de posibilidades para efectuar la medición. De este modo

son descartables aquellos medidores especializados (y muchos de ellos de alto costo)

pensados para fluidos de alta viscosidad, que contengan una importante cantidad de

residuos o generen un elevado nivel de corrosión.

Rango de caudales a cubrir: Dado que se busca medir el flujo de agua pasante en los

denominados aparatos consumidores de agua (sanitarios, lavamanos, duchas, lavaderos,

entre otros) en este trabajo no es relevante conocer el flujo total por unidad (vivienda,

establecimiento grupo de establecimientos) que normalmente si es primordial para

determinar el tipo de contador que se instalará por parte del proveedor del servicio [12],

sino centrarse en el consumo máximo de estos aparatos.

En la tabla 1 se muestran los valores de consumo de dispositivos de agua domésticos, el

mayor valor de flujo instantáneo para estos no supera 1.25 Litros/Segundo siendo los

últimos casos poco comunes. Se considera el valor máximo de flujo cercano a 250 mL/S.

De este modo es factible efectuar medición del consumo de todos los dispositivos marcados

en color verde en la tabla.

Precisión requerida: La precisión de la medición no es un factor crítico para la elaboración

de este trabajo. Es deseable que el valor de la medición se encuentre dentro de una

precisión aceptable, típicamente de un error no mayor al 5%. Instrumentos de alta

precisión por lo general tienen un gran tamaño y alto costo, por lo que precisiones

superiores implican una desviación en el propósito principal de este proyecto.

Repetitividad requerida: Los aparatos consumidores de agua de uso casero suelen tener

diversos grados de repetitividad en cuanto su uso, los más comunes (lavamanos, inodoros,

grifos) por lo general tienen una repetición de uso de media a alta, por lo tanto la

repetitividad de las mediciones debe oscilar en un rango aceptable de error (no mayor al

5%).

Ambiente en que se realizará la medición: El entorno corresponde a ubicaciones de

carácter doméstico (mobiliarios propios de baños, cocinas, entre otros) los cuales tienen

niveles de humedad y temperatura estables. Se descartan medidores de alto costo que

soportan grandes variaciones de temperatura así como fuerte exposición a humedad y

corrosión en el ambiente.

15

Tabla 7.Caudales instantáneos típicos por aparato en litros/segundo según la Norma Española Canaria 119 de

2007. (Tomada del documento Criterios para definir el diámetro de la acometida y el medidor a instalar en

urbanizaciones y edificios, de EPM [12])

Caudal aparato Caudal (L/s)

Agua Fría

Caudal (L/s) Agua

Caliente

Urinarios con cisterna (c/u) (Urinarios con tanque) 0,04

Lavamanos 0,05 0,03

Lavabo 0,1 0,065

Bidé (lavamanos) 0,1

Inodoro con cisterna (Inodoros con tanque) 0,1

Urinarios con grifo temporizado 0,15

Lava vajillas doméstico 0,15

Grifo aislado 0,15

Ducha 0,2 0,1

Bañera L< 1,40 m 0,2 0,2

Fregadero doméstico 0,2 0,1

Lavadero 0,2 0,1

Lavadora doméstica 0,2 0,15

Grifo garaje 0,2

Vertedero 0,2

Lavavajillas industrial (20 servicios) 0,25 0,2

Bañera L>= 1,40 m 0,3 0,15

Fregadero no doméstico 0,3 0,2

Lavadora industrial (8 Kq) 0,6 0,4

Inodoro con fluxómetro 1,25

Tipo de salida eléctrica requerida: La salida necesaria para efectuar la medición puede ser

tan sencilla como un valor analógico correspondiente al flujo pasante, o un tren de pulsos

equivalente a un indicador de velocidad o flujo pasante.

Linealidad y velocidad de respuesta: Una alta linealidad no es crítica para el proyecto. Es

deseable que el porcentaje de desviación sea pequeño dentro del los rangos de flujo más

comunes de consumo y que la velocidad de respuesta esté por debajo que los intervalos de

medición que se han establecido que no serán menores de 1 segundo.

Tipo de caudal: La medición se efectuará en una tubería cerrada en la cual todo el flujo se

halla confinado. Se descartan las técnicas y dispositivos propios para la medición de flujo

en caudales abiertos (vertedero en canal, rotámetros de área variable, entre otros).

Costo de la instalación: El dispositivo debe ser muy sencillo de instalar y mantener, y no

debería generar complicaciones dentro del sistema de tuberías. Se ha dado prelación a la

relación sencillez-costo del dispositivo donde los sistemas de medición no invasivos

(sensores magnéticos y ultrasónicos) no cumplen este requerimiento.

Accesibilidad y costo del dispositivo: El instrumento de medición seleccionado debe tener

un costo que se ajuste al presupuesto del actual proyecto (bajo costo) igualmente debe ser

16

de fácil adquisición, por lo que se deben descartar medidores de alta gama o demasiado

novedosos y de escasa disponibilidad en el mercado.

Existen otros criterios de selección como el costo del mantenimiento, de la mano de obra

calificada necesaria para mantenimiento e instalación, perdidas de carga, entre otros, que

revisten una menor importancia dada la naturaleza y extensión de esta propuesta.

Tabla 2. Características y comparación de los instrumentos medidores de caudal (Tomado del libro

Instrumentación industrial Séptima edición, Editorial Alfaomega-Marcombo y adaptado al presente trabajo).

El tipo seleccionado en verde corresponde al tipo de medidor que se utilizará. *dP hace referencia a la

diferencia de presión. **La pérdida de carga se puede medir en metros cúbicos de área (m) o en bares (b).

Tipo Relación

de Caudal

Precisión en toda la escala

Escala Presión Máxima

(bar)

Temperatura máxima °C

Pérdida de

carga** Servicio materiales

Costo relativo

Ventajas desventajas

Placa 3:1 1-2 % No

lineal 400 500 20 m Líq/Vapor/Gas Metal/plástico Bajo Simple, económico

Alta dP, fluidos limpios

Tobera 3:1 0.9-1.5

% No

lineal 400 500 16 m Líq/Vapor/Gas Metal/plástico Medio Simple, preciso

Alta dP, fluidos limpios, caro

Tubo Ventury 3:1 0.75 % No

lineal 400 500 4 m Líq/Vapor/Gas Metal/plástico

Muy alto

Preciso, poca dP* Alta dP, fluidos limpios, muy caro

Tuvo Pitot 3:1 1.5-4 % No

lineal 400 500 - Líq/Vapor/Gas Metal/plástico Bajo Simple, económico Poca precisión

Tubo Annubar

3:1 1% No

lineal 400 500 - Líq/Vapor/Gas Metal/plástico Bajo Simple, económico Poca precisión

Rotámetro 10:1 1-2 % Lineal 400 250 5 m Líq/Vapor/Gas Vidrio/Cerámica Bajo Mayor precisión Golpe de ariete puede dañarlo

Vertedero 3:1 1-2 % Especial Atmósfera 60 - Líquidos Metal Bajo coste medio Voluminoso, caro

Turbina 15:1 0.3 % Lineal 200 250 0.7 b Líquidos/Gas Metal Alto Preciso, margen amplio

Difícil de calibrar, fluidos limpios

Sónico 20:1 2% Lineal 100 250 nula Líquidos Metal/plástico Alto cualquier líquido, poca dP

Caro, difícil de calibrar, sensible a la densidad

Placa de impacto

10:1 1% No

lineal 100 400 0.5 b Líquidos Metal Medio Fluidos viscosos Poca capacidad

Magnético 100:1 0.5-1 % Lineal 20-200 150 nula Líquidos Teflón/Vidrio Alto poca dP Caro, sólo para líquidos conductores

Disco oscilante

5:1 1-2 % Lineal 10-150 120 0.3 m Líquidos Metal Bajo barato Par pequeño

Pistón oscilante

5:1 0.2-0.5

% Lineal 25 150 10 b Líquidos Metal Medio

Líquidos Viscosos, corrosivos

Alta dP

Pistón alternativo

5:1 0,20% Lineal 25 100 0.2 m Líquidos Metal Alto Preciso Voluminoso, caro, alta dP

Cicloidal 10:1 1% Lineal 100 150 0.3 b Líquidos/Gas Metal/plástico Medio poca dP Poca precisión en caudales bajos

Birrotor 5:1 0.2% Lineal 100 60-200 0,4 b Líquidos Metal/plástico Medio Preciso Margen pequeño

Oval 10:1 0.5% Lineal 100 180 1 b Líquidos Metal/plástico Medio No afecta la viscosidad

Alta dP

Paredes deformables

10:1 0.3% Lineal - - - Gas Metal/plástico Medio Preciso Voluminoso, alta dP

Torbellino 100:1 0.2% Lineal 50 100 0.4 b Líquidos/Gas Metal/plástico Medio margen amplio, poca dP

Caro

Vórtex 10:1 1% Lineal 50 400 - Líquidos/Gas Metal/plástico Medio soprota vibraciones

Insensible a bajo caudal

Oscilante 10:1 0.5% Lineal 100 65 - Líquidos/Gas Metal/plástico Medio Ideal para propano/butano

Caro, solo gases, bajo caudal

Térmico 10:1 1% Lineal 100 65 5 m Líquidos/Gas Metal/plástico Alto poca dP Caro, Margen pequeño

Axial 5:1 1% Lineal 100 120 0.2 b Líquidos/Gas Metal/plástico Alto poca dP Caro, Margen pequeño

17

2.3. SELECCIÓN DEL TIPO DE DISPOSITIVO.

Del listado global de sistemas de medición disponibles se descartan aquellos que no

cumplen con los requerimientos mínimos de interés para el proyecto. En la tabla 2 se

muestra un resumen de las características según los tipos de medidor en donde se ha

resaltado a los medidores de flujo volumétrico de tipo cicloidal (o de turbina), pues estos

son los más comunes dentro de los sistemas de medición de consumo de agua de uso

doméstico y son los que en general tienen las características más adecuadas para las

mediciones de bajos caudales de agua potable en instalaciones de tipo residencial.

Una de las principales desventajas que poseen los medidores cicloidales es su poca

precisión ante bajos caudales, esto se solventa diseñando un medidor apto para rangos de

caudal más bien pequeños (por debajo de la relación 10:1) por lo que se presenta un

compromiso entre el caudal máximo y la precisión mínima. Dado que los valores máximos

de caudal son relativamente bajos, un sensor para diámetros de tuberías pequeños posee

unas características suficientemente aceptables en bajos caudales.

2.4. MEDIDOR DE FLUJO VOLUMÉTRICO.

La mayoría de los medidores de flujo determinan el volumen que pasa a través de una

tubería por unidad de tiempo, a este tipo de medidores se les denomina medidores

de flujo volumétrico [10]. Entre ellos encontramos: Medidor tipo turbina, medidor

magnético y medidor de área variable. De estos tipos detallamos el de tipo turbina.

2.4.1. MEDIDOR TIPO TURBINA.

Los medidores cicloidales (también llamados de turbina o de paletas deslizantes) consisten

en un rotor que gira al paso del fluido con una velocidad directamente proporcional al

caudal [9]. La velocidad del fluido ejerce una fuerza de arrastre en el rotor generando una

diferencia de presiones debida al cambio de área entre el rotor y el cono posterior, quien

ejerce una fuerza igual y opuesta. La medición del caudal en este tipo de aparatos se logra

con base en la proporcionalidad que existe entre el número de revoluciones o vueltas que

dan las aspas del dispositivo, y la velocidad del flujo que es transportada a través del

conducto. La velocidad que adquieren las aspas al contacto con el flujo, se transmite a un

sistema de relojería o se transduce en pulsos o niveles eléctricos, y de este modo se obtiene

información referente a volúmenes y registro del caudal. En la figura 2 se describe la

18

operación general de este tipo de medidor. Los transductores que típicamente se aplican

para obtener una señal eléctrica son:

De reluctancia: La velocidad viene determinada por el paso de las palas de la turbina a

través del campo magnético creado por un imán permanente montado en una bobina

captadora exterior. El paso de cada pala varía la reluctancia del circuito magnético. Esta

variación cambia el flujo induciendo en la bobina captadora una corriente alterna que es

proporcional al giro de la turbina.

Inductivo: El rotor lleva incorporado un imán permanente y el campo magnético giratorio

que se origina induce una corriente alterna en la bobina captadora exterior.

De efecto hall: El rotor lleva incorporado un imán permanente que se acerca a un sensor de

estado sólido de efecto hall, el aumento de la intensidad del campo magnético por la

cercanía del imán genera un pulso en el sensor de modo que la cantidad de pulsos

generados en un intervalo de tiempo son proporcionales al flujo a medir.

El instrumento debe instalarse de tal modo que no se vacíe cuando cesa el caudal ya que el

choque del agua a alta velocidad contra el medidor vacío causa deterioro. Normalmente, la

frecuencia que genera el rotor de turbina es proporcional al caudal siendo del orden de 250

a 1200 ciclos por segundo para el caudal máximo. El número de impulsos por unidad de

caudal es constante. Entre las ventajas de este medidor se encuentra su baja incertidumbre

para fluidos de baja a media viscosidad, igualmente ofrece un buen rango de flujo y es

adecuado para un rango presiones diverso y temperaturas extremas altas y bajas

(dependiendo de los materiales de construcción), son fáciles de instalar, tienen poco peso y

tamaño en relación al diámetro de la tubería. La exactitud es elevada (del orden de ±0.3%

en la región de mayor linealidad). La menor incertidumbre se consigue con un flujo

totalmente desarrollado (laminar), instalando el instrumento en una tubería recta de

longitudes mínimas de 10 diámetros corriente arriba y 5 diámetros corriente abajo. Las

desventajas principales son la incompatibilidad con líquidos altamente viscosos, posibles

daños en caso de que se presente cavitación1 y la necesidad de equipo adicional (relojería o

electrónica) para obtener la medición.

2.4.2. FLUJO EN TUBERÍAS.

En la figura 3 se muestran algunos de los componentes básicos de un sistema de tuberías.

Los componentes incluyen tubos y accesorios usados para conectar a los primeros a fin de

formar el sistema deseado, los dispositivos de control de flujo (válvulas) y las bombas o

turbinas que agregan o retiran energía del fluido respectivamente. Si las trayectorias de

todas las partículas del fluido en un conducto son paralelas al eje del mismo y si las

velocidades de estas partículas son bajas y difieren muy poco en sus valores, se dice que el

flujo es laminar o viscoso. Cuando las trayectorias de las partículas que están fluyendo

1 Formación de cavidades llenas de vapor o de gas en el seno de un líquido en movimiento.

19

continuamente difieren una de otra, o cuando las trayectorias no son paralelas aleje de la

tubería el flujo es turbulento [9]. Para el flujo en tuberías, el parámetro adimensional más

importante es el número de Reynolds (Re), el cual se define como la relación de los efectos

inerciales y los efectos viscosos en el flujo, este permite conocer el régimen del fluido. El

flujo en una tubería es laminar si Re ≤ 2100, el flujo en una tubería es turbulento si Re

≥4000. Para números de Reynolds entre estos límites, el flujo puede cambiar entre

condiciones laminares o turbulentas de manera aparentemente aleatoria.

Figura 2. Dibujo de turbinas y diagrama de bloques de una turbina usada como sensor de flujo (Tomado del

libro Instrumentación y control en instalaciones de proceso, energía y servicios auxiliares y adaptado al

presente trabajo).

Figura 3. Elementos típicos que componen un sistema de tuberías.

20

2.4.3. ERROR DE MEDICIÓN.

Los medidores de desplazamiento presentan resistencia a la fricción, la cual tiene

que ser vencida por el fluido circulante. Para caudales muy bajos, el fluido no tiene

energía cinética suficiente para hacer girar el rotor frente a esta fricción, que además

incluye la resistencia ofrecida por el mecanismo articulado del contador, por lo que el

fluido se desliza lentamente entre los componentes del medidor y la cámara, sin producir

movimiento del rotor, de forma que para estos caudales bajos, el error es grande y negativo.

Sin embargo, cuando el caudal aumenta este error negativo desaparece rápidamente,

ya que la energía cinética del fluido aumenta con el cuadrado de su velocidad. Una

condición cercana al equilibrio se alcanza cuando la fuerza directriz del fluido se equilibra

por las diversas fuerzas de resistencia, y esto se mantiene para el margen de

funcionamiento para un medidor bien diseñado, en la figura 4 se muestra la evolución del

error de un contador rotativo de acuerdo al caudal a medir. El error del medidor, E, se

define como:

𝐸 =𝑄𝑖𝑛𝑑𝑖𝑐𝑎𝑑𝑜 − 𝑄𝑟𝑒𝑎𝑙

𝑄𝑟𝑒𝑎𝑙100% (1)

Figura 4. Curva del comportamiento típico del error de un medidor de paletas deslizantes.

2.5. SENSOR SELECCIONADO.

El sensor seleccionado para este proyecto es un medidor de flujo volumétrico de agua de

paletas deslizantes diseñado para una tubería de ½ pulgada y prestaciones domésticas. Este

se compone de una válvula de plástico, un rotor (parte giratoria), y un sensor de efecto Hall.

Cuando el agua fluye a través de las paletas del rotor, este comienza a girar con mayor o

menor velocidad dependiendo del caudal de líquido que fluye a través de él (figura 5).

0

0,1

0,2

0 20 40 60 80 100

Erro

r m

ed

ida

(%)

Porcentaje de Escala (%)

21

Efecto hall: Descubiertoen1879, el efecto Hall, llamado así en honor al físico

estadounidense Edwin Herbert Hall, consiste en la aparición de un campo eléctrico en un

conductor cuando es atravesado por una corriente estando dentro de un campo magnético, a

este campo eléctrico se le llamo campo Hall. En la actualidad, dispositivos de estado sólido

aprovechan este principio para transducir señales físicas diversas en señales eléctricas

(sensores de proximidad, de corriente, detectores, entre otros).

2.5.1. CARACTERÍSTICAS TÉCNICAS DEL MEDIDOR.

Entre las características más importantes del medidor se tiene2:

• Modelo: SEN_0394

• Fabricante: Adafruit.

• Compacto, de fácil instalación.

• Enroscado hermético.

• Sensor de efecto Hall de alta calidad.

• Cumple con la norma RoHS.

• Voltaje de operación: 5 a 24V

• Máximo consumo de corriente: 15mA a 5V

• Caudal de trabajo: 1 a 30 Litros/Minuto (cubre todos los aparatos consumidores de agua

seleccionados en la tabla 1).

• Rango de temperatura de trabajo: -25 a 80ºC

• Rango de humedad de trabajo: 35%-80% HR

• Presión de agua máxima: 2.0 MPa

• Ciclo útil de salida: 50% +- 10%

• Tiempo de subida: 0.04 µs

• Tiempo de bajada: 0.18 µs

• Características del pulso: Frecuencia (Hz) = 7.5 * Caudal (L/min)

• Pulsos por litro: 450

• Durabilidad: mínimo 300.000 ciclos

• Conexión de 1/2" nominal, 0.75" de diámetro externo y rosca de 1/2"

• Tamaño: 63.5 mm x 35mm x 35mm.

2.5.2. CALIBRACION.

De acuerdo a las recomendaciones típicas de calibración [10], Los instrumentos y el equipo

que se requieren en general para la misma son:

•Medida volumétrica cuya capacidad debe ser igual o mayor al volumen colectado al flujo

máximo del medidor en un minuto.

2Información tomada de la pagina del fabricante y traducida al español, disponible en

https://www.adafruit.com/products/828

22

•Sensores de temperatura instalados en la medida volumétrica y en la línea, lo más cercano

al medidor de flujo con resolución de 0.1 ºC o mejor.

•Incertidumbre en la medición de temperatura ± 0.2 ºC o mejor.

•Sensor de presión con una incertidumbre en la medición de ± 0.05 MPa o mejor.

•Cronómetro con resolución de 0.01 s.

En la práctica se consideraron la presión y temperatura homogéneas, dado que tienen una

variación insignificante y una incidencia menor en la calidad de la medición para este tipo

de sensor, por lo que únicamente se usaron medidas volumétricas en centilitros. Para la

medición de la señal obtenida se utilizó un microcontrolador quien detectó los cambios del

voltaje de la señal de tren de pulsos generada por el sensor de efecto hall, entregando el

número de pulsos por segundo (frecuencia). La hoja de datos del fabricante suministra una

curva con la frecuencia de pulsos de salida relacionada con el flujo de agua en unidades de

litros/hora. En la figura 6 se muestra el esquema del sistema elaborado para la calibración.

Figura 5. Vistas del sensor de flujo de efecto Hall seleccionado (tomado de la página del

fabricantehttps://www.adafruit.com/products/828).

Figura 6. Esquema del sistema diseñado para la calibración del sensor de flujo de agua.

23

Para realizar la calibración de forma correcta y confiable se han tenido en cuenta las

siguientes consideraciones:

•El medidor de flujo fue calibrado con el líquido a emplear (agua potable).

•El medidor de flujo fue instalado de acuerdo a las instrucciones del fabricante.

•Se evitaron vibraciones o pulsaciones que pudieran afectar el comportamiento del medidor

de flujo.

•El número de valores de flujo seleccionados está entre 2 y 5 flujos diferentes dentro del

alcance del medidor.

Los datos tomados se muestran en la tabla 3. El microcontrolador entrega el tiempo en

segundos y la cantidad de pulsos que se han utilizado en cada prueba para llenar la medida

volumétrica; a partir de estos tres datos es posible aproximar el valor de volumen por pulso

(que es constante en la región más lineal del sensor), el valor de la frecuencia en pulsos por

segundo y el flujo en diferentes unidades (centímetros cúbicos por segundo, litros por

minuto y litros por hora). En la figura 7 se comparan los datos de la curva característica del

fabricante contra los valores de la dispersión de las muestras efectuadas; se observa una

pequeña diferencia en buena parte de los valores donde la medida real está por encima del

valor esperado según los datos del fabricante para flujos entre los 250 L/h y 450 L/h por

hora.

Se determinó que la forma más conveniente para hacer la calibración de este sensor es

efectuar una linealización por tramos. Se han considerado cuatro regiones diferentes de

acuerdo a los datos obtenidos y donde a cada una corresponde a una recta del tipo 𝑦 =𝐴𝑥 + 𝐵 Para los valores superiores e inferiores de la escala del sensor estas rectas

prácticamente coinciden con los datos del fabricante, en la parte intermedia de la medición

las rectas difieren ligeramente de la curva característica entregada.

Una vez efectuado el cálculo matemático de la regresión, las ecuaciones que corresponden

al comportamiento del sensor son las siguientes:

𝐹 𝑝 =

7.592𝑝 𝑠𝑖 0 ≤ 𝑝 < 27

8.6𝑝 − 27.2 𝑠𝑖 27 ≤ 𝑝 < 523.1𝑝 + 258,8 𝑠𝑖 52 ≤ 𝑝 < 62

7.111𝑝 + 10.11 𝑠𝑖 𝑝 ≥ 62

(2)

Donde 𝑝 es la cantidad de pulsos por segundo en Hertz (frecuencia) y 𝐹 es el flujo medido

en Litros/hora. En la figura 8 se muestra el resultado de la linealización respecto a la

dispersión medida.

24

Tabla 3.Datos tomados en el ejercicio de calibración, la mayor parte de los datos se tomó utilizando una

medida volumétrica de referencia de 2 litros modificando la velocidad del flujo regulando la misma con la

válvula (llave de lavaplatos).

Medida Volumétrica

(L)

Tiempo de

llenado (seg)

Total Pulsos

vol/pulso (CC)

pulsos/seg (Hz)

CC/seg litros/min litros/hora

2 124 860 2,33 6,94 16,13 0,97 58,06

1 49 472 2,12 9,63 20,41 1,22 73,47

2 65 928 2,16 14,28 30,77 1,85 110,77

2 42 949 2,11 22,60 47,62 2,86 171,43

2 33 949 2,11 28,76 60,61 3,64 218,18

2 32 925 2,16 28,91 62,50 3,75 225,00

2 31 925 2,16 29,84 64,52 3,87 232,26

2 24 836 2,39 34,83 83,33 5,00 300,00

0,745 10 358 2,08 35,80 74,50 4,47 268,20

2 24 916 2,18 38,17 83,33 5,00 300,00

2 22 920 2,17 41,82 90,91 5,45 327,27

2 21 922 2,17 43,90 95,24 5,71 342,86

2 19 893 2,24 47,00 105,26 6,32 378,95

2 18 881 2,27 48,94 111,11 6,67 400,00

2 18 895 2,23 49,72 111,11 6,67 400,00

2 18 918 2,18 51,00 111,11 6,67 400,00

4 33 1813 2,21 54,94 121,21 7,27 436,36

4 33 1993 2,01 60,39 121,21 7,27 436,36

2,06 16 983 2,10 61,44 128,75 7,73 463,50

2.6. CONCLUSIONES.

Se ha efectuado la selección del medidor de flujo de agua de acuerdo a los parámetros que

habitualmente se utilizan para hacer este tipo de procedimientos, ajustándolos a las

necesidades particulares de este proyecto. El sensor de flujo volumétrico de efecto Hall

seleccionado es adecuado tanto para el tipo de tubería del entorno doméstico, hacia el cual

se centra el presente trabajo, como por sus características tales como tamaño reducido y

bajo costo.

Al efectuar la linealización del dispositivo se encuentra, sin embargo, que este presenta una

desviación importante en buena parte de la región de medición (llegando incluso a ser de un

10%) por lo que ha sido necesario efectuar una separación por regiones a fin de minimizar

el error de la medición. Afortunadamente este problema no es tan relevante dado que estas

correcciones se pueden hacer posteriormente utilizando software ya sea en el

microcontrolador o en la aplicación que se dedique a la captura y análisis de los datos.

25

Figura 7. Comparación entre la respuesta del sensor dada por el fabricante (línea azul) y los datos obtenidos

en la medición de calibración (puntos rojos).

Figura 8. Linealización por tramos de la respuesta característica del sensor.

0

100

200

300

400

500

0 10 20 30 40 50 60 70

Flu

jo L

/h

Frecuencia (Hz)

0

100

200

300

400

500

0 10 20 30 40 50 60 70 80

Flu

jo L

/h

Frecuencia (Hz)

Calibración

Lineal 1

Lineal 2

Lineal 3

Lineal 4

26

3. MÉTODO DE MEDICIÓN DE CONSUMO DE ENERGÍA ELÉCTRICA.

3.1. CLASIFICACIÓN GENERAL DE LOS MEDIDORES DE ENERGÍA

ELÉCTRICA.

Los medidores eléctricos poseen distintos tipos de clasificación de acuerdo a su

construcción, capacidad de medida, tipo de energía a medir, exactitud, tipo de conexión,

cantidad de elementos necesarios para la medición, y clase. Una explicación muy detallada

de los tipos se puede encontrar en [13] y [14] de donde nos hemos basado para la siguiente

selección:

Tipo de construcción: Se pueden clasificar como medidores de inducción o estáticos. En

los medidores de inducción la corriente que circula por una o varias bobinas fijas, reacciona

con aquellas que se inducen en un elemento móvil, por lo general un disco, cuyo

movimiento está relacionado con la cantidad de corriente circulante; generalmente se

adiciona un mecanismo de relojería con el cual se recupera la medición. Se pueden utilizar

para efectuar desde mediciones de bajo consumo (domésticas) hasta aquellas propias de las

líneas de transmisión de alto voltaje. Para este proyecto este tipo de medidor está

descartado dado su volumen.

Los contadores estáticos (también llamados de estado sólido) están elaborados a partir de

dispositivos semiconductores, logrando un tamaño reducido y práctico para instrumentos de

medición como el que se pretende elaborar, tienen un buen grado de precisión lo cual es

beneficioso ya que se pretende medir el consumo de cargas de baja potencia como lo son la

mayor parte de electrodomésticos. Por lo general esos dispositivos generan un pulso de

salida proporcional a la energía en vatios-hora.

Tipo de energía: Los medidores se pueden clasificar como medidores de energía activa o

reactiva. Los medidores de energía activa son los más comunes y miden la energía que

consumen los dispositivos con carga real (resistiva) típicamente en kilovatios hora (KW/h).

Los medidores de energía reactiva adicionalmente tienen la capacidad de censar la energía

debida a cargas reactivas, como son motores industriales, bancos de capacitores, entre

otros. Para este proyecto no se medirán los valores reactivos de las cargas.

Exactitud: Los medidores de energía se dividen en tres clases de acuerdo a la exactitud y la

capacidad de carga que es capaz de medir el dispositivo de la siguiente manera (para el

escenario colombiano están definidos por la norma NTC 2288 y 2148):

27

- Clase 0.5: Utilizada para medir energía activa suministrada en bloque, ya sea en

puntos de frontera entre empresas de electrificadoras o grandes consumidores. Por

lo general trabajan con voltajes de 115 KV.

- Clase 1: Incluye los medidores trifásicos destinados a medir energía activa y

reactiva de grandes consumidores (usuarios que usan cargas mayores a 55 KW).

- Clase 2: Es la clasificación más general, en estos se incluyen los medidores

monofásicos para medir energía activa a nivel comercial y residencial, así como

industrias con cargas menores a 55 KW. El medidor propuesto para este proyecto

hace parte de esta clase.

Conexión con la red: según la forma como el medidor se encuentra conectado a la red esto

se pueden clasificar en:

- Medidor monofásico bifilar: Son utilizados para registrar la energía consumida en

una acometida que tiene un solo conductor activo (fase) y un neutro. Este es el tipo

de medidor que se utilizará en el presente proyecto.

- Medidor monofásico trifilar: Se usan para el consumo de energía en una

acometida monofásica de fase partida donde se tienen dos conductores activos y un

neutro.

- Medidor bifásico trifilar: Registra el consumo de una acometida en B.T de dos

fases y tres hilos.

- Medidor trifásico tetrafilar: se usa para el consumo energía de una acometida

trifásica en B.T de tres fases y cuatro hilos.

- Medidor trifásico trifilar: Se usa para la medición de consumo de energía de una

acometida de tres fases sin neutro.

Número de elementos: Hace referencia la cantidad de bobinas necesarias para efectuar la

medición, para los medidores de Estado sólido esta clasificación no es aplicable:

- De un elemento: Conformado por una bobina de corriente y una de tensión.

- De elemento y medio: Conformado por dos bobinas de corriente que comparten

una bobina de tensión, son medidores para ser conectados a 240 V.

- De dos elementos: Conformado por dos bobinas de corriente y dos de tensión.

De acuerdo con el tipo de medición: Según la norma Colombiana NTC 5019 se efectúan

tres tipos de medición:

- Directa: Es aquella en la que se conectan directamente al medidor los conductores

de la acometida, en este caso la corriente de la carga pasa totalmente a través de las

bobinas del medidor. Se usa para corrientes no mayores de 100 A.

- Semi-directa o semi-indirecta: Es aquella en la que las señales de corriente se

toman a través de transformadores de corriente y las señales de tensión se toman

directamente de las líneas de alimentación a la carga.

- Indirecta: Aquella en donde el medidor de energía no está conectado directamente

a los conductores de la acometida sino a bornes de instrumentos auxiliares de

medición.

28

El medidor propuesto requiere la medición directa del voltaje desde la línea de carga, y la

medición de corriente a través del dispositivo sensor (se ha reemplazado el transformador

de corriente por un sensor de efecto Hall), por lo que podría considerarse del tipo semi-

directo.Existen otras clasificaciones de medidores que dependen de propósitos específicos

dentro del sistema de suministro de la red eléctrica (medidor totalizador, prepago, entre

otros).

3.2. CRITERIOS PARA LA SELECCIÓN.

Rango de potencia: En este caso es de interés la medición de los aparatos consumidores de

energía eléctrica, mejor denominados electrodomésticos. Para el dimensionamiento del

dispositivo de medición no es necesario conocer el consumo total por unidad (vivienda,

establecimiento grupo de establecimientos) que normalmente si es primordial para

determinar el tipo de contador que se instalará por parte del proveedor del servicio, sino

centrarse en el consumo máximo de los electrodomésticos.

En la tabla 1 se muestran los valores típicos de consumo de dispositivos eléctricos y

electrónicos domésticos. El mayor valor de potencia para estos no supera 4500 W. Los

mayores valores de consumo corresponden a dispositivos que se caracterizan por contener

principalmente elementos resistivos, muchos de ellos se encuentran empotrados, por lo cual

la medición permanente de la corriente circulante requiere de instrumentos de medición de

dimensiones importantes, los cuales están descartados para este proyecto ya que se busca

elaborar dispositivos de dimensiones reducidas. El valor máximo de potencia que será

posible medir estará dado por las características del sensor de corriente (rango y

sensibilidad) sin embargo es deseable que abarque buena cantidad de electrodomésticos sin

comprometer el tamaño ni las características del sensor, por lo que se estima que opere en

un rango máximo cercano a 750 W donde se encuentran la mayor parte de aparatos listados.

Rango de voltaje: El rango de voltaje a medir debe ser comparable con el rango del voltaje

de línea nominal para la red eléctrica del país. El valor aceptable dentro del margen de

calidad de servicio para las líneas de tensión (según se deduce de la norma ANSI C84.1)

está en un rango deseable del ± 5% y un rango aceptable entre 5.8% y -8.3%La resolución

CREG 024 de 2005 establece que en Colombia los límites para variaciones de tensión de

larga duración (superior a 1 minuto) están en un rango del ±10% del voltaje nominal. De

esta manera el dispositivo de medición debe cubrir un rango máximo que sea al menos un

10% superior al valor nominal de 120 V (132 V RMS o 186.6 V pico) para garantizar su

funcionamiento normal ante variaciones de voltaje de larga duración.

Rango de corriente: Se observa que la corriente máxima a medir no sobrepasa los 18

Amperios (tabla 3), sin embargo, dada las características de reducidas dimensiones que se

necesitan en el sensor de corriente este no será capaz de alcanzar dicho valor máximo, por

lo que teniendo en cuenta que se pretenden medir cargas no mayores a 750 W la corriente

en este caso estaría cercana a los 6.25 A que sería el valor máximo de medición del

dispositivo.

29

Tabla 8.Lista de electrodomésticos típicos con sus rangos de potencia en vatios, la corriente se deriva de la

potencia promedio para una línea monofásica con voltaje de 110 V (datos extraídos de la página

http://www.electrocalculator.com/ y adaptados al presente trabajo).

Aparato Tipo o marca Potencia (W) Corriente

(A) Mín Promedio Máximo

Afeitadora Genérica, antigua 0,7 2 15 0,017

Reloj Genérico 2 3,5 5 0,029

Cargador teléfono móvil Genérico 3 4 4,8 0,033

Altavoces PC / bocinas / parlantes Pequeños, laterales 3,4 10 23 0,083

Timbre de pared Genérico 8 10 15 0,083

Radio Genérico 0,1 13,4 40 0,112

Lector-reproductor DVD Grabador DVD sin nombre 8,7 13,8 25,3 0,115

Router ADSL (Internet) Genérico 10,1 20 30 0,167

Lámpara Fluorescente Fluorescente, genérico 6 24 40 0,200

Teléfono inalámbrico (base) Genérico 20 25 35 0,208

PC portátil Acer, EME725-452G64MIKK T4500 (2011) 35 46 65 0,383

Abrelatas eléctrico Genérico 50 60 80 0,500

Lámpara Bombilla filamento Bombilla filamento 40 60 120 0,500

Videoconsola HD cable box (disco duro externo) 30 80 194 0,667

Ventilador Cata 60 94 288 0,783

TV (LCD-DLP diferentes tamaños) DLP, 50-56 pulgadas 35 105 322 0,875

Reproductor DVD Genérico 25 106 200 0,883

TV (CRT) CRT Blanco y negro – Color 53 113 180 0,942

PC sobremesa (sólo la torre) Acer, AX3950 3.2GHZ/4GB 51 170 365 1,417

Impresora Laser Brother HL2240D monocromo (2011) 11 180 495 1,500

Batidora Genérico 140 210 250 1,750

Escáner HP Scanjet G2410 150 212 280 1,767

Extractor de aire (campana) Genérico 25 215 500 1,792

Exprimidora Genérico 35 245 450 2,042

Licuadora 5 velocidades 350 400 450 3,333

Nevera 21 ft3 90 408 1020 3,400

Rizador/alisador pelo aire caliente Revlon R420E 45 415 800 3,458

TV (plasma) Plasma, 42 pulgadas 450 465 470 3,875

Nevera Congelador grande OEM,JNS, 166 X 67,5 X 81,5 cm (2011) 100 517 890 4,308

Tostadora 1 uso, Philips 24 618 1051 5,150

Taladro (600 W) Genérico 600 670 750 5,583

Cafetera Genérico 600 680 730 5,667

Sandwichera Genérico 650 720 800 6,000

Aspiradora Genérica 670 1000 1300 8,333

Calentador de agua / terma eléctrica Genérico 20 1000 1500 8,333

Estufa cuarzo Genérico 350 1000 1200 8,333

Fotocopiadora Genérico 900 1000 1100 8,333

Olla arrocera Genérico 800 1000 1100 8,333

Hornillo eléctrico/Anafe Genérico 790 1050 1500 8,750

Plancha Genérico 1000 1067 1200 8,892

Lavadora 6 Kg 330 1100 2850 9,167

Secador pelo Braum silencio 1200 522 1100 2000 9,167

Horno microondas 1.2 ft3 1000 1250 1520 10,417

Microondas Genérico 640 1280 2000 10,667

Aire acondicionado Genérico, 2200 frigorías, 8800 BTU 560 1380 2950 11,500

Fogones eléctricos Genérico, 4 fogones 1200 2200 4500 18,333

30

Potencia consumida: La potencia del dispositivo debe ser la mínima posible, ésta resulta

de sumar el consumo de todos los componentes involucrados en el objeto IoT donde los

más importantes son el microcontrolador, el dispositivo de conexión a la red y el sensor de

parámetros eléctricos. Los valores máximos estimados están aproximadamente 450 mW

para el sensor de parámetros eléctricos, 500mW para el microcontrolador y hasta 650 mW

en el momento de envío de paquetes de datos grandes a través del dispositivo inalámbrico,

por lo que el valor de potencia podría llegar a alcanzar 1.6 W como máximo dependiendo

de las condiciones de operación y el envío de los datos. Típicamente los valores están muy

por debajo de este rango, estimándose para el sensor de parámetros eléctricos un valor de

25 mW, 25 mW para el microcontrolador y alrededor de 3 mW para el dispositivo

inalámbrico de red en reposo (siendo este el que presenta las mayores variaciones de

consumo de potencia en todo el proceso normal de operación del dispositivo) por lo que la

potencia en condiciones normales debería estar en un valor cercano a 53 mW.

Precisión de la medición: dado que el objetivo del proyecto es la implementación de

objetos IoT, la precisión de la medición de los parámetros eléctricos no es un factor crítico.

Es deseable, sin embargo, que el valor de la medición se encuentre dentro de un error no

mayor al 5%. Instrumentos de mejor precisión por exigen gran tamaño y elevado costo, lo

que implica una desviación en el propósito principal del trabajo.

Ambiente en el que se realizará la medición: El entorno de medición corresponde a

ubicaciones de carácter doméstico (habitaciones, sala, cocina, entre otros) los cuales tienen

unos niveles de humedad y temperatura estables. Se descartan medidores de alto costo

diseñados para ambientes con grandes variaciones de temperatura así como exposición a

humedad y corrosión.

Tipo de salida requerida: Los datos entregados por el dispositivo sensor deben contener la

medición de los parámetros eléctricos elegidos (voltaje y corriente como mínimo) estos

pueden ir representados de diferentes maneras como niveles de voltaje, trenes de pulsos o

secuencias de datos a través de un puerto de comunicaciones. Se pretende sencillez en el

diseño por tanto se busca que la captura de la información ocupe la menor cantidad de

componentes posible.

Linealidad y velocidad de respuesta: Una alta linealidad no es crítica para el proyecto, es

deseable sin embargo que la desviación de las mediciones sea pequeña, especialmente en

los rangos más bajos de la medición de potencia y corriente. La velocidad de respuesta del

sistema de medición debe ser no superior a un segundo que es el tiempo establecido para

hacer el envío de datos a través del dispositivo de red.

Costos: El costo del dispositivo debe ajustarse al presupuesto sin llegar a ser demasiado

excesivo. Como ya se ha visto, los dispositivos de estado sólido que efectúan las

mediciones de parámetros eléctricos son los que presentan la mejor relación entre el costo,

tamaño, capacidad de medición, entre otras características, por lo cual un dispositivo de

este tipo es el elegido y cuyos detalles se mencionan seguidamente.

31

3.3. SELECCIÓN DEL TIPO DE DISPOSITIVO.

Para la medición se seleccionó un dispositivo de estado sólido. En la actualidad existen

varias series de circuitos integrados dedicados para la medición de energía eléctrica, una de

las más completas y conocidas es la serie ADE77xx de Analog Devices la cual se ajusta a

los requerimientos para efectuar todo tipo de mediciones eléctricas en diferentes tipos de

líneas de tensión. De esta serie los circuitos integrados que entregan los parámetros

deseados para una línea monofásica que tiene mayor interés dado su costo y confiabilidad

son el ADE7753 y ADE7763. Básicamente se trata del mismo circuito donde las

principales diferencias radican en su capacidad para soportar transitorios de voltaje y

corriente, y descargas electrostáticas.

3.4. MEDICIÓN DE CORRIENTE.

Las técnicas para efectuar la medición de corriente buscan transducir la corriente eléctrica

en una señal de voltaje que sea posible medir en un dispositivo de estado sólido. Se usan

cuatro tipos de transductores para efectuar la medición, siendo el más sencillo una

resistencia (o un divisor resistivo)de un valor muy bajo y preciso, conectada en serie con la

carga, y medir la caída de potencial sobre dicha resistencia la cual es equivalente a la

corriente circulante a través del dispositivo. Este tipo de medidor tiene la desventaja de que

la corriente circulante que se va a medir pasa completamente a través del sensor; para

efectuar la medición de altas corrientes se requiere que el elemento resistivo tenga grandes

dimensiones y disipe una importante cantidad de potencia que se pierde en el proceso de

medición. También tiene la desventaja de que no se genera aislamiento eléctrico de la línea

hacia el medidor con lo cual el circuito de medición está expuesto a las características no

deseadas de la línea AC, como sobre-tensiones. Por su parte, tiene la ventaja de ser

sumamente sencillo y económico. Otra manera de hacer la medición de corriente es a través

del denominado transformador de corriente, este hace uso de un circuito magnético que

transduce el valor de la corriente desde el devanado de una bobina a otra acoplada mediante

un núcleo. La bobina Rogowski es una versión más simple del transformador de corriente

donde un inductor toroidal (normalmente con núcleo de aire) se enrolla alrededor del

conductor a través del cual circula la corriente a medir, la señal obtenida corresponde a la

derivada de la corriente por lo que es necesario añadir un integrador para recuperar el valor

transducido de la corriente.

Para este proyecto se han descartado los sensores de transformador de corriente y la bobina

Rogowski, que aunque son sistemas de medición muy confiables, por lo general ocupan un

volumen mucho mayor en comparación con los dispositivos de medición de corriente de

estado sólido (figura 1). Igualmente se han descartado los divisores resistivos dados los

inconvenientes que presentan en altas corrientes. El dispositivo de medición de corriente de

estado sólido posee un sensor lineal de efecto Hall alineado a un conductor por el que

circula la corriente a medir, esta genera un campo magnético que el sensor convierte en una

32

tensión proporcional. La exactitud del dispositivo se optimiza a gracias a la cercanía de de

la señal magnética al transductor al estar todo construido en un mismo encapsulado.

Figura 1. Comparación de tamaños de los tipos de sensores de corriente: A) Resistivo, B) Transformador de

corriente, C) Bobina Rogowski, D) Sensor de estado sólido de efecto Hall.

Una de las series de IC de sensores de corriente más usada en la medición de tensiones de

red domésticas es la serie ACS7xx de Allegro Microsystems, de esta se ha seleccionado el

IC ACS714 el cual tiene una capacidad de medición hasta 20 A, el cual cubre todo el rango

de electrodomésticos de la tabla 1. En la figura 2 se observa la conexión típica del

dispositivo, requiriendo únicamente un par de condensadores que fijan la tensión de

alimentación y un filtro pasabajas externo para eliminar ruidos de la línea [15].

Figura 2. Diagrama típico de conexión del IC ACS714 (tomado de la hoja de datos del fabricante).

33

3.5. MEDICIÓN DE VOLTAJE.

La medición de voltaje, como en el caso anterior, puede hacerse directamente desde la línea

a medir usando un divisor resistivo o un transformador convencional de voltaje, otros

métodos como el uso de optoacopladores lineales permiten el aislamiento eléctrico entre el

voltaje a medir y el instrumento, empero exigen el uso de una mayor cantidad de

componentes a parte de fuentes de alimentación en ambos lados de la medición, motivo por

el que se han descartado buscando una mayor sencillez, de modo que la medición se tomará

usando un divisor resistivo. Un aspecto muy importante a tener en cuenta al hacer la

medición de esta manera será el acople entre la tierra digital y en neutro de la línea AC tal

como se describe en la sección 5.4.1.1.

3.6. SENSOR SELECCIONADO

3.6.1. CARACTERÍSTICAS TÉCNICAS DEL ADE7753.

EL ADE7753 es un medidor de potencia eléctrica monofásica basado en un sistema de

registros, con interfaz serial y salida de pulsos. El mismo ofrece entre otras las siguientes

características [16]:

- Salida de tren de pulsos cuya frecuencia es proporcional a la potencia activa.

- Interfaz serial de cuatro hilos compatible con SPI, que permite la comunicación entre

Microcontroladores.

Alta exactitud (menos del 0,1% de error sobre un rango de 1000 a 1).

- Detección de baja tensión o ausencias de la misma durante lapsos predefinidos, con

umbrales de tensión de línea programables.

- Muestras digitales de las formas de onda de tensión y corriente.

- Calibración digital de la potencia, la fase y la deriva (offset de entrada).

- Sensor de temperatura incorporado.

- Referencia de tensión de 2,5 ± 8% y temperatura de 30ppm/ºC incorporada.

- Salida de pulsos sincronizada con los cruces por cero de la tensión de línea, que puede ser

utilizada para extraer información de tiempo o frecuencia y sincronizar dispositivos

externos.

- Disponibilidad de 18 registros de datos (6 de sólo lectura y 12 de lectura y escritura),

accesible a través de la interfaz serial desde un registro maestro de comunicaciones.

- Ancho de banda nominal de 14KHz.

- Variación típica en la frecuencia de salida del orden de 0,2%.

- Entradas analógicas de alta impedancia (390KW mínima), capaces de aceptar señales

hasta de ±1V.

34

- Frecuencias de reloj de opresión en el intervalo de 1MHz hasta 10MHz. (El valor nominal

es de 3,579545MHz)

- Entradas y salidas lógicas compatibles con TTL y CMOS.

-Alimentación a partir de una fuente sencilla de +5V con bajo consumo de potencia

(15mW, típico).

Figura 3. Esquema de bloques del IC ADE7753 (tomado de la hoja de datos del fabricante).

El ADE7753 cuenta con conversores ADC y procesamiento DSP propios para lograr una

alta precisión con grandes variaciones en las condiciones ambientales y en el tiempo

(Figura 3). Incorpora dos ADC de 16 bits de segundo orden tipo sigma delta (Σ-Δ), un

integrador digital (en CH1- medición de corriente), circuitos de referencia, sensor de

temperatura, y todo el procesamiento de señales requerido para realizar mediciones de

energía activa, reactiva, y aparente, medición del período del voltaje de línea, medición y

cálculo del valor RMS de voltaje y corriente. Proporciona una interfaz de serie sincrónica

para leer datos, y una frecuencia de salida de impulsos (CF), que es proporcional a la

potencia activa. Posee también características de calibración del sistema que garantizan una

alta precisión. También detecta variaciones de corta duración, de bajo o de alto voltaje. El

modo de acumulación único positivo brinda la opción de acumular energía sólo cuando se

detecta energía positiva. Un umbral de no-carga interna asegura que el componente no

presenta ninguna influencia cuando no hay carga. La salida de cruce por cero (ZX) produce

un pulso que está sincronizado con el punto de la tensión de línea de cruce por cero. Esta

señal se utiliza internamente en los modos de acumulación de energía activa y aparente por

ciclo de línea, lo que permite una calibración más rápida.

35

3.6.2. MONTAJE DEL CIRCUITO ADE7753.

EL montaje del ADE7753 se realizó de acuerdo a la documentación técnica de la hoja de

datos de fabricante. Se requiere de pocos componentes para poner en funcionamiento este

IC. En la figura 4 se muestra el circuito elaborado para efectuar las pruebas de medición y

calibración, para estas pruebas la alimentación de voltaje DC se realizó usando una fuente

regulada con transformador, por lo que se garantizó el aislamiento eléctrico a fin de que el

acople de la tierra digital con el neutro de le línea AC no generara cortocircuitos que

pudieran destruir el circuito, Así mismo, se realizaron pruebas usando aislamiento con

transformador en el divisor resistivo encargado de la medición de voltaje para poder

conectar el microcontrolador al PC y hacer pruebas del comportamiento de los registros del

ADE7553.

Figura 4. Circuito propuesto para la calibración del circuito ADE7753.

3.6.2.1 Conexión del sensor de voltaje.

De acuerdo a la documentación del ADE7753 [16], la medición de voltaje se efectúa a

través de un canal de entrada de voltaje diferencial marcado como V2P/V2N cuyo valor

nominal máximo es de ± 0,5 V con respecto a la tierra análoga (AGND), soportando

transitorios de hasta 5 V en un intervalo menor de 1 segundo. Este canal tiene un

amplificador de ganancia programable (PGA) como se observa en la figura 3, con posibles

selecciones de ganancia de 1, 2, 4, 8, y 16. La selección de la ganancia se hace escribiendo

el registro de ganancia (GAIN). La documentación del IC indica que en este lazo se debe

incluir un filtro anti-aliasing RC que genere una atenuación cercana a 40 dB al doble de la

frecuencia de muestreo (447 KHz con un reloj de 3.58 MHz). El circuito recomendado es

un desacople con un resistor de 1 KΩ en paralelo con un capacitor de 33 nF (C7, C8, R10 y

R18 en la figura 3). Por lo que para calcular el valor del divisor de voltaje se tiene en cuenta

que el valor máximo de voltaje a la entrada del conversor es de ± 0,5 V y que los límites

para variaciones de tensión de larga duración (superior a 1 minuto) están en un rango del

36

±10% del voltaje nominal como se describió en la sección 3.2, y que la caída de voltaje a

medir se hará sobre un resistor de 1 KΩ como se muestra en la figura 5, siendo así sólo

queda calcular el valor requerido de R1.

Figura 5. Divisor de voltaje para la medición de voltaje en el ADC del ADE7753.

De la caída de potencial sobre R2:

𝑉𝑚 =𝑅2𝑉𝑝

𝑅1 + 𝑅2 𝑅1 = 𝑅2

𝑉𝑝

𝑉𝑚− 1

Reemplazando valores:

𝑅1 = 1000 187

0.5− 1 = 373 𝐾Ω

Por lo que el valor mínimo recomendado para R2 es de 373 KΩ. En la práctica se han

variado estos valores ligeramente estableciendo este valor en 364 KΩ ya que este era el

valor más cercano que se alcanzó con el menor número de resistencias de precisión (el

divisor debe tener una precisión del 1% o mejor).

3.6.2.2. Conexión del sensor de corriente.

El sensor de corriente ACS714-20A tiene una sensibilidad de 100mV/A [15], por lo que

este entregará una señal AC con un valor pico de 2 V como valor con su carga máxima, sin

embargo es necesario hacer una serie de consideraciones, la principal es que el circuito

propuesto para la medición de energía eléctrica también tendrá la capacidad de controlar el

encendido del electrodoméstico. Se incluye un circuito simple de conmutación con un triac

que soporta hasta 16 A (tal como el BTA16). En operación normal se limitará la corriente a

un máximo de 6.25 A, por lo que las cargas que se pueden conectar al circuito propuesto no

deben superar los 750 W. Esta restricción limita la cantidad de electrodomésticos que se

pueden conectar, sin embargo, cubre la mayoría de los descritos en la tabla 1. Establecida la

carga máxima el valor máximo de voltaje de salida del sensor será de 0.6 Voltios, por lo

que en todo caso es necesario efectuar un divisor de voltaje para no superar el umbral de

0.5 V del ADC. Adicionalmente, el valor que entrega el sensor está montado sobre la mitad

del voltaje de polarización DC del sensor (2.5 V) por lo que es necesario eliminar esta

componente, para ello la solución más simple es agregar un capacitor en serie con el

circuito resistivo que se usará como divisor de voltaje. Inicialmente consideremos un

divisor resistivo como el del figura6, si fijamos R1=1 KΩ:

37

𝑅2 =𝑅1

𝑉𝑝

𝑉𝑚− 1

=1000

0.6

0.5− 1

= 5000

El valor comercial más cercano es de 5.1 KΩ que es el que se ha seleccionado. Para

calcular el capacitor se tendrá en cuenta que la frecuencia de línea es de 60 Hz, por lo que

es deseable que a esta frecuencia la impedancia del capacitor sea insignificante, igualmente

se colocará un capacitor como filtro pasabajas para limitar el ruido de alta frecuencia como

recomienda la hoja de datos. Se obtiene un filtro pasabanda como el de la figura 4, la

función de transferencia:

Figura 6. Circuito para el acople del Sensor ACS714 con en el ADC del ADE7753.

𝑉0

𝑉𝑖=

𝑠 1

𝑅1𝐶2

𝑠2 + 𝑠𝜔𝐵 + 𝜔02 𝑑𝑜𝑛𝑑𝑒 𝜔0

2 =1

𝐶1𝐶2𝑅1𝑅2

La frecuencia central debe ser cercana al valor de 60 Hz de la línea AC. Para establecer el

valor de los capacitores se tendrá en cuenta que el ancho de banda que se requiere debe

garantizar una atenuación de al menos -40 dB a 894 KHz, dado que la caída en potencia es

de -20 dB/década en la parte pasabajas, se requiere que la frecuencia de corte de alta sea de

8.9 KHz o menor. Es posible escoger arbitrariamente un capacitor y calcular el otro, por

facilidad de cálculo se establece C2 en 0.1 µF y determinamos el valor de C1:

𝐶1 =1

𝜔02𝐶2𝑅1𝑅2

=1

120𝜋 0.51 = 13,79 µ𝐹

El valor comercial más cercano es de 10 µF, por lo que podemos seleccionar este y calcular

nuevamente la frecuencia central y el ancho de banda:

𝜔02 =

1

𝐶1𝐶2𝑅1𝑅2=

1

5.1∗ 106 𝑑𝑒 𝑑𝑜𝑛𝑑𝑒 𝜔0 = 70.475 𝐻𝑧

Que es un valor cercano a los 60 Hz de la línea, el ancho de banda queda entonces como:

𝜔𝐵 =

𝑅2

𝐶2+

𝑅2

𝐶1+

𝑅1

𝐶2

𝑅1𝑅2 =

6.151 ∗ 1010

5.1 ∗ 106= 12060.8,𝑑𝑒 𝑑𝑜𝑛𝑑𝑒 𝑓𝐵 = 1919.5 𝐻𝑧

38

Se establece entonces el ancho de banda cercano a 2 KHz, lo cual es mucho menor que el

máximo estipulado de 8.9 KHz

3.6.3. CALIBRACIÓN.

3.6.3.1 Ajuste de registros.

Una vez elaborado el montaje del circuito de prueba, diferentes cargas con valores

conocidos de resistencia y/o consumo de potencia activa fueron colocados en el mismo a

fin de conocer los valores medidos almacenados en los registros del ADE7753. Para

realizar la calibración de forma correcta y confiable se han tenido en cuenta las siguientes

consideraciones:

•El ADE7753 fue calibrado con las cargas a emplear (electrodomésticos).

•El ADE7753 fue montado de acuerdo a la hoja de datos del fabricante.

•Se realizaron pruebas dentro de todo el rango a medir, teniendo en cuenta la posterior

inclusión del circuito de control ON/OFF.

Adicionalmente para esta prueba se siguieron los siguientes parámetros:

1. El circuito digital se encuentra completamente aislado de la línea AC mediante un

transformador de voltaje.

2. Se adicionó un fusible de 10 A en caso de que accidentalmente se presentara un

cortocircuito, o se conectara una carga por encima de los valores a medir.

3. Se realizaron mediciones modificando el valor de los registros de configuración del

ADE, principalmente el registro MODE (#000009 de la memoria del ADE), este registro

de 16 bits es donde la mayor parte de la funcionalidad del ADE7753 es accedida: La tasa de

muestreo, el habilitador del filtro, y los modos de calibración son seleccionados escribiendo

en este registro. El otro registro de vital importancia para las pruebas el es IRQEN

(#00000A de la memoria del ADE), este es el registro habilitador de interrupciones. Las

interrupciones del ADE7753 pueden ser desactivadas en cualquier momento poniendo el

correspondiente BIT en cero en este registro.

Los datos tomados se muestran en la tabla 2. El microcontrolador efectúa la lectura de los

registros cada segundo y los envía hacia el PC mediante una interfaz serie, allí una sencilla

aplicación de terminal los recibe y almacena en un archivo de texto plano. Los registros que

se leen, y que contienen los datos relevantes para la prueba son:

AENERGY (#000002) Registro de potencia activa. La potencia activa es acumulada sobre

un periodo de tiempo en un registro de 24 bits de solo lectura.

IRMS (#000016) Registro que acumula el valor RMS del canal 1 (canal de corriente).

VRMS (#000017) Registro que acumula el valor RMS del canal 2 (canal de voltaje).

39

El ADE7753 tiene un total de 43 registros que se usan para la calibración, modificación de

parámetros y puesta a punto del IC. En la Figura 5 se muestra el ajuste inicial de registros

necesario para la correcta toma de datos de los registros de medición. Inicialmente se

habilita el IC colocando en ALTO el pin CS (Chip Select), se espera mientras se inicializan

todos los registros a su estado por defecto, en seguida se habilitan las interrupciones

(establecer en 1 el bit 7 del registro IRQEN, registro habilitador de interrupciones), y la

detección de cruce por cero para que genere eventos (bit 5 a ALTO en registro IRQEN). Se

establece el registro MODE en 140, con este valor la Frecuencia de salida CF se desactiva

(no es usada en esta implementación).La detección de huecos de tensión de línea se

desactiva igualmente. Finalmente también se coloca el chip en modo de acumulación de

energía ciclo de línea [16].

Figura 7. Ajuste inicial de registros del ADE7753 para las mediciones de parámetros eléctricos.

El registro VAGAIN (#00001A) es un multiplicador que se agrega al cálculo de la potencia

(La ganancia se ajusta al escribir un número de 12 bits en complemento a 2 en el registro),

este se establece en cero ya que se trabajará con el valor de potencia tal como se desprende

de la medición de voltaje y corriente a partir de los ADC. El registro LINECYC

(#00001C)es un registro de 16 bits usado durante el modo de acumulación de energía de

ciclo de línea para establecer el número de medios ciclos de línea para la acumulación de

energía, este cuanta cada uno de los cruces por cero (medio ciclo) Dado que se desea hacer

una medición cada segundo, el calor se establece en 120 o un número menor de ciclos.

Tabla 2.Pruebas y colecta de datos de medición del ADE7753 con diferentes cargas.

Carga A (RMS) V (RMS) W IRMS VRMS LAENERGY

0 W 0 120 0 8600 1410000 5

8W 0,064 121 7,744 57700 1401400 362

14 W 0,133 120,8 16,0664 112000 1383000 668

22 W 0,194 120,3 23,3382 154700 1370000 993

40 W 0,328 120,8 39,6224 181800 1404000 1938

60 W 0,5 120,8 60,4 274100 1403000 2898

68 W 0,555 120,3 66,7665 313400 1397229 3238

74 W 0,605 119,9 72,5395 348400 1370000 3464

100 W 0,8 120 96 451100 1392000 4738

170 W 1,62 118,8 192,456 939700 1357400 8498

720 W 8,62 115,1 992,162 3596892 1306038 34935

40

3.6.3.2. Equivalencia de valores obtenidos.

En la tabla 2 se muestran los valores obtenidos de los registros VRMS, IRMS y

LAENERGY, correspondientes a la medición de voltaje, corriente y potencia para cada una

de las cargas que se han usado, a partir de estos valores se puede establecer el valor

equivalente de cada valor de registro respecto al valor medido, de forma que se obtiene una

ecuación para recuperar los valores de estos parámetros. Estos valores de calibración serán

parte de las funciones encargadas de gestionar los datos en el servidor como se verá en el

capítulo 6, es decir, el dispositivo propuesto en el capítulo 5 no efectuará conversiones sino

que únicamente hará lectura de datos y envío de los mismos a la web.

Figura 8. Obtención de la ecuación lineal para los valores de voltaje, corriente y potencia medidos con el

ADE7753.

Los registros poseen un valor de offset que puede ser reducido mediante la calibración de

los registros de offset (IRMSOS y VRMSOS), sin embargo, por simplicidad se ha dejado

esta corrección para la función de conversión de servidor, a partir de la regresión efectuada

(figura 8) se estimaron los siguientes valores de conversión:

y = 0,0000017774x - 0,0251367404

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

1,8

0 300000 600000 900000

A (RMS)

y = 0,0221137745x - 1,7760384888

0

50

100

150

200

250

0 3000 6000 9000

W

y = 0,0000577011x + 40,1217936204

115

116

117

118

119

120

121

122

1300000 1330000 1360000 1390000

V (RMS)

41

Conversión de corriente: El valor del offset oscila ligeramente sobre un valor de 8600, por

lo que para recuperar el valor inicialmente se resta dicho valor del obtenido en el registro,

al recalcular la linealización se obtiene que:

𝑪𝒐𝒓𝒓𝒊𝒆𝒏𝒕𝒆 𝒎𝒆𝒅𝒊𝒅𝒂 =𝑰𝑹𝑴𝑺 − 𝟖𝟔𝟎𝟎

𝟓𝟒𝟏𝟎𝟎

Conversión de voltaje: Para efectuar la conversión del voltaje se han realizado varias

pruebas usando diferentes valores AC de salidas de transformador, en la práctica rara vez

existirán oscilaciones mayores a unos cuantos voltios respecto al valor nominal de la línea

AC. El valor aproximado de voltaje se obtiene mediante:

𝑽𝒐𝒍𝒕𝒂𝒋𝒆 𝒎𝒆𝒅𝒊𝒅𝒐 =𝑽𝑹𝑴𝑺

𝟏𝟏𝟕𝟓𝟎

Conversión de potencia: La potencia presenta igualmente un offset que varía entre valores

negativos hasta 17 aproximadamente estando la mayor parte del tiempo en 5, por lo que

para valores menores a 17 se tiene en cuenta el comportamiento de la corriente para

establecer si hay o no consumo de potencia, para labores por encima de este umbral se usa

la siguiente expresión:

𝑷𝒐𝒕𝒆𝒏𝒄𝒊𝒂 𝒎𝒆𝒅𝒊𝒅𝒂 =𝑳𝑨𝑬𝑵𝑬𝑹𝑮𝒀− 𝟏𝟕

𝟒𝟓.𝟐𝟐𝟎𝟕

3.7. CONCLUSIONES.

.

Se seleccionó y probó el dispositivo de medición de parámetros eléctricos que hará parte

del dispositivo de medición eléctrico, este es el IC ADE7753, el cual tiene unas

prestaciones aceptables de medición a un bajo costo, aprovechando el sensor de corriente

ACS174 el cual reduce considerablemente el tamaño de la circuitería pensado en

desarrollar un objeto IoT pequeño y fácil de usar. No se realizó una calibración de precisión

del medidor ya que no es el propósito de este proyecto, para ello se requiere, entre otros

elementos, de un banco de cargas bien definidas así como un variac o circuito equivalente

para modificar la amplitud de la señal AC en la medición de voltaje. Desarrollos detallados

de diversas calibraciones y puestas a punto se encuentran en [35], [36] y [37], por lo que se

remite al lector a dichas referencias.

En las pruebas efectuadas se encontró que el ADE genera un reset, cuando se presentan

picos de corriente por la conexión de una carga en el circuito, en la hoja de datos se

recomienda el uso de bobinas de choke en los acoples de tierras y en los nodos de las

mediciones. En cualquier caso se implementó en el microcontrolador una rutina que detecta

el estado de reset del ADE7753 y restablece los registros al estado requerido como los

dados en la figura 7.

42

4. MÉTODO DE COMUNICACIÓN DE DISPOSITIVOS

4.1. PROTOCOLOS DE COMUNICACIÓN ENTRE DISPOSITIVOS.

En la actualidad existen varios protocolos inalámbricos de comunicación, así como

dispositivos y tecnologías que se ajustan a estos. Dentro de la selección se han tenido en

cuenta, entre otros factores, la fiabilidad de la red, la capacidad de itinerancia, los

mecanismos de recuperación, el precio conjunto de chips y la capacidad instalada. Los

estándares Bluetooth (norma IEEE 802.15.1), ultra-wideband (UWB - ultra banda ancha,

norma IEEE 802.15.3), ZigBee (IEEE 802.15.4), y Wi-Fi (IEEE 802.1) son cuatro de las

normas de protocolos de comunicación inalámbrica de corto alcance con bajo consumo de

energía [17], siendo estos las más extendidos. Desde el punto de vista de aplicación,

Bluetooth está destinado a periféricos como ratones inalámbricos, teclados, auriculares,

manos libres, controles para consolas de videojuegos, entre otros. UWB está orientado a

enlaces multimedia de banda ancha, ZigBee está diseñado para el monitoreo y control de

redes inalámbricas confiables, mientras que Wi-Fi está dirigido a conexiones de equipo a

equipo como una extensión o sustitución de las redes cableadas.

En la Tabla 2 se muestra una comparación entre las diferentes características de los

estándares de comunicación mencionados. Aunque el protocolo de comunicación ZigBee es

popularmente adoptado en redes de sensores inalámbricos (WSN), es más bien inmaduro en

comparación con el Protocolo de Internet (IP) que ha tenido gran difusión y desarrollo

durante los últimos 40 años [18]. Las Redes ZigBee no pueden comunicarse directamente

con el Internet actual. Siempre necesitan una puerta de entrada (gateway) para recoger los

datos necesarios de una red ZigBee y convertir el protocolo ZigBee en IP. Por el contrario,

el Protocolo de Internet, especialmente la versión 6 (IPv6), es una alternativa más

prometedora en lo que se refiere a la escalabilidad. Si una red de sensores inalámbricos se

desarrolla basada en el protocolo IP, se elimina la necesidad de un traductor de capa de

aplicación que es obligatorio para las redes ZigBee. Muchos servicios basados en IP

existentes pueden por lo tanto ser reutilizados para monitorear redes inalámbricas de

sensores en tiempo real.

Wi-Fi es el estándar con mayor capacidad instalada, sus módulos para desarrollo, que hasta

hace poco eran escasos, se encuentran hoy a precios similares a los de otras normas. Entre

otras ventajas, permite el uso de menos infraestructura al no requerir de puertas de entrada

adicionales para acceder a Internet, alcances de señal adecuados para su uso en ambientes

interiores (hogares con múltiples habitaciones y pisos). Por otra parte tiene la desventaja de

requerir un importante consumo de energía en comparación con otros estándares, lo cual

43

afecta el tiempo de vida útil de las baterías para los dispositivos, así como de requerir

fuentes de alimentación un tanto más robustas que sus equivalentes [17].

Tabla 1. Comparación entre las diferentes características de los estándares de comunicación inalámbrica más

usados.

Estándar Bluetooth UWB ZigBee Wi-Fi

Norma IEEE 802.15.1 802.15.3a * 802.15.4 802.1 1a/b/g

Bandas de frecuencia 2.4 GHz 3.1-10.6 GHz 868/915 MHz; 2.4

GHz 2.4 GHz; 5 GHz

Tasa máxima de la señal 1 Mb/s 110 Mb/s 250 Kb/s 54 Mb/s

Alcance nominal 10m 10 m 10 - 100 m 100 m

Potencia 0 - 10 dBm -41.3 dBm/MHz (-25) - 0 dBm 15 - 20 dBm

Número de canales de RF 79 (1-15) 1/10; 16 14 (2.4 GHz)

Ancho de banda del canal 1 MHz 500 MHz - 7.5

GHz 0.3/0.6 MHz; 2 MHz 22 MHz

Tipo de modulación GFSK BPSK, QPSK BPSK (+ ASK), O-QPSK BPSK, QPSK,

COFDM, CCK, M-QAM

Extensión de modulación FHSS DS-UWB, MB-

OFDM DSSS DSSS, CCK, OFDM

Mecanismo de coexistencia

Saltos adaptables

de frecuencia

Saltos adaptables de frecuencia

Selección dinámica de Frecuencia

Selección dinámica de frecuencia,

control de potencia de transmisión

(802.1 1 h)

Celda básica Piconet Piconet Estrella BSS

Ampliación de la celda básica

Scatternet Igual a Igual (P2P) Árbol de clúster,

Mesh ESS

Número de nodos de la celda

8 8 > 65000 2007

Encriptación Cifrado de

flujo EQ

Cifrado de clave AES (CTR, modo

contador)

Cifrado de clave AES (CTR, modo contador)

Cifrado de flujo RC4 (WEP), Cifrado de

clave AES

Autentificación Secreto

compartido CBC-MAC (CCM)

CBC-MAC (ext. of CCM)

WPA2 (802.11i)

Protección de datos 16-bit CRC 32-bit CRC 16-bit CRC 32-bit CRC

4.2. SELECCIÓN DEL MÓDULO DE COMUNICACIÓN INALÁMBRICO.

Para elegir de módulo de comunicación, basado en Wi-Fi, se han explorado las

características técnicas, las dimensiones físicas y el costo, siendo este último el factor

determinante en la selección. En la Tabla 3 se listan los módulos comerciales más comunes.

Para el proyecto la tasa de transferencia de datos es muy inferior a las máximas capacidades

de cada módulo por lo que no resulta ser un factor relevante en la selección, igualmente

44

sucede con la comunicación con el microcontrolador, donde todos los módulos posen

protocolos comunes en estos IC. En cuanto a la encriptación de los datos todos comparten

las más usadas en el estándar IEEE 802.11. Las dimensiones físicas varían bastante según

los propósitos específicos del diseño de los módulos, siendo el Wifi Shield de Arduino el

más grande al estar pensado para conectarse a una placa Arduino, los más pequeños y

adecuados para el propósito del trabajo son el RN-XV WiFly y el ESP8266. De estos

últimos, el ESP8266 destaca por sus reducidas dimensiones y especialmente por su bajo

costo, razones por las cuales se ha elegido como el módulo de comunicación de los

dispositivos IoT propuestos.

Tabla 2. Comparativa entre diferentes módulos de comunicación inalámbrica Wi-Fi.

Dispositivo Fabricante Estándar Velocidad

de conexión Encriptación

de red

comunicación con

microcontrolador

Costo aprox

U$

DigiConnect ME

DigiConnect 802.11 b/g/n

hasta 11Mbps

WEP, WPA, WPA2

RS-232/422/485 hasta 230 Kbps

109

Wifi Shield Arduino 802.11

b/g hasta 10

Mbps WEP, WPA2 SPI hasta 25MHZ 77

WiFiShield - CC3000

SparkFun 802.11

b/g hasta 11

Mbps

WEP, WPA, WPA2, AES,

TKIP SPI hasta 16MHZ 40

RN-XV WiFly

SparkFun 802.11

b/g

hasta 54 Mbps en 802.11g

WEP, WPA, WPA2, PSK

UART hasta 464 Kbps

35

ESP8266 Espressif 802.11 b/g/n

hasta 54 Mbps en 802.11g

WPA,WPA2 SPI, UART, I2C hasta 100 KHz

7

4.3. DISPOSITIVO WIFI ESP8266EX

El ESP8266EX es un IC del fabricante chino Espressif el cual cuenta con un

chipTensilicaL106 que integra un microcontrolador RISC de 32 bits como MCU (Figura

1). La velocidad de reloj de CPU es de 80MHz llegando a un valor máximo de 160MHz. La

versión actual del kit de desarrollo de software (SDK) ocupa sólo el 20% de la pila de

memoria del MIPS3para la operación de Wi-Fi, el resto se puede usar para el desarrollo de

aplicaciones de usuario. A finales de octubre de 2014 Espressif dio a conocer un SDK que

permite al chip ser programado directamente, eliminando la necesidad de un

microcontrolador externo, por lo que hay disponibles dos firmware para instalación; uno

3Se denomina MIPS (siglas de Microprocessor without Interlocked Pipeline Stages) a toda una familia de

microprocesadores de arquitectura RISC desarrollados por MIPS Technologies.

45

por comandos AT si se quiere controlar con un MCU externo, y otro que permite el uso del

MCU interno del ESP. La placa trae integrada la antena, un balun RF, un amplificador de

potencia, un amplificador bajo en ruido, filtros y un módulo de gestión de energía. Requiere

un mínimo de circuitos externos y está diseñado para ocupar un área mínima de PCB.

En el mercado existen gran variedad de placas con el chip ESP8266EX [19] (figura 2) la

diferencia radica en los diferentes tamaños, pines disponibles y memoria flash que los

ensambladores ponen a disposición. Para el proyecto se ha seleccionado la versión 1del

ESP8266 (figura 3) el cual es el más común dado que tiene el menor precio, en

contrapartida es el que posee la menor cantidad de pines disponibles para conexión externa.

Figura 1. Encapsulado del IC ESP8266EX y diagrama de bloques [20].

4.3.1 CARACTERÍSTICAS.

Las principales características del módulo seleccionado son:

• CPU tipo RISC de 32 bits Tensilica Xtensa LX106 a 80 MHz

• RAM de 45 Kbytes

• Flash externa de 512 Kb hasta 4 Mb (soporta hasta 16 Mb)

• IEEE 802.11 b/g/n Wi-Fi

• Integrado TR switch, balun, LNA, amplificador de potencia

• Autentificación WEP o WPA/WPA2

• SPI, I²C, I²S

• UART

• 1 ADC de 10-bit

• Voltaje de operación 3 v -3.6 v

• Protocolos de red IPv4, TCP/UDP/HTTP/FTP

• Tamaño (14.3 x 24.8)mm

46

Figura 2. Diferentes presentaciones del módulo ESP8266

Figura 3. ESP8266-01 con memoria flash y chip ESP8266EX(tomado de

http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family)

4.3.2 CONSUMO DE CORRIENTE.

La tabla 3indica el consumo de corriente con un suministro de 3,3 V a 25 ° C de

temperatura. Las mediciones se llevan a cabo en el puerto de la antena sin filtro SAW. Las

mediciones se basan en un ciclo de trabajo del 90% y modo de transmisión continua [20].

4.3.3. MEMORIA.

Según el actual SDK, la memoria RAM disponible es menor que 45 Kb cuando el

ESP8266EX está trabajando en el modo de estación y se encuentra conectado al router.

Este espacio, aunque limitado, suele ser suficiente para la operación del módulo en todos

los protocolos que soporta. No hay una ROM programable en el IC, por lo tanto, el

programa de usuario debe ser almacenado en una memoria Flash externa por SPI la cual va

integrada al módulo. El tamaño final depende de la Flash instalada, sin embargo, el

direccionamiento no soporta memorias mayores de 16 Mb.

47

Tabla 3. Entrada de corriente al módulo ESP8266-01 de acuerdo a los modos de operación.

Modo Típico Unidades

Transmitir 802.11b, DSSS4 1 Mbps, POUT=+19.5 dbm 215 mA

Transmitir 802.11b, CCK511Mbps,POUT=+18.5 dbm 197 mA

Transmitir 802.11b, OFDM6 54 Mbps, POUT=+16 dbm 145 mA

Transmitir 802.11n, MCS77 POUT=+14 dbm 135 mA

Recibir 802.11 b, Tamaño de paquete =1024 byte, -80 dbm 60 mA

Recibir 802.11 g, Tamaño de paquete=1024 byte, -70 dbm 60 mA

Recibir 802.11n, Tamaño de paquete=1024 byte, -65 dbm 62 mA

Modem Dormido 15 mA

Sueño ligero 0.5 mA

Modo de ahorro de energía DTIM8 1 1.2 mA

Modo de ahorro de energía DTIM 2 0.9 mA

Sueño profundo (RTC) 10 uA

Apagado total 0.5 uA

4.3.4. PUERTOS DE COMUNICACIÓN.

Los puertos de comunicación que vienen integrados en el chip ESP8266EX para su uso son

los siguientes:

UART9:Las transferencias de datos desde y hacia las dos interfaces UART se pueden

implementar a través de hardware. La velocidad de transmisión de datos a través de UART

4DSSS: Espectro ensanchado por secuencia directa (Direct Sequence Spread Spectrum), conocido en

comunicaciones móviles como DS-CDMA (acceso múltiple por división de código en secuencia directa), es

uno de los métodos de codificación de canal (previa a la modulación) en espectro ensanchado para

transmisión de señales digitales sobre ondas electromagnéticas que más se utiliza. 5 CCK: Código complementario Keyinges una modulación utilizada con redes inalámbricas (WLAN) que se

emplean en el IEEE 802.11b. En 1999, se adoptó la CCK para complementar el código Barker en las redes

digitales inalámbricas para lograr mayor velocidad de datos de 2 Mbit/s,a expensas de distancias más cortas. 6OFDM: Multiplexación por División de Frecuencias Ortogonales (Orthogonal Frequency Division

Multiplexing), es una técnica de transmisión que consiste en la multiplexación de un conjunto de ondas

portadoras de diferentes frecuencias, donde cada una transporta información, la cual es modulada en QAM o

en PSK. 7MCS: Esquema de Modulación y Codificación (Modulation and Coding Scheme). El estándar 802.11n

define un total de 77 MCS. Cada MCS es una combinación de una modulación determinada (por ejemplo,

BPSK, QPSK, 64-QAM), la tasa de codificación (por ejemplo, 1/2, 3/4), el intervalo de guarda (800ns o

400ns) y el número de secuencias espaciales. Todos los puntos de acceso 802.11n deben soportar (como

mínimo) desde MCS0 hasta MCS15 y los clientes 802.11n desde MCS0 hasta MCS7. 8DTIM: Delivery Traffic Indication Message, es una indicación del tráfico de mensajes que informa a los

clientes sobre la presencia de buffer y/o datos del multicanal en el punto de acceso. Se genera dentro de la

almenara periódica (paquetes enviados por un punto de acceso para sincronizar la red inalámbrica) a una

frecuencia especificada por el DTIM.

48

puede alcanzar 115200 baudios (4.5Mbps). El puerto UART0 puede ser usado para

comunicación de otros dispositivos, este es compatible con el control de flujo. UART1

cuenta con una única señal de transmisión de datos (Tx), que se utiliza generalmente para la

grabación del registro. Por defecto, UART0 mostrará información almacenada en el buffer

cuando el dispositivo está encendido y se está iniciando. La velocidad de transmisión de la

información grabada está estrechamente relacionada con la frecuencia del oscilador de

cristal externo. Si la frecuencia del oscilador de cristal es de 40 MHz, entonces la velocidad

de transmisión es de 115.200 baudios; si la frecuencia del oscilador de cristal es de 26MHz,

entonces la velocidad de transmisión es de 74880 baudios. Si la información almacenada no

ejerce ninguna influencia en la funcionalidad del dispositivo, es mejor bloquear el

almacenamiento durante el periodo de cambio de encendido de los pines U0TXD, U0RXD

a MTDO, MTCK.

I2S10

: Hay disponible una interfaz de entrada y una de salida de datos I2S, esta se usa

principalmente en aplicaciones como la recopilación de datos, procesamiento y transmisión

de datos de audio, así como la entrada y salida de datos en serie. La funcionalidad I2S se

puede aprovechar mediante programación de software, los GPIOs que se utilizarán se

multiplexan.

I2C11

:ElESP8266EX posee 3 puertos I2C:Un maestro/esclavo de propósito general, un

esclavo SDIO/SPI, y un maestro/esclavo de propósito general HSPI. Las funciones de los

pines correspondientes se pueden implementar a través de hardware. Los puertos SPI

pueden ser activados a través de la programación de software. La frecuencia de reloj puede

alcanzar hasta un valor máximo de 80MHz, sin embargo, no existe una lista DMA (Direct

Memory Access) vinculada al SPI de propósito general y al HSPI, por lo que los gastos de

software son más grandes, y en consecuencia, la velocidad de transmisión de datos se verá

limitada por la velocidad de procesamiento de software.

4.3.5. MODO DE FUNCIONAMIENTO.

En la figura 4 se muestra la asignación de pines del módulo ESP8266-01. La configuración

es muy simple, siendo únicamente necesarios los pines de polarización y de comunicación

con el puerto UART.

9 UART: Transmisor-Receptor Asíncrono Universal (Universal Asynchronous Receiver-Transmitter), es el

dispositivo que controla los puertos y dispositivos serie. Comúnmente se encuentra integrado en la placa base

o en la tarjeta adaptadora del dispositivo. Las señales externas pueden ser de variada índole. Ejemplos de

estándares para señalización por voltaje son RS-232, RS-422 y RS-485. 10

I2S: Sound, Integrated Interchip Sound (también llamado Inter-IC o IIS) Es un estándar eléctrico de bus

serial usado para interconectar circuitos de audio digital.1 El bus I2S separa las señales de datos y de reloj, lo

que resulta en menores fluctuaciones de la señal que en sistemas que recuperan el reloj de la señal de datos. 11

I2C: Inter-Integrated Circuit, es un bus de datos serial desarrollado en 1982 por Philips Semiconductors

(hoy NXP). Se utiliza principalmente internamente para la comunicación entre diferentes partes de un

circuito, por ejemplo, entre un controlador y circuitos periféricos integrados. El sistema original fue

desarrollado por Philips a principios de 1980 con el fin de controlar varios chips en televisores de manera

sencilla.

49

El ESP8266-01 posee dos modos de operación principal determinados por el estado del pin

GPIO0:

Modo de operación normal: Inicia la ejecución ordinaria del Firmware que tiene

almacenada la Flash (GPIO0 en ALTO).

Modo de grabación de firmware: Dispone al módulo para recibir un nuevo Firmware que

se almacena en la memoria Flash (GPIO0 en BAJO).

Figura 4. Asignación de pines del ESP8266-01.

El cualquiera de los dos casos el pin CH_PD deberá estar en ALTO para mantener el chip

activo. CH_PD en BAJO coloca al módulo en modo de bajo consumo de energía.

4.3.6. ACTUALIZACIÓN DEL FIRMWARE

.

El firmware se carga desde el chip FLASH del módulo y la SRAM inicia las instrucciones

durante el arranque, a través de la interfaz SDIO12

. El firmware implementa la pila TCP/IP,

las funciones requeridas para cumplir el estándar 802.11 b/g/n/e/i, el protocolo MAC de

WLAN y la especificación directa de Wi-Fi. Admite operaciones de un conjunto de

servicios básicos (BSS) en virtud de la función de control distribuido (DCF), al igual que el

funcionamiento de servicios P2P compatible el protocolo WiFi P2P. Otras funciones de

protocolo de bajo nivel son manejadas automáticamente por el chip ESP8266EX como son:

• RTS/CTS

• Acuse de recibo (acknowledgement).

• Fragmentación y desfragmentación.

• Agregación.

• Marco de encapsulación (802.11h/RFC 1042)

• monitoreo/escaneo automático de baliza

• Wi-Fi directa P2P

12

SDIO: Interfaz de tarjeta Secure Digital, formato definido para tarjetas de memoria no volátil elaborado por

la Asociación de Tarjetas SD (SDA) para su uso en dispositivos portátiles.

50

La exploración pasiva o activa, así como el procedimiento de descubrimiento P2P se lleva a

cabo de forma autónoma una vez iniciados por el comando apropiado. La administración de

energía se maneja con interacción mínima del firmware para minimizar el período de

servicio activo.

Figura 5. ESP8266-01 en modo flash (GPIO0 en GND) conectado a un PC mediante un conversor USB a

serial.

La actualización del firmware es un paso previo necesario para lograr un mejor provecho de

las capacidades del módulo. Comercialmente los módulos vienen cargados con una versión

beta de capacidades muy limitadas, por lo que es necesario subir a la FLASH una versión

más reciente. Para este proyecto hemos trabajado con la versión 0.9.5 liberada el 25 de

diciembre de 2014.

Para actualizar el firmware del ESP8266-01 se realiza en los siguientes pasos:

1. Descargar del software ESP8266-Flasher13

.

2. Se descarga la versión del firmware para comandos AT (versión 0.9.5).

3. Colocar el esp8266 en modo flash con el GPIO0 en BAJO (figura 5).

4. Abrir el software ESP8266-Flasher, hacer clic en Bin y seleccionar el archivo del

firmware descargado, seleccionar luego el número de puerto COM utilizado por la

PC. (figura 6 a).

5. Pulsar el botón Download. El software primeramente borra el antiguo firmware y

después escribirá el nuevo (figura 6 b).

Figura 6. Escritura del nuevo firmware del ESP8266-01. a) Selección del archivo y el puerto de

comunicación.

13

Se usó el flasher disponible en http://esp8266.ru/downloads/esp8266-firmware/#wpfb-cat-2

51

Figura 6. Escritura del nuevo firmware del ESP8266-01. b) Proceso de grabación concluido.

4.3.7 COMANDOS AT PARA EL ESP8266.

Los comandos AT14

son una serie de instrucciones codificadas que conforman un lenguaje

de comunicación entre un usuario y un terminal modem. El método de comunicación que

suministra el firmware del ESP8266 consiste en un set de comandos AT específico para

poder acceder a las funcionalidades propias del módulo. Esta comunicación se basa en un

procedimiento de petición-respuesta/error donde toda petición se antecede con la

combinación “AT” (en mayúsculas) de la siguiente manera:

AT+COMANDO<CR>

El símbolo más (+) separa el encabezado de la petición del comando específico. En la

actualidad casi la totalidad de comandos para módems y otras terminales se escriben en

Mayúsculas. Al final se pone una etiqueta de terminación que corresponde a un retorno de

carro (CR, ASCII número 13). Una vez la terminal ha interpretado la petición, esta

responderá de acuerdo al comando suministrado:

<CR><LF>RESPUESTA AL COMANDO<CR><LF>

La respuesta viene enmarcada entre dos caracteres que indican el inicio y fin de la

secuencia, un retorno de carro y un salto de línea (LF, ASCII número 10). En caso que la

petición no se encuentre en el set de comandos o presente algún problema en la sintaxis, la

terminal responderá con la palabra ERROR:

14

El conjunto de comandos Hayes es un lenguaje desarrollado originalmente en 1977 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.

52

<CR><LF>ERROR<CR><LF>

Espressif publica periódicamente actualizaciones del set de comandos AT conforme a las

nuevas versiones de firmware disponibles. Para ver el listado completo de comandos se

puede consultar en la página del fabricante15

.

4.3.7.1. COMANDOS UTILIZADOS.

A continuación se listan y explican las funciones que se han usado para la implementación

específica de este proyecto:

4.3.7.1.1. Comandos básicos:

AT+RST: Reinicio del módulo. Al ejecutarse este comando la rutina principal del firmware

se reinicia restableciendo todos los procedimientos a su estado inicial. Es equivalente a

efectuar un RESET por hardware (llevando el pin RST del ESP8266-01 a un nivel BAJO).

Al iniciar el procedimiento de reinicio retorna "OK" por la terminal. Para la versión 0.9.5,

el fin del cargue del firmware se indica con la palabra "ready" (minúscula) momento en el

cual la terminal está en espera de nuevos comandos AT.

AT+GSLP=<tiempo>: Coloca al módulo en el modo de sueño profundo (consumo de

corriente de 10 µA). <tiempo> es el periodo de espera en milisegundos antes de iniciar el

procedimiento de apagado. Retorna el valor de tiempo establecido seguido de un "OK."

Para despertar el módulo es necesario efectuar un RESET por hardware.

4.3.7.1.2. Comandos de Wi-Fi.

AT+CWMODE=<modo>: Establece la operación Wi-Fi del módulo en alguno de los

siguientes modos (establecidos en <modo>):1: modo estación,2: modo AP, 3:modo

Estación y AP combinados. Retorna "OK" por la terminal luego de establecido el modo.

AT+CWJAP=<ssid>,<pwd>: Establece el punto de acceso (AP) al que se conectará el

dispositivo. Parámetros:

<ssid>: Cadena de caracteres correspondiente al SSID al cual se conecta.

<pwd>: Cadena de máximo 64 bytes correspondiente a la contraseña de la red.

Una vez ejecutado retorna "OK" si la conexión es exitosa o "ERROR" en caso de que

fallase la conexión.

AT+CWLAP: Lista los puntos de acceso disponibles en el entorno del dispositivo. La

respuesta posee la siguiente estructura:

15

Listado disponible en http://www.espressif.com/sites/default/files/4b-

esp8266_at_command_examples_en_v1.3.pdf

53

+CWLAP: <ecn>,<ssid>,<rssi>,<mac>

donde:

<ecn>: Corresponde al tipo de encriptación de red.

0 OPEN, 1 WEP, 2 WPA_PSK, 3 WPA2_PSK,4 WPA_WPA2_PSK

<SSID>: Cadena de caracteres correspondiente al nombre de la red

<RSSI>: Cadena de caracteres correspondiente a la Intensidad de la señal

<MAC>: Cadena de caracteres correspondiente a la dirección MAC del AP

Al final del listado muestra "OK" o "ERROR" en caso de presentarse algún problema en la

búsqueda.

4.3.7.1.3. Comandos TCP IP.

AT+CIPMUX=<modo>: Establece múltiples conexiones. <modo> determina el tipo de

conexión ( 0 Conexión simple,1 Múltiples conexiones). El comando devuelve "OK" si el

parámetro se ha establecido, retorna "Link is builded" si ya se encuentra conectado. Este

modo sólo se puede cambiar después de que todas las conexiones están desconectadas. Si

ya se ha iniciado el servidor, será necesario reiniciar el sistema.

AT+CIPMODE=<modo>: Establece el modo de transferencia de datos. <modo> indica:

0: Modo normal, se debe establecer siempre la longitud del tamaño de los paquetes

enviados.

1: Modo de transmisión inconcluso, no se establece el tamaño de los paquetes

enviados

AT+CIPSEND: Configura la longitud de los datos que serán enviados por el puerto TCP o

UDP.

1) Para la conexión individual (previo AT+CIPMUX=0): AT+CIPSEND=<longitud>

2) Para la conexión múltiple (previo (AT+CIPMUX=1)):

AT+CIPSEND=<id>,<longitud>

3) para la conexión con envío de datos de longitud inconclusa (o permanente):

AT+CIPSEND

Donde:

<id>: Es el número de Id de la conexión por la cual se hace la transmisión

<longitud>: Número de caracteres que se enviarán, el ESP8266 soporta un envío

simultáneo máximo de 2048 bytes por paquete.

Tras la ejecución del comando, la terminal retorna el caracter de envoltura (wrap) ">" a

continuación se escriben los datos de la serie. Cuando se cumpla la longitud de los datos

establecida, se inicia la transmisión. Si se ha establecido en envío inconcluso, después de

ejecutar el comando entra en la transmisión permanente, se efectuará el envío de cada

paquete en un intervalo de 20ms a un tamaño máximo de 2048 bytes por paquete. Cuando

se coloca en la terminal un paquete que contiene únicamente la combinación "+++", se

54

vuelve al modo de comando. Este comando sólo se puede utilizar en el modo de

transmisión inconclusa donde se requiere que sea el único modo de conexión. Si no se

puede establecer conexión o se desconecta durante el envío, devuelve "ERROR" Si los

datos se transmiten con éxito, devuelve ""SEND OK"

AT+CIPCLOSE: Cierra una conexión de tipo TCP o UDP. Cuando existen múltiples

conexiones esta se debe establecer como AT+CIPCLOSE=<id>, donde <id> es el número

de la conexión a cerrar. Cuando id=5, se cierran todas las conexiones (El ESP8266 sólo

puede manejar 4 conexiones simultaneas en modo AP).

AT+CIFSR: Obtiene la dirección IP local. La respuesta posee la siguiente estructura:

+CIFSR:<dirección IP 1>: donde dirección IP 1 corresponde a la IP en modo AP.

+CIFSR:<dirección IP 2>: donde dirección IP 2 corresponde a la IP en modo

estación.

Al final de la respuesta devuelve "OK" o "ERROR" de presentarse alguna inconsistencia.

AT+CIPSERVER=<modo>,[<puerto>]: Configura un servidor TCP.

<modo>: Acción a efectuar en el servidor.

0 Eliminar el servidor (a continuación se debe reiniciar el módulo).

1 Crear servidor.

<puerto>: Número de puerto. Si no se establece, por defecto será el puerto 333.

Retorna "OK" una vez se ha efectuado la operación.

4.4. CONCLUSIONES.

Al utilizar el ESP8266-01 se encuentran ventajas como su fácil uso, gran cantidad de

información y material de ayuda en la web, pero especialmente el ser muy económico.

Entre las desventajas del ESP8266-01 se encuentran que en modo AP, para asociar el

dispositivo con el router, se presentan inconvenientes de conexión al tratar de comunicarse

desde la página web al dispositivo dado el tratamiento limitado que tiene de los paquetes

enviados hacia el usuario. La versión del firmware instalada es la 0.9.5 que permite el

control mediante comandos AT conectando un MCU externo. El consumo de energía en

transmisión del ESP8266 es importante por lo que es necesaria una fuente que proporcione

unos 250mA como mínimo. Además si se le agregan los componentes pasivos y activos

de los dispositivos externos como MCU, chips de medición, sensores la fuente tendría que

proporcionar unos 400mA con un voltaje de alimentación que no exceda los 3.6 v.

55

5. INTEGRACIÓN DE ELEMENTOS Y ELABORACIÓN DE OBJETOS IoT.

5.1. ESQUEMA GENERAL.

En la figura 1 se muestra el esquema general de los objetos IoT propuestos. Los bloques

identifican cada uno de los componentes principales del dispositivo (sea para medición de

consumo de energía eléctrica o de agua). Los componentes principales de los dispositivos

de medición son los siguientes:

Dispositivo de conexión de red: Es el módulo encargado establecer las conexiones de red

inalámbricas a través de Wi-Fi, así como de hacer el envío y recepción de datos.

Corresponde al módulo ESP8266-01 el cual se ha detallado en el capítulo 4. La

comunicación a la terminal se efectúa a través de un puerto compatible con UART

configurado a una velocidad de 115200 baudios (la más alta soportada por el ESP8266).

Dispositivo sensor de variables: Es el encargado de hacer las mediciones de las variables

de interés en cada uno de los dispositivos. Para el caso del dispositivo de medición de agua

corresponde a un contador con sensor de efecto Hall de media pulgada para tuberías de uso

doméstico, este genera un tren de pulsos equivalente al flujo pasante de agua en un

intervalo de tiempo (Sección 2.1). Los pulsos son contabilizados determinando las

variaciones de voltaje en una entrada del microcontrolador conectada a la salida del sensor

de efecto hall, internamente un timer evalúa el estado de dicha entrada cada milisegundo.

Figura 1. Esquema de bloques del dispositivo de medición.

Para el caso de la medición de parámetros eléctricos, el dispositivo sensor de variables es el

circuito integrado ADE7753 el cual tiene la capacidad de hacer la medición de los

56

parámetros eléctricos de una línea monofásica. En el diseño efectuado se miden únicamente

los parámetros de voltaje RMS, corriente RMS y potencia real. A partir de estos datos se

obtiene una medición básica de la energía eléctrica que es consumida por la carga

conectada al objeto IoT. La conexión entre el ADE7753 y el microcontrolador se efectúa

mediante un puerto de comunicaciones SPI, los datos que se envían y se reciben dependen

de la estructura definida por el fabricante en la hoja de datos del dispositivo como se

encuentra descrita en el capítulo 3.

Microcontrolador: El componente central es el microcontrolador, quien efectúa todos los

procesos de control de la medición así como la transmisión y recepción de datos a través

del dispositivo de conexión inalámbrica. Para este proyecto se ha trabajado con dos

microcontroladores de la familia Coldfire V1 de Freescale (hoy NXP), el MCF51JM128-

VLH para el dispositivo de medición de parámetros eléctricos y el MCF51JM128-VLH

para el dispositivo de medición de consumo de agua.

Memoria: Se ha utilizado una pequeña memoria EEPROM 24LC512 la cual se comunica

con el microcontrolador a través de un puerto I2C. La memoria integrada a cada uno de los

objetos IoT cumple tres propósitos:

- Es la encargada de almacenar el código HTML que el servidor web local que utiliza

en el modo de configuración (AP).

- Almacena los parámetros de configuración necesarios para realizar la conexión a la

red.

- Guarda aquellos datos que son recopilados por los sensores pero que no pueden ser

enviados debido a algún evento de desconexión con lo cual se garantiza que la

medición no se pierde si el dispositivo no se encuentra conectado a la red o al

servidor por diversas circunstancias.

Pines de I/O: Cada uno de los dispositivos de medición cuenta con una serie de pines de

entrada y salida destinados a diversos propósitos, entre ellos efectuar la programación del

microcontrolador y de la memoria EEPROM, hacer monitoreo del comportamiento de la

comunicación entre los dispositivos en los modos de desarrollo, efectuar reset por hardware

al microcontrolador y al dispositivo de conexión de red, entre otros. El detalle de estas

conexiones depende de cada uno de los tipos de dispositivo (agua o eléctrico).

Fuente de energía: El sistema de obtención de energía para el funcionamiento del objeto

IoT es el que tiene más variaciones entre el dispositivo de medición de consumo de agua y

el energía eléctrica. Mientras que en el dispositivo de medición de agua la fuente de energía

es una batería de litio de 3.7 V, el dispositivo de medición eléctrico utiliza una pequeña

fuente conmutada, completamente aislada, con una salida de voltaje de 9 voltios capaz de

suministrar una corriente de hasta 450 mA (el consumo máximo del ESP8266 es de 250

mA). Dicha fuente se ha adquirido específicamente para este proyecto.

57

5.2. CARACTERÍSTICAS DEL MICROCONTROLADOR.

Los Microcontroladores seleccionados se han elegido por ser estos los que se conocían con

más detalle por ser usados en aplicaciones anteriores. Ambos Microcontroladores poseen en

un núcleo ColdFire V1 el cual está diseñado para aplicaciones de 32 bits, el núcleo V1 es

una versión simplificada del núcleo ColdFire V2. La familia MFC51 está pensada como un

“eslabón” entre los Microcontroladores de 8 bits y 32 bits de Freescale. El manejo de las

operaciones de byte (8 bits) y de palabra (16 bits) mantiene los modos de direccionamiento

y las definiciones de instrucciones de la arquitectura ColdFire. Al realizar las funciones de

multiplicar-acumular (MAC), incremento de acumulado (EMAC) y dividir (DIV), se

minimizar los costos en aplicaciones que no requieren un rendimiento de procesamiento

mejorado.

Los detalles de ambos Microcontroladores se encuentran detallados en la amplia

documentación que existe al respecto y en las hojas de datos de los mismos [38][39]. En la

tabla 1 se muestran los datos más relevantes de estos dispositivos para el presente proyecto.

Ambos Microcontroladores poseen, entre otras características, suficientes puertos de

comunicación para realizar las diversas conexiones a los periféricos propios del objeto IoT,

bajo consumo de energía, velocidad de reloj de hasta 51 MHz. La programación se realizó

usando CodeWarrior que es la herramienta que brinda NXP para el desarrollo medio y

profesional de aplicaciones sobre sus Microcontroladores.

Tabla 1. Características generales de los Microcontroladores usados en el proyecto

Características MCF51JM128 MCF51QE128

Núcleo V1 ColdFire V1 ColdFire

Voltaje 5v 3,3v

Corriente (máx) 100 mA 100 mA

Memoria Flash 128 KB 128 KB

RAM 16 KB 8 KB

I²C 2 2

SPI 2 2

canales ADC 12 20

SCI 2 2

PIN I/O 54 54

RGPIO 16 6

Encapsulado LQFP 64 LQFP 64

58

5.3. CARACTERÍSTICAS DE LA MEMORIA.

La memoria EEPROM usada en los objetos IoT propuestos es la conocida 24LC512 de

Microchip. Esta memoria usa un puerto I2C para la comunicación con el dispositivo y 4

pines de direccionamiento que permiten conectar hasta ocho dispositivos en el mismo bus.

Es capaz de operar a través de un rango de voltaje de 1,7 V a 5,5 V. Se caracteriza por su

bajo consumo (1 µA en reposo) ideal para aplicaciones en comunicaciones y adquisición de

datos. El paginado tiene una de capacidad de escritura de hasta 128 bytes de datos. Se

pueden almacenar datos de formar secuencial o aleatoria hasta alcanzar su máxima

capacidad de 512 Kb. La velocidad de bus se puede establecer en diferentes velocidades de

reloj hasta un máximo de 400 KHz la cual es la usada en este proyecto. Los detalles de las

tramas de datos para la lectura/escritura se pueden ver en la hoja de datos del fabricante

[40].

Figura 2. Mapa de asignación de memoria de la EEPROM para los objetos IoT propuestos.

En la figura 2 se muestra el mapa de memoria de la EEPROM, esta segmentación es

necesaria para mantener ordenada la ubicación de los datos necesarios para la conexión a la

red y el almacenamiento de mediciones no enviadas. Cinco bloques completan las

funciones de la memoria de la siguiente manera:

59

Inicio: Es la dirección 0x0000 de la memoria que es usada como un check-point para la

lectura escritura de le EEPROM.

Configuración de dispositivo: Almacena los datos necesarios para la conexión a la red Wi-

Fi y el servidor de datos.

Almacenamiento local de medición: Los datos de la medición actual se almacenan

temporalmente en esta sección de la EEPROM. En caso de que los datos no puedan ser

enviados hacía el servidor, si la pérdida de conexión es definitiva, se crea un registro de

evento acumulado a partir de estos datos que se almacena en el bloque de memoria

designado para ello.

HTML local de Access Point: Este bloque está destinado para almacenar el código que se

ejecuta cuando el objeto IoT se encuentra en el modo de configuración de red. El ESP8266

se comparta como un punto de acceso de red con un servidor local en escucha del puerto

80. El código que se envía desde HTTP al recibir solicitudes de cliente está almacenado en

este segmento.

Almacenamiento de eventos: Este segmento de memoria está destinado a almacenar los

eventos de consumo que no se puedan enviar al servidor en caso de presentarse algún fallo

en la cadena de conexión al servidor (fallo del Websocket, del servidor, del acceso de red,

entre otros). Estos se denominarán en adelante registros sin indexar a la base de datos o

abreviadamente RSI

5.4. INTEGRACIÓN DE ELEMENTOS DEL HARDWARE.

5.4.1 DISPOSITIVO DE MEDICIÓN DE CONSUMO DE AGUA.

El objeto IoT propuesto para la medición consumo de agua es un módulo de dimensiones

6x5.5x4 cms (Este espacio comprende el tamaño del sensor 6x3.5x3.5 cms y la caja

protectora de la electrónica 6x2x4 cms), este se debe acoplar a la tubería de la llave o

dispositivo a censar (tubería de ½ pulgada), El dispositivo contiene cada uno de los

componentes descritos en la sección 5.1. La figura 3 corresponde al plano de circuito del

dispositivo sin incluir la batería. Los elementos que completan el circuito incluyen los

jumpers de configuración, el interruptor para establecer el modo normal/AP, el puerto

BDM para la programación del microcontrolador, el socket para las conexión del sensor de

efecto Hall, capacitores para filtrar espurios de alta frecuencia y divisores resistivos para los

acoples de los puertos I2C y Serie necesarios para las configuraciones previas a la

operación normal.

60

Figura 3. Plano del circuito del dispositivo de medición de consumo de agua.

5.4.2 DISPOSITIVO DE MEDICIÓN DE CONSUMO DE ENERGÍA ELÉCTRICA.

El objeto IoT propuesto para la medición de parámetros de consumo eléctrico es un módulo

de dimensiones 10x4.5x4.5 cms, este se conectará en una terminal eléctrica monofásica

haciendo un “puente” entre la toma y el electrodoméstico a conectar, semejante a cómo se

conectan dispositivos como los protectores de voltaje, de los cuales se ha tomado la carcasa

protectora de un modelo para poder efectuar las pruebas y evitar el contacto con la

electrónica. El dispositivo contiene cada uno de los componentes descritos en la sección

5.1. La figura 4 corresponde al plano de circuito del dispositivo sin incluir la fuente

conmutada. Los valores resistivos para la medición de voltaje y corriente se definieron en

las secciones 3.6.2.1 y 3.6.2.2 Los elementos que completan el circuito incluyen los

jumpers de configuración, el interruptor para establecer el modo normal/AP, el puerto

BDM para la programación del microcontrolador, los socket para las conexiones de las

terminales AC, un par de LEDs para indicar el estado de la operación, un pulsador para

activar/ desactivar la carga (ON/OFF), capacitores para filtrar espurios de alta frecuencia y

divisores resistivos para los acoples de los puertos I2C y UART.

61

62

5.4.2.1. Acople de tierras del circuito de medición eléctrico.

Uno de los puntos más relevantes en la elaboración del circuito de medición de energía

eléctrica es el acople de la tierra digital del circuito de control y medición con la tierra de la

línea AC (neutro, de verde en la figura 5). Dado que la medición de voltaje se efectúa a

través de un divisor resistivo directamente conectado a la línea AC (R1 y R2) existe un

punto de referencia común entre la línea AC y el circuito en DC. En necesario hacer

consideraciones en varias etapas del circuito para efectuar este acople de manera correcta.

La fuente de alimentación usa un circuito conmutado para hacer la transmisión de energía

desde la parte caliente (AC) hacía la parte fría de la misma (bloque 1), comúnmente un

circuito de realimentación existe entre ambas partes, integrando algunos elementos con

impedancias relativamente altas (optoacopladores, capacitores), sin embargo el diseño no

soporta una realimentación directa pues altera el conmutador. Al estar completamente

aisladas ambas etapas se evita dicho problema, a cambio el voltaje de salida puede tener

fluctuaciones mayores a las de un circuito conmutado con realimentación completa por lo

que es necesario incluir reguladores de voltaje (bloques 2 y 3) para estabilizar los valores

de voltaje DC requeridos para la alimentación del circuito digital.

El sensor de corriente ACS714 (bloque 6) posee una alimentación DC y se encuentra

acoplado a la línea AC a través de los pines para la circulación del campo eléctrico para el

sensor de efecto hall, la tierra digital debe presentar un potencial cero respecto a los pines

de medición de AC ya que de otro modo el circuito podría destruirse (el circuito está

diseñado para aislar voltajes DC de hasta 5000 V pero no voltajes en AC) de modo que el

sensor debe ubicarse en serie con el neutro del sistema AC. Una condición semejante se

presenta con el circuito de disparo de la carga (bloque 7) el cual debe igualmente estar

referenciado al mismo nodo neutro. El ADE7753 y el microcontrolador reciben las señales

analógicas de la medición de voltaje y corriente (nodo azul y rojo), por lo que el nodo que

conecta ambas referencias (bloque 9) debe estar correctamente conectado al nodo neutro de

AC. Esta conexión implica que no existe aislamiento eléctrico entre las etapas digitales y le

línea, por lo que es fundamental que toda la electrónica esté debidamente protegida dentro

de una coraza de materia aislante a fin de evitar descargas eléctricas peligrosas para las

personas y el circuito en sí.

Figura 5. Esquema en bloques del circuito de medición de parámetros eléctricos (1: Circuito de conmutación

de la fuente, 2: Regulador de 3.3 V, 3: Regulador de 5V, 4: ESP8266, 5: Circuito digital de medición y

control, 6: Sensor de corriente ACS714, 7: Circuito de disparo de la carga, 8: Carga AC, 9: Acople de tierras).

63

5.5. PROGRAMACION: MODOS DE OPERACIÓN.

Los modos de operación son el resultado de la ejecución del firmware propio del objeto IoT

el cual se ha diseñado para dar utilidad al dispositivo, y que se encuentra segmentado de

acuerdo a los bloques componentes en: Programación del microcontrolador, programación

firmware del dispositivo ESP8266, y el código HTML del servidor local en el modo AP.

Figura 6. Flujo que establece el modo de operación del dispositivo.

Cada objeto IoT posee cuatro modos de operación de acuerdo a los procedimientos que se

deben efectuar para la configuración y la puesta a punto (figura 6). Al encenderse el

dispositivo lo primero que hace es evaluar los pines de entrada y salida que determinan el

modo de operación (jumpers de las figuras 3 y 4), una vez determinado se inicia la rutina

dedicada a cada función particular:

Grabar firmware: Este modo se establece mediante un jumper incluido en la placa PCB. El

ESP8266 contiene internamente un firmware el cual debe ser actualizado a una versión

posterior a la que viene de fábrica (sección 4.3.6) por lo que este proceso es indispensable

para poner a punto la operación de los comandos AT que se han usado en esta

implementación. Existen versiones posteriores del firmware del fabricante, así como

versiones desarrolladas de forma independiente por grupos de aficionados e ingenieros en

la plataforma LUA16

, por lo cual se deja abierta la posibilidad de hacer implementaciones

basadas en estos desarrollos aprovechando el mismo hardware que se ha diseñado para este

proyecto. En este modo, el puerto serial del microcontrolador que se encuentra conectado al

ESP8266 se deshabilita, mediante un jumper se conectan el Rx y el Tx del ESP8266 a un

Tx y Rx externos conectados a un circuito que convierta las señales UART al estándar

RS232 o USB (por ejemplo el FT232) para comunicarlas de este modo a un PC quien

enviará los datos del nuevo firmware que se alojará en la EEPROM que trae la placa

ESP8266-01.

Grabar memoria EEPROM: Otra tarea indispensable para la puesta a punto del dispositivo

es almacenar en la memoria EEPROM los datos del código HTML para el servidor local,

así como los parámetros iniciales para la configuración de red. Para grabar un nuevo bloque

16

Lua es un lenguaje de programación ligero multi-plataforma para sistemas embebidos, está escrito en ANSI

C y tiene una API simple igualmente escrita en lenguaje C.

64

de código HTML en la memoria es necesario colocar el dispositivo en este modo mediante

un jumper. Al reiniciar el dispositivo y encontrar que el jumper se encuentra establecido, el

microcontrolador inicia una rutina en la cual espera un saludo inicial proveniente desde el

puerto serial destinado específicamente para este propósito. Como antes, a este puerto se

debe conectar de forma externa a un circuito que convierta la señal serial en RS232 o USB

para conectarlas seguidamente a un PC como se muestra en la figura 7. El saludo inicial y

la posterior transmisión de datos se efectúan a través de la aplicación llamada “quemador

de memorias EEPROM” que se ha diseñado específicamente para esta tarea y de la cual se

muestran detalles en la sección 9.4.

Figura 7. Esquema de conexión para el quemador de EEPROM.

Modo AP (Access Point): Este modo se usa para realizar la configuración necesaria para

conectar un nuevo objeto IoT a la red Wi-Fi del lugar en el cual se va instalar el mismo. El

ESP8266 brinda la posibilidad de acceder a éste como si fuese un punto de acceso de red

(AP). Se aprovechó esta característica para crear un mini-servidor local que brinde la

posibilidad de configurar los parámetros de operación normal de la red (SSID, contraseña,

IP de servidor, entre otras) que son indispensables para el funcionamiento del dispositivo.

El PCB posee un interruptor en el cual se puede establecer el modo AP. Al reiniciarse el

dispositivo y encontrarse en AP (con cada jumper de los estados anteriores en posición de

reposo) el microcontrolador inicia la rutina del modo de punto de acceso. Un dispositivo

cliente (teléfono celular, PDA, tablet, PC, entre otros) se conecta a la red Wi-Fi creada por

el ESP8266 y usando un navegador web se accede al servidor local digitando la dirección

IP 192.168.4.1 (que es la que trae por defecto este dispositivo) o la que haya sido

configurada previamente en el firmware. El microcontrolador lleva a cabo un análisis de los

datos que ingresan por el puerto desde el dispositivo ESP8266 y controla el flujo de los

datos. Para salir de este modo se debe mover el interruptor que trae la placa a su posición

de operación normal.

Modo normal: Es aquella en la cual se han configurado todos los parámetros de conexión,

de modo que se garantiza el envío de datos de medición así como la recepción de avisos y

alertas desde el servidor web. Una vez verificado que el interruptor se encuentran modo

normal y que los jumpers de los anteriores modos de operación se encuentran en estado de

reposo, el microcontrolador inicia la rutina de estado normal. La aplicación utiliza los datos

almacenados en la memoria EEPROM para conectarse la red Wi-Fi local y establecer

seguidamente una conexión web al servidor que tiene asociado y a quien se le efectuará el

envío los datos de medición. En caso de no existir una configuración de conexión de red (es

decir que se ha omitido la configuración en modo AP) el dispositivo iniciará

65

automáticamente el modo AP; por el contrario, si la configuración existe pero no es posible

el acceso de red o el acceso al servidor, el dispositivo almacenará las mediciones de forma

local hasta el momento en que se restablezca la conexión y pueda hacer efectivo el envío de

datos.

Estado de error: El microcontrolador efectúa una serie de verificaciones previas al inicio

de cualquiera de los modos de operación, si se diera el caso de que no es posible el inicio de

ninguno de los modos de operación, el sistema entrará en un estado de error en el cual no

efectuará ninguna acción de conexión ni tomará ninguna medida de los parámetros en

espera de recibir un reset externo desde el interruptor destinado para ello. De presentarse

este estado de error puede que estén sucediendo problemas con el hardware (la memoria

EEPROM no funcione o no esté conectada, el ESP8266 se encuentre en mal estado o no

esté conectado, existan problemas en los puertos, entre otros).

5.5.1 SECUENCIA DE ARRANQUE DEL DISPOSITIVO.

La secuencia de arranque corresponde a los pasos que siempre efectuará el IC

microcontrolador antes de colocar el dispositivo en alguno de los modos establecidos, se

busca garantizar que la memoria y el dispositivo de comunicación funcionan

adecuadamente, igualmente que las funciones del microcontrolador se sincronicen con el

estado de la operación (figura 8):

Parámetros de arranque: Se han establecido una serie de valores iniciales que son

necesarios dentro de la programación del microcontrolador para el correcto funcionamiento

de cada uno de los módulos que se conectan a los componentes externos; los valores por

defecto tienen como propósito colocar al dispositivo en un estado que no genere conflictos

previo a la determinación del modo de operación, las condiciones principales son:

- No efectúa mediciones de parámetros.

- Coloca los valores de los contadores de tiempo a cero.

- Coloca los valores de los registros actuales de acumulación de eventos en cero.

- Habilita la comunicación con la memoria EEPROM para lectura y escritura.

- Deshabilita las funciones de recepción de datos desde Websocket

Reset a ESP8266: Seguidamente se efectúa un reset físico al ESP8266 mediante la

conexión que existe entre el pin RST del dispositivo y el pin del microcontrolador dedicado

para este propósito. El microcontrolador espera la respuesta de estado "ready” posterior al

reinicio del dispositivo de comunicación (ver comandos AT en sección 4.3.7.1.1). En caso

de no presentarse esta respuesta generará un nuevo reset hasta que el dispositivo responda.

Si después de un minuto de efectuar intentos de reinicio el ESP8266 no responde

adecuadamente, el objeto IoT entra en un estado de error.

66

Escribir dirección 0 en EEPROM: Para asegurar el correcto intercambio de datos con la

memoria EEPROM se hace un primer ciclo de escritura-lectura en el cual se coloca un dato

en el primer registro de la memoria y seguidamente se lee este mismo valor; con esto se

pretende verificar el correcto funcionamiento de la memoria. Si no fuera posible grabar este

primer registro, se infiere que existe algún problema en la comunicación con la memoria y

el objeto IoT se pone en un estado de error.

Leer parámetros de EEPROM: El microcontrolador lee el bloque de la memoria

correspondiente a la configuración del dispositivo y coloca estos datos en las variables

globales de la RAM.

Pines EEPROM y AP: El microcontrolador lee el estado del pin de entrada del modo

EEPROM, si está en BAJO inicia la rutina de grabación de EEPROM y si no, confirmará si

los datos de configuración de acceso de red (SSID y contraseña) se encuentran

diligenciados, si no, ingresa en modo de punto de acceso (AP).

Modo normal: Si los datos de conexión de red están diligenciados y el jumper de AP está

inactivo, el microcontrolador inicia el ciclo de trabajo normal que depende del tipo de

objeto como se describe más adelante.

Figura 8. Flujo de selección del estado de operación de los objetos IoT diseñados.

A continuación se describen en detalle los tres modos de operación principales.

67

5.5.2 GRABADOR EEPROM.

El modo de grabado de EEPROM tiene como fin establecer los parámetros iniciales de la

memoria necesarios para el correcto funcionamiento del objeto IoT, por lo tanto

corresponde a un “ajuste de fábrica” que se debe hacer una vez se encuentren ensamblados

todos los componentes electrónicos del dispositivo. Para efectuar la grabación de la

memoria se debe primero efectuar la grabación del programa del microcontrolador a partir

del puerto BDM del mismo, seguidamente se establece a través del jumper del proceso que

el microcontrolador debe iniciar en modo de grabador de memorias; se debe conectar un

conversor serial a RS232 o USB que conecte el objeto a un PC para poder efectuar la

grabación de los datos.

Figura 9. Flujo del proceso de grabación de EEPROM para los objetos IoT diseñados.

El grabador de memorias EEPROM diseñado permite la búsqueda de un archivo que es el

que se almacena en la memoria, para el caso corresponde al archivo HTML del servidor

local. Se selecciona el archivo correspondiente y además se establece la dirección de inicio

a partir de la cual se iniciará la escritura en la memoria. Al abrir el puerto e iniciar la

grabación (figura 9), el programa envía un paquete de datos en forma de saludo hacia el

microcontrolador, este se encontrará esperando dicho saludo (paso=1) seguidamente la

información de la dirección inicial de memoria y el tamaño del archivo a grabar son

enviados (paso=2), luego se inicia la secuencia grabación. Desde el PC se envían las tramas

correspondientes a los datos a grabar las cuales recibe el microcontrolador a través del

puerto serie y se envían como paquetes de datos por el puerto I2C hacia la memoria. Una

vez grabados, el microcontrolador envía una cadena de caracteres “OK” hacia el PC

indicando que se ha hecho la grabación y está listo para recibir el siguiente paquete.

68

Si el último paquete almacenado en la memoria corresponde al último paquete del archivo a

almacenar, el microcontrolador inicia la parte final de la grabación (paso=3), en esta se

efectúa un reset a los datos de configuración del bloque de la memoria EEPROM destinada

almacenar estos. Seguidamente envía una cadena de caracteres “FIN” hacia el PC

indicando que se ha completado el proceso de grabación. En caso de presentarse un error en

el proceso de grabación el microcontrolador envía una cadena de caracteres “ERROR”

hacia el PC, la aplicación detendrá entonces el proceso de grabación.

5.5.3 MODO AP (ACCESS POINT).

En este modo el dispositivo no se conecta a una red, sino que se comporta como un punto

de red al cual es posible conectarse mediante una conexión Wi-Fi. El ESP8266 trae

configurada una dirección IP por defecto para el modo servidor (192.168.4.1, esta puede ser

modificada alterando el firmware). Para que el dispositivo se ponga en modo AP es

necesario colocar el botón de estado en el modo servidor. El interruptor hará un reset al

dispositivo ESP8266 y al microcontrolador quien identificará que se ha iniciado en modo

AP (diagrama de flujo figura 10), se genera una consulta interna de los parámetros para

verificar que el modo AP se ha iniciado correctamente, seguidamente se habilitan las

conexiones simultáneas esto garantiza que el dispositivo responderá adecuadamente a las

peticiones que se le efectúen desde el dispositivo cliente; luego se inicia el servidor en el

puerto 80. El dispositivo ESP8266 queda en espera de la recepción de datos provenientes

desde el dispositivo cliente, que se conecta al punto de acceso del dispositivo mediante la

dirección IP preestablecida. Esta conexión es de tipo HTTP, por lo que la función del

microcontrolador que evalúa el puerto de conexión con el ESP8266 es esperar la recepción

de un encabezado HTTP, al detectarlo, interpreta la trama de datos que llega en el

encabezado y según su contenido determina el tipo de petición del cliente. El cliente puede

hacer cuatro tipos de peticiones:

Petición inicial de conexión (página de inicio): Al conectarse un cliente por primera vez al

servidor, el encabezado HTTP recibido posee únicamente la información propia del

dispositivo cliente. Al detectar el microcontrolador que no existe ninguna información

adicional, efectúa una lectura de la memoria EEPROM del bloque en el cual se encuentra el

código HTML del formulario del servidor local diseñado para el inicio de la sesión y envía

dicho código hacia el cliente a través del ESP8266 quien a su vez envía estos paquetes al

cliente web. En éste formulario el usuario debe validar un usuario y contraseña genéricos

para poder ingresar a la configuración del dispositivo de medición.

Petición de carga de datos (cargar formulario): Una vez el cliente se ha autenticado, el

encabezado HTTP incluye el valor de una cookie con dos variables correspondientes a la

autentificación de usuario y contraseña, cuando el microcontrolador encuentra dichos

valores en la petición del cliente, efectúa la lectura del bloque de la memoria EEPROM

donde se encuentra el formulario principal de los parámetros de conexión y el bloque donde

se encuentran los parámetros correspondientes a cada casilla del formulario, combina esta

69

información y genera un único código HTML el cual se envía al cliente a través del

ESP8266.

Figura 10. Flujo del modo AP para los objetos IoT diseñados.

Petición modificar datos (grabar): Cuando el encabezado HTTP del cliente incluye el

valor de una cookie que indica al microcontrolador que debe almacenar los datos que

vienen anexos dentro del encabezado, este efectúa una lectura de los datos incluidos en el

encabezado y que corresponden a los nuevos parámetros de configuración del objeto IoT.

Esta petición se lanza desde el cliente cuando en el formulario se pulsa el botón “grabar”

seguidamente el microcontrolador almacena estos parámetros en el bloque de memoria

correspondiente y carga nuevamente todo el código HTML del formulario indicando en una

de las variables que se ha efectuado la operación exitosamente, dicha variable ejecuta

código Javascript en el lado del cliente que coloca una ventana que informa que se han

almacenados los datos exitosamente (ver la sección 9.2).

Petición de redes disponibles: Cuando el encabezado HTTP del cliente incluye el valor de

una cookie que indica al microcontrolador que debe buscar el listado de las redes

disponibles, el microcontrolador envía un comando al ESP8266 para que éste haga la

búsqueda de redes disponibles quien devuelve el listado a través del puerto serie. El

microcontrolador recoge dichos datos anexándolos dentro del bloque de código HTML que

lee de la memoria EEPROM y los envía de vuelta al cliente.

Errores de petición: Es posible que se encuentren distintos errores en las peticiones,

típicamente, que el encabezado HTTP generado desde el cliente no sea compatible con la

estructura que se ha definido en el microcontrolador. Se ha elaborado una estructura lo más

sencilla posible omitiendo todos los parámetros que no sean necesarios, de forma tal de que

70

el servidor pueda responder a las peticiones de dispositivos de características disímiles; sin

embargo es posible que existan problemas en la recepción de acuerdo al tipo de dispositivo

que se está conectando. Sería necesario un desarrollo más sofisticado del servidor local para

responder adecuadamente ante una gran cantidad de dispositivos. Sin embargo, el ESP8266

no está diseñado para ser utilizado como servidor web de modo permanente y sus

prestaciones son limitadas (por ejemplo, el envío de paquetes por vez se limita a un total de

2046 bytes) lo que hace que sea poco eficiente. Para este proyecto es suficiente para

garantizar que se configuran los parámetros de conexión en el modo de operación normal,

que son los que interesan una vez el dispositivo está operativo.

5.5.4 MODO NORMAL

La operación normal se presenta una vez configurados correctamente todos los parámetros

necesarios para el inicio de los dispositivos y la conexión al servidor Node.js. En esta fase

se realizan y envían las mediciones de consumo y se reciben peticiones desde el servidor.

En adelante se hará uso de los siguientes términos para referirse a cada uno de las

características del proceso:

Aparato consumidor: Es el objeto real que se pretende medir, en el caso del consumo de

agua corresponderá al uso que se dé al final de la sección de tubería en donde se ha

instalado el sensor de efecto hall (Tabla 1 del capítulo 2), para los dispositivos de medición

de energía eléctrica será la carga que se acopla al sensor ADE7753 (Tabla 1 del capítulo 3).

Evento de consumo: Corresponde al intervalo de tiempo en el cual la medición del

consumo hecha por el objeto IoT sea distinta de cero (flujo en caso del agua, potencia en

caso de la medición eléctrica), éste corresponde al periodo en el cual permanece activo el

aparato consumidor. En los aparatos consumidores de agua el consumo se da en el

intervalo entre la apertura y el cierre de una llave o dispositivo regulador, comúnmente

durante breves periodos con múltiples repeticiones (grifos de lavaplatos, lavamanos,

cisternas, entre otros). Los electrodomésticos suelen tener eventos de consumo de periodos

mucho más prolongados (entre el encendido y el apagado del aparato), donde la duración

va desde minutos hasta llegar a ser permanentes. La medición por eventos puede resultar

útil para conocer en qué momentos o qué aparatos tienen mayor uso, además de reducir de

forma importante el tamaño de los datos a almacenar pues el consumo en tiempo real

(valores por segundo) es importante en la visualización en tiempo real, pero poco relevante

al efectuar el análisis de consumo acumulado, por lo que el elemento fundamental a

almacenar será el evento de consumo.

Evento acumulado: Corresponde al as mediciones efectuadas en el periodo en el cual el

objeto IoT no puede enviar paquetes desde el dispositivo hacia la base de datos a través de

la conexión Websocket-servidor. En dicho caso las mediciones se acumulan y se almacenan

en la EEPROM para ser envidas posteriormente.

71

Estado de reposo: Corresponde al intervalo de tiempo en el cual la medición de consumo

del aparato consumidor es cero. Comúnmente los aparatos consumidores de agua pasan la

mayor parte de su tiempo en un estado de reposo, por lo que es buena idea desconectar el

módulo de conexión de la red para ahorrar energía, máxime teniendo en cuenta que la

fuente de energía es una batería. Esta desconexión se hará cuando se complete un minuto en

estado de reposo. El sistema reiniciará la rutina de conexión al detectar un consumo mayor

que cero, es decir, el inicio de un nuevo evento de consumo.

Ciclo de medición: Es una sub-rutina dentro del modo normal que corresponde al bucle

donde permanecerá el dispositivo mientras se encuentra debidamente conectado y enviando

y recibiendo daros a través del socket (Figuras 12 y 13). En esta subrutina se hace en envío

de los datos de tiempo real (evento de consumo) y se gestionan, a parte de las

interrupciones propias de la programación del microcontrolador, las peticiones de la

operación del objeto IoT

Peticiones: El microcontrolador gestiona dos tipos de peticiones, por un lado están aquellas

que llegan desde la conexión del dispositivo inalámbrico ESP8266, en modo normal estos

corresponden a paquetes Websocket que contienen un número indicador de tramas

enviadas, este tiene como propósito controlar la ventana del flujo de datos que se envían al

servidor y determinar si se ha perdido algún paquete o incluso la conexión con el servidor,

de modo que si se llegara a perder la conexión con el servidor entraría en un estado de

medición sin envío de datos. La otra petición que es atendida es una interrupción que se

ejecuta cada segundo, momento en que se efectúa la medición de parámetros de consumo

para ser enviados al servidor. El sistema debe determinar si el consumo es mayor que cero,

en caso de ser así debe determinar si hay un evento activo o un nuevo evento, esta

identificación es importante para poder elaborar la estructura del paquete de datos que se

enviará al servidor. Por el contrario, si el consumo es cero, el sistema debe determinar si

anteriormente se encontraba en un evento activo, caso en el cual debe enviar al servidor un

paquete que indique el fin de un evento. En cualquiera de los casos la trama que se

estructura envía adjunto el valor del consumo medido.

El modo normal inicia con el reset al dispositivo ESP8266 seguido de establecimiento del

modo estación y la conexión a la red. Si no lograra la conexión el dispositivo continuará

intentando la conexión hasta que se establezca o supere un minuto intentando establecerla.

El dispositivo de medición de agua entrará en modo de bajo consumo al fracasar los

intentos de conexión y el consumo medido se convertirá en un evento acumulado(Bloque

dormir de la figura 11), el dispositivo de medición de energía continuará indefinidamente

haciendo intentos de conexión. Una vez conectado a la red intentará la conexión al servidor,

en caso de no lograrla intentará actualizar la hora del objeto IoT conectándose a uno de tres

servidores de hora que se han configurado para ello (IP: 216.228.192.69, 129.6.15.30,

131.107.13.100) estos servidores cumplen explícitamente la función de sincronismo de

hora en Internet (existe un gran número de ellos, un listado se puede hallar en la página

http://tf.nist.gov/tf-cgi/servers.cgi). Comúnmente se usa el protocolo NTP17

como método

para el sincronismo, sin embargo por simplicidad se ha optado por usar el protocolo NIST

17

NTP (Network Time Protocol): Es un protocolo para sincronizar los relojes a través del enrutamiento de

paquetes en redes con latencia variable. Utiliza UDP como capa de transporte, usando el puerto 123.

72

DAYTIME el cual usa el puerto TCP 13 y entrega un array de caracteres en formato

DATETIME que es el mismo que se usa para la configuración de hora en la programación

Javascript del servidor y en la base de datos. En caso de que la hora no lograra actualizarse

(algunos enrutadores son configurados por el ISP para bloquear los paquetes desde/hacia el

puerto 13) el tipo de dato del evento acumulado indicará que la hora del objeto IoT no está

actualizada.

Figura 11. Flujo del proceso de conexión y ajuste en el modo normal del objeto IoT.

Una vez efectuada la conexión al servidor se debe habilitar el envío permanente de datos

(comando AT+CIPSEND de la sección 4.3.7.1.3) para enviar el HTTP handshake previo al

establecimiento del Websocket (sección 6.2.1.1), si la negociación es exitosa se inicia el

Websocket, en caso de fracasar se deshabilita el envío permanente de datos a través de la

terminal del ESP8266 y se desconecta el servidor para hacer un nuevo intento de conexión.

Habilitado el Websocket lo primero que hace el objeto IoT es solicitar la hora del servidor,

en este caso ya no sincroniza con un servidor web de hora sino con el servidor de datos del

objeto, la petición se estructura como una trama Websocket como se muestra en la sección

5.6y cuya respuesta se explica en la sección 6.5.2. Si el registro RSI tiene datos sin enviar,

se estructura y envía una trama Websocket conteniendo el JSON del evento acumulado

pendiente de almacenar, en caso de no haber mediciones pendientes pasa directamente al

ciclo de medición y envío de tiempo real. Si el servidor fallase y no llegara la respuesta a la

recepción del evento acumulado esperará hasta recibir respuesta durante el intervalo

correspondiente a la ventana de tiempo del envío de datos de tiempo real, al finalizar ese

intervalo el objeto cierra el socket y se desconecta del servidor. Si se presentara un error del

servidor o de la conexión de la red (la terminal del ESP8266 devuelve un mensaje de error)

se reinicia todo el proceso de conexión del modo normal.

73

5.5.4.1 ciclo de medición de consumo de agua.

En el ciclo de medición el microcontrolador registra de forma permanente el valor del

voltaje de salida del sensor de efecto Hall (muestreo cada milisegundo), contabiliza la

cantidad de cambios del nivel que se suceden y que corresponden a los pulsos de medición

del sensor asociados a la cantidad de flujo de agua pasante como se estableció en la sección

2.5.2 (figura 12). Al completarse un segundo se genera un evento en el cual se suma ese

segundo en el reloj del objeto, si en este periodo el consumo es mayor que cero (conteo de

pulsos) se estructura una trama JSON que se envía por el socket. El tipo de dato de la trama

dependerá de si la medición previa era mayor que cero, en cuyo caso hay un evento de

consumo activo por lo que se debe indicar al servidor que agregue esa nueva medida al

último registro de eventos en la base de datos asociada al objeto IoT, en caso contrario se

está presentando un nuevo evento por lo que el tipo de dato del JSON debe indicar que se

agrega un nuevo registro de evento a la base de datos. Se debe tener presente que si el

objeto IoT no ha registrado eventos por más de un minuto el ESP8266 se encuentra en

mofo de bajo consumo, por lo que el dispositivo saldrá del ciclo de medición para iniciar la

rutuna de activación y conexión del dispositivo al servidor y la medición se enviará como

un evento acumulado.

Figura 12. Flujo del ciclo de medición de tiempo real del objeto IoT de medición de consumo de agua.

Si la medición del contador es cero y previamente el consumo era diferente de cero se debe

registrar el fin de un evento de consumo, si la medición actual y la anterior son cero se debe

verificar si el contador de tiempo de espera está activo, si es así el ESP8266 se encuentra

activo. Si no se ha registrado consumo después de un intervalo de tiempo determinado (60

segundos) se considera que el aparato consumidor de agua ha entrado en un estado de

reposo por lo que para ahorrar energía se procede a deshabilitar la conexión de red del

dispositivo ESP8266 y a ponerlo en un estado de sueño profundo. Esto implica la

desconexión de la red, por lo que los clientes web no tendrán datos de tiempo real del

objeto IoT hasta que no se genere un nuevo evento y aquel se active y conecte nuevamente

a la red.

74

5.5.4.2 ciclo de medición de parámetros eléctricos.

A diferencia de los aparatos consumidores de agua, los electrodomésticos suelen tener

eventos de consumo con periodos mucho más prolongados, un evento de consumo puede

durar desde minutos hasta llegar a ser permanente, de modo que no se presenta la

repetitividad de eventos de consumo del caso de la medición de agua. Es posible en todo

caso hacer seguimiento por eventos para la mayor parte de los electrodomésticos por lo que

el concepto se manejará del mismo modo que el caso anterior.

Figura 13. Flujo del ciclo de medición de tiempo real del objeto IoT de medición de consumo de energía

eléctrica

. El ciclo de medición de energía eléctrica es básicamente igual anterior (figura 13). El

dispositivo de medición eléctrica gestiona cuatro tipos de peticiones: aquellas que

provienen del servidor y que corresponden a la recepción de paquetes para controlar la

ventana de mensajes enviados (igual que en el caso del agua), la petición correspondiente a

la interrupción cada segundo donde el microcontrolador consulta al CI ADE7753 las

mediciones de corriente, voltaje y potencia para ser estructuradas en la cadena datos JSON

que se enviarán al servidor a través del Websocket. La tercera petición proviene del

servidor y tiene como propósito activar o desactivar el circuito interruptor de salida del

objeto IoT. La cuarta es la del pulsador que trae el circuito para activar o desactivar la carga

en caso de que el objeto IoT no presente conexión a la red. El sistema permanece a la

espera las peticiones y al recibirlas ejecuta las tareas de acuerdo a la naturaleza de cada

evento.

75

5.6. ESTRUCTURA DE DATOS ENVIADOS POR EL OBJETO IOT.

Cada objeto IoT enviará al servidor durante el ciclo de medición una serie de tramas

Websocket que contendrán un array de datos en formato JSON de la siguiente manera:

5.6.1 DATOS DE CONSUMO DE AGUA.

El dispositivo maneja dos tramas correspondientes a valores de consumo de evento

acumulado o de tiempo real. El array JSON de tiempo real es como el siguiente:

"𝒊𝒅": "𝒔𝒂_𝟎𝟎𝟏", "𝒔𝒆":𝟒𝟗, "𝒕𝒅":𝟏, "𝒄𝒐":𝟏𝟎𝟎, "𝒇𝒆": "𝟐𝟎𝟏𝟔 − 𝟎𝟓 − 𝟏𝟒𝑻𝟐𝟎:𝟒𝟕:𝟑𝟑"

Donde:

- “fe”: Fecha de la muestra, en formato DATETIME para insertar en MySQL.

- “se”: Número de secuencia de la trama.

- “co”: Valor de medición de consumo de agua del último segundo (número de

pulsos del sensor de efecto hall).

- “id”: Identificador único del objeto IoT y de su tabla correspondiente en la BD.

- “td”:Tipo de dato, brinda información sobre el tipo de dato contenido en la trama.

El array JSON de evento acumulado es como el siguiente:

"𝒊𝒅": "𝒔𝒂_𝟎𝟎𝟎𝟏", "𝒔𝒆":𝟒𝟗, "𝒕𝒅":𝟐𝟓𝟓, "𝒇𝒆": "𝟐𝟎𝟏𝟔 − 𝟎𝟓 − 𝟏𝟒𝑻𝟐𝟎:𝟒𝟕:𝟑𝟎", "𝒅𝒖𝒓": "𝟎.𝟎.𝟎.𝟏", "𝒕𝒑𝟏": "𝟎.𝟎.𝟎.𝟏", 𝒕𝒑𝟐": "𝟎.𝟎.𝟎.𝟓", 𝒕𝒑𝟑": "𝟎.𝟎.𝟎.𝟏", 𝒕𝒑𝟒": "𝟎.𝟎.𝟎.𝟎"

Donde:

- “id”: Identificador único del objeto IoT y de su tabla correspondiente en la BD.

- “se”: Número de secuencia de la trama.

- “td”:Tipo de dato, brinda información sobre el tipo de dato contenido en la trama.

- “fe”: Fecha de la muestra, en formato DATETIME para insertar en MySQL.

- “dur”:Duración del evento, corresponde a 4 bytes separados por punto de mayor a

menor:

- “tp1”:Suma valores correspondientes al segmento 1 de la linealización del sensor

de flujo de agua (ecuación 2 de la sección 2.5.2).

- “tp2”:Suma de valores correspondientes al segmento 2 de la linealización del

sensor de flujo de agua

- “tp3”:Suma de valores correspondientes al segmento 3 de la linealización del

sensor de flujo de agua

- “tp4”:Suma de valores correspondientes al segmento 4 de la linealización del

sensor de flujo de agua

Para recuperar el valor de la medición de consumo acumulada se debe calcular de la

siguiente manera teniendo siempre cuidado de que los valores vayan de mayor a menor

76

𝑣𝑎𝑙𝑜𝑟 = 𝑡𝑝0 ∗ 20 + 𝑡𝑝1 ∗ 28 + 𝑡𝑝2 ∗ 216 + 𝑡𝑝3 ∗ 224

Como ejemplo, para recuperar el valor de la trama “1.2.3.4”

5.6.2 DATOS DE CONSUMO DE ENERGÍA ELÉCTRICA.

El dispositivo maneja una trama correspondiente a valores de consumo de evento

acumulado o de tiempo real. El array JSON es como el siguiente:

"𝒊𝒅": "𝒔𝒆_𝟎𝟎𝟐", "𝒔𝒆":𝟒𝟗, "𝒕𝒅":𝟑𝟐, "𝒗𝒐": "𝟎𝒙𝟎𝟎𝟏𝟔𝑨𝑭𝑩𝟖", "𝒄𝒐": "𝟎𝒙𝟎𝟎𝟎𝟏𝟓𝟏𝑪𝑫", "𝒑𝒐" : "𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟐𝟗𝟎", "𝒔𝒘": "𝒐𝒏", "𝒇𝒆": "𝟐𝟎𝟏𝟔 − 𝟎𝟕 − 𝟐𝟖𝑻𝟎𝟔:𝟎𝟒:𝟒𝟖"

Donde:

- “id”: Identificador único del objeto IoT y de su tabla correspondiente en la BD.

- “se”: Número de secuencia de la trama.

- “td”: Tipo de dato, brinda información sobre el tipo de dato contenido en la trama.

- “vo”: Valor medido de voltaje RMS en el último segundo.

- “co”: Valor medido de corriente RMS en el último segundo.

- “po”: Valor medido de la potencia real en último segundo.

- “sw”: Indica el estado de activación de la carga (ON/OFF).

- “fe”: Fecha de la muestra, en formato DATETIME para insertar en MySQL.

Los valores de medición corresponden a cadenas de caracteres que se deben convertir en el

valor hexadecimal equivalente, dichos valores son los obtenidos en la lectura de registros

de AE7753 como se describe en la sección 3.6.3.

77

5.6.3 TIPO DE DATO.

El tipo de dato es la variable JSON que utilizan los objetos IoT propuestos para indicar al

servidor la naturaleza de la información contenida en la trama. Es un byte (valores de 0 a

255) donde cada bit cumple una función específica de configuración tal como se muestra en

la figura 14 (A, bit menos significativo). Con esta información se determina si la trama que

llega al servidor presenta:

- Hora actualizada: En caso de no estar actualizada el servidor tomará como hora

del consumo la hora de llegada del paquete al servidor.

- Hora de la trama es la del inicio de evento de la muestra actual: el servidor

ajustará la hora del evento de acuerdo a cómo la señala el objeto.

- Muestra de consumo de evento nuevo: En cuyo caso el servidor crea un nuevo

registro en la tabla de eventos de consumo del objeto IoT. En caso contrario

agregará el valor de consumo al último registro de la tabla.

- Tipo de registro: Determina si la trama JSON contiene la información de un

consumo acumulado o uno de tiempo real.

El servidor deberá leer este dato como primer paso para tomar acciones sobre la

información recibida como se describe en la sección 6.5.2.

Figura 14. Estructura de la variable “td” (tipo de dato).

78

5.6.4. CONTROL DE PAQUETES.

La rutina del ciclo de medición mantiene una lectura permanente del puerto de conexión

serie entre microcontrolador y el ESP8266, su tarea consiste la recepción de datos

provenientes del Websocket. Los mensajes de aceptación de paquetes de datos enviados

previamente al servidor o mensajes de error en caso de que la recepción por parte del

servidor web no fuera exitosa llegan de forma asíncrona, es posible que se presenten

pérdidas de datos por errores en la conexión, problemas con el formato de los datos o de las

tablas en la base de datos al intentar hacer inserción o modificación de los mismos de modo

que es necesario un método para corroborar la correcta recepción de tramas Websocket por

parte del servidor, para ello se ha implementado una simple ventana deslizante de mensajes.

Figura 15. Ventana deslizante para el control de paquetes de los objetos IoT.

En la figura 15 se muestra el funcionamiento de la ventana deslizante, a cada trama

Websocket que contiene un JSON corresponde una respuesta por parte del servidor de

acuerdo a la naturaleza de la solicitud. El envío habitual de paquetes deberá ser respondido

con el valor de la variable “se” (número de secuencia) que es el ACK del mensaje. En caso

de presentarse una desconexión abrupta del lado del servidor, por ejemplo, el objeto IoT no

tendría forma de saber si la misma sucedió, por lo que seguiría enviando paquetes

indefinidamente. Al llenarse la ventana, el ciclo de medición termina ya que no es posible

el envío de tramas y todos los valores enviados después del último ACK se convierten en

un evento acumulado. Todos los mensajes enviados desde el servidor hacia el objeto IoT

deberán contener una cadena de caracteres conde el mensaje debe iniciar con asterisco y

finalizar con espacio así: “*MENSAJE ” La función de lectura del microcontrolador sólo

dará como válido todo mensaje que provenga con esta estructura.

79

5.7 ENSAMBLE DE OBJETOS IOT

Para ensamblar los objetos IoT se diseñaron varios PCB en Egale correspondientes al

dispositivo de medición de agua y de energía eléctrica estos se muestran en la figura 16 y

17.

Figura 16. Montaje PCB del circuito de medición de Agua.

Figura 17. Montaje PCB del circuito de medición de energía eléctrica.

80

6. CONEXIÓN DE LOS OBJETOS IoT A LA WEB.

Como se indicó en el capítulo 1, los objetos IoT llevan asociados una identidad así como

atributos físicos y personalidades virtuales que se integran en la red. Una serie de

tecnologías son requeridas para poder crear la llamada identidad virtual de un objeto que

tiene la capacidad de conectarse a una red y compartir información, estas deben garantizar

la adecuada conexión, el almacenamiento y procesamiento de los datos así como la

interacción con otros dispositivos y las personas. Los requerimientos guardan muchas

semejanzas con la Internet actual, por lo que es posible hacer uso de las tecnologías

existentes, algunas de ellas desarrolladas recientemente y con atributos óptimos para la

elaboración y gestión de una IoT. Dentro de los requerimientos es necesario contar

fundamentalmente con:

- Almacenamiento de datos (Base de datos MySQL).

- Servicios que gestionen las conexiones de dispositivos y garanticen la comunicación

entre los mismos (Websocket).

- Servicios que gestionen la consulta y el procesamiento de los datos (Node,js).

- Aplicaciones a nivel de usuario que guarden suficiente flexibilidad para funcionar

en condiciones razonables en dispositivos de prestaciones (hardware) dispares

(Bootstrap).

Para el desarrollo de dichas herramientas en este proyecto se han seleccionado las

tecnologías puestas entre paréntesis en el listado y que se describen a continuación, estas

presentan unas características afines con las necesidades propias de un internet de los

objetos como se verá más adelante, motivo por el cual se han elegido. La última parte de

este capítulo está dedicada a mostrar las pruebas del servidor web en diferentes servidores

(local y web) donde ya se integran todos los elementos de hardware y software propuestos.

Figura 1. Diagrama entidad-relación de la base de datos necesaria para el almacenamiento de los datos de los

objetos IoT propuestos.

81

6.1. BASE DE DATOS.

El fundamento de la identidad virtual de un objeto IoT es la información sobre o

proveniente del mismo; las bases de datos definen la estructura para la gestión y

almacenamiento de dicha información. En la actualidad, a parte de los tradicionales

modelos relacionales, se encuentra en pleno desarrollo un grupo de sistemas de gestión de

datos basados en modelos no relacionales. Para este proyecto, dada la sencillez y extensión

de los datos almacenados, se ha optado por la elaboración de una base de datos relacional

simple como se describe a continuación. Es de tener presente que el propósito de este

trabajo no es elaborar una base de datos extensa sino demostrar la operatividad de los

objetos IoT propuestos.

6.1.1. MODELO RELACIONAL.

En la sección 5.5.4 se indicó en que el elemento fundamental de información de los datos

que entregan los objetos IoT es el evento de consumo. Cada evento se identificará con un

número único y tendrá los datos propios del consumo (fecha/hora de inicio del consumo,

duración en segundos, total de consumo [que depende del tipo de objeto], y total de

consumo acumulado [contador]). Cada evento de consumo es entregado por un único

objeto IoT (los objetos registrarán la n cantidad de eventos que se presenten a partir de su

activación). Cada objeto será identificado con un ID único el cual es almacenado en la

EEPROM y que no puede ser modificado por parte del usuario en el modo AP18

.

Figura 2. Esquema del modelo relacional de la base de datos para el almacenamiento de información de los

objetos IoT.

18

En el manual se verá que la opción se encuentra disponible, sin embargo no tiene efecto sobre la

programación actual.

82

Al activarse un objeto IoT y realizar con éxito el procedimiento de conexión en modo

normal, se verificará si su ID se encuentra asociado a algún usuario. Existirán objetos que

no tengan un usuario asociado cuando estos son nuevos y se conectan por primera vez al

servidor. Al ingresar un nuevo objeto se debe agregar su ID específico, un nombre de

objeto, el tipo (agua o eléctrico), y un valor que corresponde a la relación costo/consumo

asociado a su tipo de medición. En la figura 1 se muestra el diagrama entidad-relación

correspondiente.

La participación del evento del consumo en la relación sensa es total, es decir, un evento de

consumo no puede existir sin estar asociado a un objeto IoT, de igual manera, uno a varios

eventos de consumo están asociados a un mismo objeto, por lo que de acuerdo a las

condiciones de combinación de tablas es posible combinar la tabla Sensa con la tabla

Evento Consumo del modelo relacional obtenido a partir del diagrama entidad-relación

(figura 2). De forma semejante, ninguno a varios objetos IoT están asociados a un mismo

Usuario, en este caso no se cumple la condición para la combinación de tablas de forma

completa, sin embargo, por simplicidad es posible aun combinar la tabla Posee con la tabla

Objeto IoT de modo que el esquema relacional se simplifica al mostrado en la figura 3.

Figura 3. Esquema del modelo relacional simplificado de la base de para el almacenamiento de los datos de

los objetos IoT. (El campo “Código usuario” de la tabla Objeto IoT deberá diligenciarse como NULL cuando

se ingrese un nuevo registro a la tabla, equivalente a agregar un nuevo dispositivo a la red).

6.1.2. SISTEMA DE GESTIÓN.

El sistema de gestión de bases de datos seleccionado es MySQL el cual guarda

compatibilidad con la interfaz de aplicación del servidor Node.js. En este se ha creado la

base de datos con sus tablas correspondientes en diferentes aplicaciones según las

diferentes pruebas efectuadas en el proceso de desarrollo (Wampserver, phpmyadmin.co,

entre otros). Las consultas SQL efectuadas hacen parte de la aplicación del servidor y de la

interfaz de usuario.

83

6.2. WEBSOCKET.

HTTP es el protocolo más común y utilizado en el nivel de aplicación, por sus

características no fue diseñado para aplicaciones de tiempo real, ni para comunicación full

dúplex. A raíz de estas carencias se han elaborado varias técnicas para enviar notificaciones

en “tiempo real,” denominadas comet. Dicho término describe un modelo de aplicación

web en el que una petición HTTP que se mantiene abierta permite enviar datos a un cliente

mediante tecnología push, sin que el cliente lo solicite explícitamente [21] [22]. Estas

técnicas se agrupan en tres grupos: Ajax (Polling), Ajax Push (Long Poll) y Ajax Push

(Streaming). Estas soluciones comparten varios problemas, principalmente el exceso de

peticiones HTTP, por lo que no son aptas para aplicaciones de tiempo real de baja latencia.

En la comunicación full dúplex usan dos conexiones: una para enviar (downstream) y otra

para recibir (upstream), por lo que el mantenimiento y la coordinación de estas dos

conexiones introduce una sobrecarga significativa en términos de consumo de recursos y

añade mucha complejidad algorítmica. Otras técnicas en tiempo real implican el uso de

herramientas más sofisticadas como aplicaciones Flash, solicitudes XHR de varias partes y

los denominados html-files [21].

Websocket19

se define como una tecnología que proporciona un canal de comunicación

bidireccional y full-dúplex sobre un único socket TCP entre el cliente y el servidor web

[24], donde cada parte puede, sin dependencia de la otra, enviar mensajes a voluntad sin

generar colisión. Websocket es un protocolo en la capa de aplicación que utiliza el puerto

80 para las conexiones regulares y el puerto 443 para las conexiones seguras TLS20

. La API

de Websocket está siendo normalizada por el W3C [23], mientras que el protocolo

Websocket ya fue normalizado por la IETF con el RFC 6455 en la versión 13 [24].

Websocket pretende suprimir muchos de los problemas de las conexiones comet antes

mencionadas mediante un protocolo simple en el nivel de aplicación que sea compatible

con HTTP.

6.2.1. DESCRIPCIÓN GENERAL.

El protocolo Websocket se divide en dos partes principales:

-Negociación (handshake), documentada en la sección 4 de la norma RFC 6455.

-Transferencia de datos, documentada en la sección 5 de la norma RFC 6455.

19

Se ha tomado como referencia para la conceptualización un estudio del protocolo Websocket elaborado por

el grupo de trabajo de ingeniería de internet (IETF) basados en la versión 13 de la norma RFC 6455 [24]. 20

TLS: Seguridad de la capa de transporte (Transport Layer Security) es un protocolo criptográfico que

proporciona comunicaciones seguras por la red, su aplicación en HTTP está definido por la norma RFC2818.

84

6.2.1.1. Negociación (handshake).

La negociación consiste de una petición HTTP, junto con una lista de parámetros

requeridos y campos de cabecera opcionales. El saludo inicial por parte del cliente se ve de

la siguiente manera:

GET /chat HTTP/1.1

Host: server.example.com

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==

Origin: http://example.com

Sec-WebSocket-Protocol: chat, superchat

Sec-WebSocket-Version: 13

La negociación desde el servidor o la respuesta de éste es la siguiente:

HTTP/1.1 101 Switching Protocols

Upgrade: websocket

Connection: Upgrade

Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

Sec-WebSocket-Protocol: chat

Los detalles del significado de cada parámetro se pueden estudiar en la norma RFC6455.No

hay límite al número de conexiones Websocket que un cliente puede tener con un solo host

remoto. Los servidores pueden negarse a aceptar conexiones de hosts o direcciones IP con

un excesivo número de conexiones existentes o desconectarse cuando sufre de alta carga.

Una vez que la negociación de apertura del cliente ha sido enviada, el cliente debe esperar

una respuesta del servidor antes de enviar más datos. El servidor debe analizar al menos

una parte de la solicitud con el fin de obtener la información necesaria para generarla parte

del servidor de la negociación. El cliente deberá validar la respuesta del servidor de la

siguiente manera:

1. Si el código de estado recibido desde el servidor no es 101, el cliente maneja la

respuesta por procedimientos HTTP [RFC2616].

2. La respuesta deberá contener un campo de cabecera con el nombre |Upgrade| cuyo

valor debe incluir la palabra Websocket, si no tiene este campo o no tiene este valor

el cliente debe cerrar la conexión.

3. La respuesta deberá contener un campo de cabecera con el nombre |Connection|

cuyo valor debe incluir la palabra Upgrade, si no tiene este campo o no tiene este

valor el cliente debe cerrar la conexión.

4. Si la respuesta carece de un campo de cabecera |Sec-WebSocket-Accept| o el campo

|Sec-WebSocket-Accept| contiene un valor distinto del codificado en base 64 de la

concatenación de la |Sec-WebSocket-key| (como una cadena, no en base 64

decodificado), el cliente deberá cerrar la conexión Websocket.

85

6.2.1.2. Transferencia de datos.

Una vez que el cliente y el servidor han efectuado la negociación exitosamente, se inicia la

transferencia de datos. Websocket se convierte en un canal de comunicación de dos vías,

donde cada parte puede enviar los datos a voluntad, los datos se transmiten utilizando una

secuencia de marcos. De esta forma, el cliente debe enmascarar todos los marcos que envía

al servidor. Una trama de datos puede ser transmitida por el cliente o el servidor en

cualquier momento.

Tabla 1. Estructura de una trama Websocket

Nombre fin rsv1 rsv2 rsv3 opcode masked Lenght masking-

key data

Longitud(bits) 1 1 1 1 4 1 (7-16) ( 64) (127) 32 1-

127

En la tabla 1 se muestra la estructura de una trama Websocket donde los datos enviados

deben guardar el orden establecido.

6.2.2. API WEBSOCKET.

Para poder efectuar la comunicación mediante el protocolo Websocket se requiere que en el

nivel de aplicación se ejecute el mismo tanto en el cliente como en el servidor. La interfaz

de programación de aplicaciones es la herramienta de programación con la cual es posible

la apertura, el cierre y el control de los Websocket [23]. A continuación se describen

brevemente las herramientas de la API Websocket la cual hace parte de las bibliotecas de

Node.js y HTML5 que son las herramientas usadas para el desarrollo del Back-End y el

Front-End del proyecto.

Tabla 2. Eventos principales de la API Websocket en Javascript.

Evento Controlador De

Eventos Descripción

abierto websocket.onopen Este evento se produce cuando se establece la conexión de socket.

mensaje websocket.onmessage Este evento se produce cuando el cliente recibe los datos del servidor.

error websocket.onerror Este evento se produce cuando hay algún error en la comunicación.

cerrar websocket.onclose Este evento se produce cuando la conexión se cierra.

Para abrir una conexión Websocket (Javascript), se debe crear el constructor del objeto

Websocket:

𝑣𝑎𝑟 𝑊𝑒𝑏𝑠𝑜𝑐𝑘𝑒𝑡 = 𝑛𝑒𝑤 𝑊𝑒𝑏𝑆𝑜𝑐𝑘𝑒𝑡(𝑤𝑠:𝑢𝑟𝑙, [𝑝𝑟𝑜𝑡𝑜𝑐𝑜𝑙𝑜]);

Donde url especifica la dirección URL a la que se conecta. El atributo protocolo es

opcional, y si está presente, especifica un sub-protocolo que el servidor debe apoyar para

que la conexión sea exitosa. ws: es el nuevo esquema de URL para las conexiones

86

Websocket. También hay wss: para conexiones Websocket seguras, de la misma forma que

se utiliza https: para las conexiones HTTP seguras.

6.2.2.1. Eventos Websocket

Después de crear el objeto Websocket, se deban controlar los eventos que genera. Hay 4

eventos principales en el API Websocket: Open, Message, Close y Error. Estas funciones

serán ejecutadas de forma asíncrona cuando se produzca una acción específica. En la tabla

2 se muestran los eventos asociados con el objeto Websocket.

6.2.2.2. Métodos Websocket.

El protocolo Websocket admite dos acciones principales: send y close.

Tabla 3. Métodos de la API Websocket en Javascript.

Método Llamada Descripción

Enviar websocket.send () El método send (datos) transmite datos utilizando la conexión.

Cerrar websocket.close () El método close () se utiliza para terminar cualquier conexión

existente.

En la figura 4 se muestra el modelo por capas de la implementación propuesta. Es posible

usar Websocket como protocolo de comunicación ya que este es soportado por el

dispositivo ESP8266 que usan los objetos IoT para la conexión a la red así como por

diversos navegadores web que hagan uso de HTML5, El servidor Node.js está pensado para

trabajar con conexiones persistentes como las creadas por Websocket.

Figura 4. Modelo en capas para la implementación propuesta haciendo uso de Websocket.

87

6.3 DISEÑO BACK-END (NODE.JS).

El tipo de tecnología seleccionada para elaborar el servidor (Back-end) es Node.js. Esta

permite crear un servidor eficiente en aplicaciones que utilicen conexiones persistentes con

el cliente con un mínimo consumo de recursos. Node.js es un intérprete de lenguaje

Javascript que permite manejar muchas conexiones simultáneas en una sola máquina física.

Para escalar grandes volúmenes de clientes, todas las operaciones de entrada/salida en

Node.js se llevan a cabo de forma asíncrona. Node.js crea un loop que realiza las diferentes

tareas asíncronas, dicho bucle recibe las diferentes tareas junto con un callback. Cuando

finaliza el proceso en el loop se ejecuta el callback y envía la respuesta a la aplicación. El

loop gestiona todas las operaciones asíncronas. La consecuencia de este modelo

Entrada/Salida es que se puede atender a un alto número de clientes [25].

El servidor gestiona diferentes eventos como son: Conexiones, recepción de datos, cierre de

clientes, llamados a diferentes protocolos. Javascript es un lenguaje para programación

orientado a eventos, que permite funciones y cierres anónimos, fácil de codificar y

mantener. Node.js espera por un evento y se escribe una función de devolución de llamado

[26]. Node.js también se puede utilizar en aplicaciones monopágina21

6.3.1 CARACTERÍSTICAS.

Entre otras características de Node.js se destacan las siguientes:

El estándar ECMA Script v6 (o ES6) gestiona la compatibilidad de JavaScript y

node.js [25]

Node.js es asíncrono

Programación orientada a eventos

Ejecuta Javascript en el lado del servidor.

Puede mantener tantas conexiones como número máximo de archivos descriptores

(sockets) soportados por el sistema. En un sistema UNIX este límite puede rondar

por las 65.000 conexiones.

Debido a su arquitectura de usar sólo un hilo sólo podrá usar una CPU. Un método

para usar múltiples núcleos sería iniciar múltiples instancias de Node.js en el

servidor y poner un balanceador de carga delante de ellos [26].

Uno de los puntos fuertes de Node.js es su capacidad de mantener muchas

conexiones abiertas y esperando.

21

Las aplicaciones monopágina son aquellas que se presentan en una única página web, emulando a las

aplicaciones de escritorio [25].

88

Se programa en Javascript así que la curva de aprendizaje es corta una vez se ha

familiarizado con programación web.

Un servidor es muy fácil de realizar en comparación con otras tecnologías.

Tiene un api sencillo de aprender y no muy grande.

Tiene su propio repositorio de módulos y es fácil de utilizar.

Noje.js no crea un hilo por cada conexión y duerme mientras no se utiliza.

Tiene un intérprete en línea de comandos

Tiene una de las mayores comunidades de github y la mayor cantidad de

repositorios a la fecha (323.938).

6.3.2APLICACIONES DE NODE.JS.

Entre otros desarrollos, Node.js se usa hoy principalmente para [26]:

Juegos online y chats.

Web tiempo real.

Gestores de correo online: podríamos ver notificaciones en tiempo real de nuevos

correos recibidos.

Herramientas de colaboración.

Redes sociales: por ejemplo para actualizar automáticamente tu muro de novedades.

Herramientas de traducción en tiempo real.

Aplicaciones para línea de comandos y scripts para administración de sistemas.

Aplicaciones web que necesiten una conexión persistente con el navegador del

cliente. Mediante una serie de técnicas llamadas Comet, se posible hacer una

aplicación que envíe datos al usuario en tiempo real; es decir, que el navegador

mantenga la conexión siempre abierta y reciba continuamente nuevos datos.

6.3.3 TIEMPO REAL Y NODE.JS.

Se define un sistema de tiempo real como “un sistema que responde a un estímulo externo

dentro de un tiempo especificado. Su eficiencia no solo depende de la exactitud de los

resultados de cómputo, sino también del momento en que los entrega. La predictibilidad es

su característica principal. Los sistemas de tiempo real deben asegurar la distribución de

recursos de tal forma que se cumplan los requerimientos de tiempo” [27]. Node.js se

aproxima a la definición de las aplicaciones en tiempo real flexible (soft real-time). Los

sistemas de tiempo real flexible son aquellos en los que las restricciones de latencia son

flexibles: se pueden perder plazos, es decir, la respuesta al estímulo no cumple las

condiciones de tiempo impuestas, y además el valor de la respuesta decrece con el tiempo

pero no acarrea un desenlace fatal [28]. Node.js es similar en su propósito a otras

aplicaciones como Twisted o Tornado de Python, Perl Object Environment de Perl, React

de PHP, libevent (también libev) de C, Event Machine de Ruby, vibe.d de D y en Java

existe Apache MINA, Netty, Akka, Vert.x, Jetty, Grizzly o Xsocket, ente otros [26].

89

6.4 DISEÑO FRONT-END.

Para el diseño de la interfaz del usuario se ha optado por el uso del llamado diseño web

responsivo o adaptativo, este propone eliminar la necesidad de diferentes tipos de diseños

para distintas resoluciones de pantalla. Comúnmente el desarrollo de una aplicación debe

soportarse teniendo en cuenta parámetros como el tamaño de pantalla, el tipo de dispositivo

y la orientación. La idea es que un sólo diseño se adapte de manera automática a las

características de pantalla [29]. El concepto se le atribuye a Ethan Marcote, en el artículo

de la revista online “A List A part” [30] del año 2010, allí se describen las técnicas y

conceptos básicos que deben asumirse a la hora de implementar un diseño responsivo. Se

aplican cuatro conceptos claves para el Responsive Web Design [31]:

1. Media Queries que nos ofrece CSS3 el cual posibilita usar estilos teniendo presente

parámetros de la pantalla.

2. Diseño web fluido, se trata de layouts definidos en porcentajes que se ajustan a los

anchos de la pantalla.

3. Elementos fluidos dentro de estos layouts, estos son las imágenes o elementos

multimedia.

4. Fuentes tipográficas con valores relativos.

Al crear un sitio con Responsive Web Design sólo se requiere una única versión de HTML

y CSS que funcionan adecuadamente en cualquier tipo de dispositivo y resolución. Entre

los beneficios del diseño web responsivo se encuentran la reducción de costos, eficiencia en

el mantenimiento y actualización del código, mejora en la usabilidad, capacidad de

adaptación de la interfaz, utilización de imágenes, videos y otros medios, tamaño relativo,

única dirección del sitio web (URL) [31], entre otros.

6.4.1 FRAMEWORK FRONT-END.

Un framework para front-end es un conjunto de elementos y herramientas que dan un

marco de trabajo para los diseños web. El objetivo de estos frameworks es proporcionar

una estructura común para desarrolladores web, agilizando el proceso de inicialización y

aportando reutilización de elementos básicos y repetibles. [30]. Estos frameworks suelen

consistir en una estructura de archivos y directorios de código estándar divididos en

elementos HTML, CSS y Javascript. En general la mayoría de estos frameworks comparten

características comunes tales como proporcionar código CSS para diseñar layouts,

conocidos como grids o cuadriculas, que suelen contener definiciones de tipografía, que

brindan soluciones para el problema de las incompatibilidades de los distintos navegadores

(como reset css) y componentes avanzados de interfaces de usuario.

90

6.4.2FRAMEWORK BOOTSTRAP.

Twitter Bootstrap es un framework o conjunto de herramientas de software libre para

diseño de sitios y aplicaciones web. Contiene plantillas de diseño con tipografía,

formularios, botones, cuadros, menús de navegación y otros elementos de diseño basado en

HTML y CSS, así como, extensiones de Javascript. Bootstrap está disponible en GitHub.

En agosto del 2011, Twitter liberó a Bootstrap como código abierto. El código fuente

descargado está estructurado en tres directorios con una pequeña cantidad de ficheros

fácilmente reutilizables e integrables en el proyecto. Concretamente se hace uso de los

siguientes directorios:

CSS: Esta carpeta contiene dos ficheros CSS más sus versiones minimizadas. Los ficheros

son bootstrap.css y bottstrap-responsive.css. Estos ficheros se emplean para configurar los

elementos de la web. La versión responsive incluye todos los componentes necesarios para

incluirlos en el proyecto.

JS: Esta carpeta incluye el fichero bootstrap.js además de su versión minimizada donde se

encuentra todo el código Javascript necesario para el correcto funcionamiento de los

widgets de Bootstrap.

IMG: Esta carpeta incluye los sprites empleados para emplear los iconos de Bootstrap

cedidos por Glyphicons.

El empleo del framework Bootstrap aporta facilidad de uso, agilidad de desarrollo,

reutilización del código aportando un sencillo mantenimiento y aplicaciones ejecutables en

cualquier navegador. La decisión del empleo de un framework supone un equilibrio entre

las necesidades del proyecto, la experiencia del desarrollador o desarrolladores y de la

finalidad del proyecto [31].

6.4.3. CRITERIOS DE DISEÑO PARA EL DESARROLLO DE LA INTERFAZ

WEB.

Se diseñó una interfaz que se pueda usar y visualizar correctamente en un smartphone,

tablet, PC o portátil, multiplataforma, fácil de entender y utilizar, intuitiva, fácil de

mantener y depurar. A partir de las necesidades del proyecto se definieron los siguientes

criterios para su diseño:

91

1. Diseño que se adapte a cualquier resolución de pantalla.

2. Un menú donde se puedan visualizar tanto los objetos IoT de medición de

consumo eléctrico como de agua y poder conocer su estado (online/offline).

3. Tablas de Historial.

4. Un protocolo de comunicación rápido en la transmisión de mensajes desde/hacia

el servidor.

5. Tamaño en bytes lo más reducido posible.

Se desarrollaron cuatro interfaces HTML principales:

1. Inicio de sesión y registro de nuevo usuario: Formulario donde está el nombre,

contraseña y correo del nuevo usuario obligatorio para el ingreso a todos los datos de los

objetos IoT asociados a un usuario.

2. Asociar dispositivos con el usuario: Formulario donde se incluyen los datos de

asociación del dispositivo como:

- Key: Identificador único de cada dispositivo.

- Nombre o Apodo: Nombre de fácil recordación del dispositivo

- Valor de kw/h o m3: De acuerdo al tipo de dispositivo se coloca el valor de kw/h o

metro cubico.

3. Interfaz de consumo de agua: Se incluyen,

- Graficas de historial que varían de años a meses, días, horas y minutos ,

- Grafica de tiempo real,

- Variables de consumo y costos.

4. Interfaz de consumo de energía eléctrica: Se incluyen,

- Graficas de historial que varían de años a meses, días, horas y minutos

- Grafica de tiempo real,

- Variables de consumo y costos.

- Botón de ON/OFF para apagar o encender la carga conectada al dispositivo.

Adicional a los criterios previos de diseño se incluyeron los siguientes elementos:

1. Se realizó una sola aplicación web que permite usar dicho diseño en cualquier

sistema operativo como son Windows, IOS, Android, versiones de Linux (no

depende del SO).

2. Se hace uso de Bootstrap en su versión 3 como framework de desarrollo.

3. Se hace uso de Websocket como protocolo de comunicación cliente/servidor.

4. Los mensajes se envían y reciben estructurados en JSON. Este es un formato

óptimo para almacenar variables en lenguaje Javascript que aporta velocidad en la

transmisión de mensajes.

5. Se utiliza HTML5como lenguaje de la World Wide Web. En su última versión

contiene una gran cantidad de nuevos protocolos que facilitan el diseño y la carga

de la página.

6. Se utiliza la librería jquery en código Javascript para interacciones de la página.

Esto hace que la aplicación sea intuitiva, fácil de entender y manejar.

92

6.5. FUNCIONAMIENTO DEL SERVIDOR.

El servidor Node.js efectúa las tareas de conexión, desconexión, gestión de solicitudes de

objetos IoT y de usuarios. Se encarga igualmente de conectarse a la base de datos, efectuar

las consultas a la misma y alimentar los datos de los eventos de consumo provenientes de

los objetos IoT. La construcción del programa se efectuó en lenguaje Javascript el cual

Node.js permite usar en el lado del servidor. Se muestran las rutinas principales de la

operación del servidor teniendo en cuenta que se maneja un objeto Websocket por cada

conexión de cliente en el mismo hilo.

6.5.1. INICIO DE SERVIDOR.

Al ejecutar el llamado del servidor este efectúa una serie de pasos de configuración antes de

quedar listo para crear y gestionar las peticiones Websocket como se muestra en la figura 5.

Figura 5. Rutina de inicio del servidor Node.js.

Primero se inicia un servidor HTTP para escuchar las solicitudes de conexión a Websocket

(negociación) tal como se estableció en la sección 6.2.1.1. Se crea seguidamente un objeto

Websocket que maneja la conexión para cada uno de los clientes del servidor. El mismo

queda en espera de solicitudes entrantes, y al llegar una, efectúa la negociación para

seguidamente hacer la conexión a la base de datos si esta no llegase a estar activa. En caso

de que la conexión a la BD falle, el servidor envía un mensaje de error y cierra el socket. Si

la conexión a la BD es exitosa, el objeto manejador del socket inicia la gestión de eventos,

que para el caso de la conexión inicial genera un evento “open” como se mencionó en la

sección 6.2.2.1. En este caso el servidor determina el tipo de cliente que se ha conectado

como se muestra en la figura 6.

93

Figura 6. Atención de interrupción de inicio de socket (USA: matriz de objetos de medición de consumo de

agua, USE: matriz de objetos de medición de consumo de energía, USI: matriz de usuarios web).

Para determinar el tipo de cliente se hace uso del encabezado HTTP de la negociación del

Websocket. La URL asociada a la petición debe contener el nombre del dispositivo (en

adelante se denominará key), dicha key es única para cada objeto IoT y genérica para las

conexiones de usuarios de dispositivo (tablet, PC, entre otros), cada nombre debe iniciar

con una sigla así:

- "se": Usuario de dispositivo de consumo eléctrico.

- "sa": Usuario de consumo de agua.

- "in": Usuario que inicia sesión en la interfaz principal.

- "ob": Objeto IoT.

Si el encabezado de la key no coincide con las establecidas la conexión no se admite y se

devuelve un mensaje de error. Para cada tipo de cliente una matriz almacena los datos de

conexión de cliente, esta es usada por el servidor para conocer el estado de las conexiones,

así como determinar si hay conexiones duplicadas (cuando un socket se cierra del lado del

cliente y envía una nueva solicitud de conexión). Si el cliente es un usuario se determina el

tipo de usuario y se devuelve el código HTML inicial correspondiente a la petición del

cliente. Para los objetos IoT el servidor realizará una búsqueda en la BD para saber si existe

una tabla con el nombre de la key, si no existe se concluye que es la primera vez que se

conecta el dispositivo al servidor y se creará una nueva tabla con el nombre de la key donde

se incluirán unos valores iniciales por defecto (figura 7). En esta tabla se guardará en

adelante la información que enviará el objeto IoT al servidor.

Figura 7. Asociación de objetos IoT a la base de datos.

94

6.5.2. GESTION DE PETICIONES WEBSOCKET.

Como se vio en la sección 6.2.2.1, hay cuatro peticiones principales que puede generar un

objeto Websocket. Antes se han mencionado las acciones a seguir cuando se llama al

evento “open”, para el evento message las acciones a efectuar se muestran en la figura 8.

Figura 8. Atención de evento message del objeto Websocket.

Todos los mensajes que provengan de usuarios web, así como de objetos IoT hacia el

servidor deben estar estructurados como variables JSON. Inicialmente Node.js determina si

es posible parsear22

el paquete de datos Websocket obtenido, si no es posible se genera un

mensaje de error como atención del evento. Una vez establecido el arreglo de datos se

determina el origen de la solicitud de los mensajes, se manejan tres tipos:

- Hora: El usuario web o el objeto IoT pueden solicitar la hora del servidor mediante el

JSON"id":"id_objeto","hora":1" El servidor responderá con un paquete Websocket

conteniendo la hora del servidor como una cadena de caracteres iniciando con asterisco

(“*”) seguido de la hora en formato DATETIME de Javascript (compatible con MySQL) y

terminado en espacio (caracteres de borde para la terminal del ESP8266 definidos en la

sección 5.6.4), por ejemplo “*2016-06-14T20:47:33 “

- Usuario: Si el JSON proviene de un usuario, se determina el tipo de objeto dentro del

código Javascript del lado del cliente que realizó la petición y se ejecuta la función que

corresponda (Ejecuta acción usuario en figura 8), las peticiones que se pueden atender son:

22

Parsear (analizar gramaticalmente) hace referencia a la extracción automática de las variables contenidas

en un objeto JSON en un array con los nombres y valores de las variables incluidas en el mismo. La función

tiene la forma (Javascript): varmi_array=JSON.parse(message);

95

- "agregar": Asocia un sensor nuevo a un usuario ya existente.

- "grafica-barras-meses": Envía los datos necesarios para realizar la suma del

consumo acumulado y cuenta el número de eventos del ID asociado para todos los

meses del año seleccionado por el usuario en el back-end.

- "grafica-barras-meses-electrico”:Realiza una suma del acumulado y cuenta el

numero de eventos de ID asociado para el mes seleccionado

- "grafica-barras-dias": Semejante a los anteriores, calcula el consumo acumulado

de agua y cuenta el numero de eventos de ID asociado para el día seleccionado.

- "grafica-barras-dias-electrico": Calcula el consumo acumulado de energía y

cuenta el numero de eventos de ID asociado para el día seleccionado.

- "grafica-barras-horas": Calcula el consumo acumulado de agua y cuenta el

numero de eventos de ID asociado para la hora seleccionada.

- ”grafica-barras-horas-electrico": Calcula el consumo acumulado de energía y

cuenta el numero de eventos de ID asociado para la hora seleccionada.

- "grafica-barras-minutos": Calcula el consumo acumulado de agua y cuenta el

numero de eventos de ID asociado para el minuto seleccionado.

- "grafica-barras-year": Devuelve los datos para la visualización de los detalles de

consumo de los dispositivos activos.

- "cambio-valor-m3”: Modifica el valor de referencia que se usa para calcular el

valor del consumo medido de los objetos IoT.

- "estado-on-off": Envía y/o modifica el estado del interruptor de los dispositivos

conectados a los usuarios de dispositivos de medición eléctrica.

- "ping": Devuelve un pong de acuerdo a lo establecido en la norma RFC6455 de

Websocket.

- Objeto IoT: Si el JSON proviene de un dispositivo de medición, se determina el tipo de

dispositivo (“se” eléctrico, “sa” agua). En este caso se tratará siempre de una muestra de

consumo (tiempo real o acumulado) tal como se definió en la sección 5.6. Para cada caso el

servidor determinará el tipo de dato (valor “td”), generará una consulta a la BD

almacenando en la misma el valor de consumo indicado en la trama JSON.

El evento Close se produce al desconectarse algún cliente del servidor que se encontrara

conectado a través de un Websocket, el servidor gestiona este evento como se muestra en la

figura 9. Para todos los casos se identifica el tipo de cliente (objeto IoT o usuario web) y se

procede a quitar los datos del objeto Websocket asociado en la matriz del tipo de objeto

conectado al servidor.

El evento Error se presenta cuando se presenta alguna inconsistencia en los paquetes

Websocket provenientes de los clientes o cuando el servidor es incapaz de comprender o

gestionar la petición, en este caso el servidor devolverá un mensaje de error. Si el error

compromete la comunicación, el servidor enviará un paquete con el código 1002 y cerrará

la conexión según lo establecido en la norma RFC 6455.

96

Figura 9 Atención de evento close del objeto Websocket.

6.5.3. PETICIONES HTTP DE USUARIO WEB.

Los usuarios de la plataforma acceden mediante el uso de dos tipos de perfiles: Un perfil

público que pertenecerá a cada objeto IoT y al que se puede ingresar mediante la lectura de

la etiqueta QR asociada al objeto. El otro perfil es privado y se accede mediante la

validación de credenciales en el portal como se describe seguidamente. La diferencia entre

los dos radica en la cantidad de información que se puede obtener del objeto. El perfil

público únicamente muestra los datos de consumo de tiempo real del objeto IoT mientras

que el perfil privado permite consultar los consumos históricos así como configurar los

parámetros propios del grupo de objetos asociados a la cuenta del usuario.

6.5.3.1. Inicio de sesión y registro de nuevo usuario.

Al ingresar en la plataforma desde la página principal (key inicio), el usuario tiene dos

opciones para registrarse:

1. Como nuevo usuario donde ingresa el nombre, contraseña y correo.

2. Como usuario registrado en donde sólo ingresa el nombre y la contraseña

registrada.

Como se muestra en la figura 10, en el primer caso, el sistema verifica la información en la

BD, si no hay datos repetidos de nombre y correo se guarda el nuevo usuario en la

plataforma, en caso contrario envía un mensaje de error de datos repetidos. En el caso de

ser un usuario registrado, se verifican las credenciales de acceso, si se encuentran

incorrectamente diligenciadas se genera un aviso de error de validación incorrecta. En

cualquiera de los dos casos, al lograr el ingreso con éxito, el servidor carga el HTLM

correspondiente a la pantalla principal del usuario, donde se pueden agregar los objetos así

como acceder a los detalles de los objetos IoT del usuario registrado.

97

Figura 10. Flujo del inicio de sesión de usuario.

6.5.3.2. Asociar dispositivos al usuario.

Una vez validadas las credenciales del usuario este tiene la posibilidad de asociar nuevos

dispositivos ingresando los datos de key del objeto IoT (Figura 11). El identificador único

para cada dispositivo (key) estará impreso en la carcasa que protege de la electrónica del

objeto IoT. Los datos a diligenciar por parte del usuario son:

- Key: Identificador del objeto IoT

- Nombre o apodo: Es el nombre por el cual el usuario recordará con mayor

facilidad el dispositivo, el nombre puede ser cualquiera.

- Valor del KW/h o m3: De acuerdo al tipo de dispositivo de medición del objeto

IoT se coloca el valor en pesos (o cualquier moneda) del KW/h de energía o del m3

de Agua potable.

Figura 11. Flujo de asociación de objetos IoT al usuario

Ingresados los datos para agregar el nuevo dispositivo el sistema verifica que la key tenga la

sintaxis correcta y que no exista en la BD. Si los datos son correctos, la información se

guarda en la BD y seguido se envía un mensaje de éxito. En caso contrario se envía un

mensaje con los siguientes códigos del error:

98

- ERROR 00: Verifique la KEY si es correcta. Tampoco se recibe señal del

dispositivo verifique que esté conectado correctamente.

- ERROR 01: El dispositivo ya existe en la tabla dispositivos verifique la KEY.

- ERROR 11: El dispositivo ya existe (con otro usuario) verifique la KEY.

6.6. PRUEBAS DEL SERVIDOR WEB.

Durante el desarrollo del software front-end y back-end se han usado diversos recursos de

software y hardware a fin de corregir los problemas en la evolución de la propuesta. En

general las características del entorno de pruebas del servidor han sido las siguientes:

- Servidor: Node.js- versión 4.2.3

- Gestor de paquetes de Javascript: NPM - versión 2.14.7

- Administrador PHP: Phpmyadmin con Wampserver- versión 4.3.11

- URL del servidor: http://localhost:3000/

- Dirección IP: 192.168.1.53

- Puerto del Servidor: 3000

- Nombre archivo del servidor: server_(número de versión).js

- Sistema operativo: Windows 7 de 64 bits

- Procesador: AMD Athlon(tm) X2 340 Dual Core Procesador (2 CPU), 3.2 GHZ

- Memoria RAM: 4GB DDR3

- Servidor de base de datos: MYSQL - versión 5.6.24

- Nombre base de datos: usuario_1

Exploradores utilizados:

Firefox - versión 42.0 a 47.0.1

Google Crome - Versión 51.0.2704.103 m

6.6.1 INSTALACIÓN DE NODE.JS

Para instalar Node.js Inicialmente se descarga de la web oficial como se describe en su web

oficial23

. Se instala y verifica la versión con el comando “node –v” en cmd de Windows

como se muestra en la figura 12.

Figura 12. Comprobación de la versión instalada de Node.js

En la ruta donde se escribe el servidor se crean las siguientes carpetas y archivos:

23

https://nodejs.org/about/

99

Carpetas:

- node_modules: Carpeta que contiene las librerías que utiliza Node.js para su

funcionamiento.

- public: Carpeta donde se alojan los archivos HTML (CSS, imágenes, Javascript).

- router: Carpeta donde están los archivos de configuración de la base de datos.

Archivos:

- server.js: Archivo donde se encuentra escrito el servidor

- package.json: Este archivo contiene varios metadatos relevantes para el proyecto.

Se utiliza para dar información a la NPM que le permite identificar el proyecto, así

como manejar las dependencias, descripción y versión del proyecto en una

distribución particular y la información de licencia.

Una vez instalado el servidor y ubicados los archivos propios del proyecto en su carpeta

correspondiente se escribe el comando “node<nombre del archivo del servidor>” en la ruta

donde se encuentra el servidor como se muestra en la figura 13.

Figura 13. Inicio del servidor en Node.js

6.6.2. PRUEBAS DEL SERVIDOR LOCAL CON LA BASE DE DATOS

Inicio de interfaz eléctrica: Si un usuario abre la interfaz HTML de un dispositivo eléctrico

el servidor lo guarda temporalmente en una matriz donde le asocia la key. En este caso

como es el primer cliente aparece como Cliente Eléctrico N°1 Figura 14.

Figura 14. Asociación de interfaz de usuario al servidor

Conexión inicial de dispositivo: En la figura 15 se visualiza el proceso de conexión en un

servidor de pruebas. Una vez establecido el socket, el servidor abre la base de datos como

se describe en la sección 6.5 (recuadro azul), seguidamente el objeto IoT solicita la hora del

servidor para actualizarla en el microcontrolador, el servidor responde a la petición como se

describe en la sección 6.5.2 (recuadro violeta).El objeto IoT envía el JSON que contiene la

medición acumulada previa a su última conexión y/o al acumulado desde el momento de la

activación como se describe en la sección 5.6 (recuadro rojo). Si es la primera vez que el

objeto se conecta, el servidor crea una nueva tabla en la base de datos con el nombre de la

key (“id” en la cadena JSON). En el ejemplo se muestra el comportamiento del servidor

100

cuando se conecta por primera vez el dispositivo con key= se_002 (recuadro aguamarina),

este crea una nueva tabla en la base de datos donde se relacionarán todos los eventos de

consumo del objeto IoT se_002 (recuadro café en el listado de tablas de PHPMyAdmin).

Figura 15. Conexión de objeto IoT nuevo al servidor y creación de tabla en la base de datos. Arriba: Cmd de

Windows (consola del servidor Node.js), abajo: lista de tablas de la BD en PHPMyAdmin.

Crear un nuevo usuario: Al crear un nuevo usuario el servidor lo guarda en la tabla de

nombre de usuarios como se muestra en la figura 16, de acuerdo a lo visto en el numeral

6.5.3.1.

Asociar Dispositivo al usuario: Al asociar el dispositivo al usuario respectivo el servidor lo

incluye en la tabla “Dispositivos” (figura 15 y 16). Supongamos que se quiere asociar el

dispositivo con: key=se_003, Nombre o apodo=lámpara y Valor kw/h=250. El resultado es

el mostrado en la figura 17.

Asociar un dispositivo con key en uso: Si se quiere agregar un dispositivo con una “key”

ya registrada en la base de datos, el servidor realizara la consulta respectiva y enviara el

mensaje de error al cliente web. Por ejemplo si se quiere agregar nuevamente el dispositivo

con la key=se_003 el servidor enviara un mensaje al cliente con el respectivo código de

error (Figura 17).

101

Figura 16. Creación de usuario nuevo en la base de datos. Arriba:Consola del servidor Node.js, abajo:registro

insertado en la tabla de usuarios de la BD en PHPMyAdmin.

Figura 17. Efecto en la consola del servidor de la asociación de un nuevo objeto IoTal un usuario.

Figura 18. Mensaje de error al tratar de asociar la key de un objeto a un usuario cuando la clave ya existe.

102

6.6.3. PRUEBAS SERVIDOR WEB.

Para la implementación y uso del servidor en la web se estudiaron tres alternativas:

1. Servidor en IBM (https://console.ng.bluemix.net/)

2. Servidor en Heroku(https://console.ng.bluemix.net/docs/starters/install_cli.html)

3. Servidor Local configurado para funcionar en internet.

6.6.3.1. Servidor en IBM.

Para hacer uso del servicio inicialmente es necesario efectuar el proceso de registro y

creación de la aplicación en IBMbluemix, para el ejercicio se creó la aplicación de Node.js

con nombre “udistrital”, seguidamente se agregó el motor de base de datos MySQL el cual

es un servicio gratuito en Cleardb y se crearon las tablas del modelo relacional.

Para el despliegue del servidor se descargó e instaló el programa Cloud Foundry CLI que

despliega el servidor y permite su interacción por línea de comandos en el PC. En el código

del servidor, se colocan las variables de entorno que necesita la plataforma de IBM para

funcionar (puerto y host) en el archivo “server.js”:

const port = (process.env.VCAP_APP_PORT || 3000);

const host = (process.env.VCAP_APP_HOST || 'http://localhost');

Se deben ajustar las variables de conexión de la base de datos local por las suministradas

por la plataforma de IBM :

host:cleardb.net',

port: '3306',

user: 'b6163fef8db87e',

password: 'uuib69fe',

database: 'tyu930711fc95aedd1',

En el PC se ingresa al Cmd de Windows, se busca la raíz de la carpeta donde está ubicado

el archivo del servidor “server.js” y se escribe lo siguiente:

cflogin: Pide el correo y la contraseña de registro en IBM Bluemix (recuadro verde en la

figura 19).

cfpushudistrital: Sube los archivos al servidor, este realiza el cargue de la aplicación que

fue creada en bluemix con el nombre “udistrital”. Una vez llamado el comando push se

empezará a subir la aplicación desde el PC hacia los servidores de IBM en la aplicación

por nombre “udistrital” (recuadro rojo en la figura 19). Al terminar aparece el mensaje “la

App empezó OK” (figura 20).

En el panel de control de la plataforma de IBM, se indica la dirección web que entrega el

sistema para conectar al servidor (http://udistrital.mybluemix.net ver figura 21).

103

Figura 19. Proceso de despliegue del servidor en Bluemix de IBM.

Figura 20. Despliegue realizado con éxito en el servidor Bluemix de IBM.

Figura 21. Panel de control de la App udistrital en IBM Bluemix

104

6.6.3.1. Servidor en Heroku.

Como antes, se efectúa el proceso de registro y creación de la aplicación en Heroku. En

seguida se crea la aplicación de Node.js con nombre “udistrital” (Se usa la base de datos

Cleardb de IBM).

Para el despliegue del servidor se requiere instalar primeramente git24

, luego la herramienta

Heroku Toolbelt que permite utilizar la línea de comandos (CLI) de heroku25

. Se debe crear

igualmente un archivo llamado Procfile (sin extensión), el contenido es “web: node

server.js” Luego se verifica en el PC el archivo donde está escrito el servidor “server.js” y

se colocan las variables de entorno que necesita la plataforma de HEROKU para funcionar

(puerto y host Javascript):

const port = process.env.PORT || 3000;

const host = process.env.IP || 'http://localhost';

En el PC se ingresa al cmd de Windows y desde allí se ingresa a la raíz de la carpeta donde

está ubicado el servidor con nombre “server.js” y se escribe:

Herokulogin: Pide el correo y la contraseña de HEROKU. Figura 22

Se agrega la referencia del repositorio de heroku con los siguientes comandos:

gitinit

herokugit:remote -a udistrital

Se hace el despliegue del servidor con:

git add

git commit -am "make it better"

gitpushheroku master

Una vez realizado el despliegue se empezara a subir la aplicación desde el PC hasta los

servidores de HEROKU en la aplicación por nombre “udistrital” (figura 23). Si todo se

sube con éxito debe mostrarse un mensaje de “Verifying deploy... done” (figura 24).

En el panel de control de Heroku en la App de udistrital, en la parte superior derecha hay

un botón que dice “open App” al pulsar se abre el enlace siguiente:

http://udistrital.herokuapp.com/

24

GIT es un software de control de versiones diseñado por Linus Torvalds, pensando en la eficiencia y la

confiabilidad del mantenimiento de versiones de aplicaciones cuando éstas tienen un gran número de archivos

de código fuente (disponible en https://git-scm.com/download/win). 25

Software disponible en https://toolbelt.heroku.com/

105

Figura 22. Login para desplegar aplicación en el servidor de Heroku.

Figura 23. Ejecución de git push heroku master para desplegar la aplicación en Heroku.

Figura 24. Despliegue realizado con éxito en los servidores de Heroku.

6.6.3.1. Servidor local configurado para funcionar en la web.

Para configurar el servidor local en internet se usan las mismas herramientas de uso local

(hardware, software, entre otros), efectuando algunas modificaciones:

- Se cambia el puerto de escucha del servidor, del puerto 3000 al puerto 80.

- Se redireccionan todas las peticiones que lleguen al puerto 80 de la dirección IP

pública del router del ISP al puerto 80 de la IP privada del servidor local, que para

el ejercicio es: 192.168.1.53.

- Se habilita el servidor MySQL del PC local.

Para probar el servidor se realizan los siguientes pasos:

106

Se inicia el servidor escribiendo en la ruta raíz donde se encuentra el archivo el comando

“node server.js” tal como se efectuó en la sección 6.6.1 (Figura 13).

Al abrir el explorador de internet y escribir la dirección IP pública: 181.130.116.47. Se

verifica que abre correctamente (figura 25).

Figura 25. Front-end de inicio de sesión mediante la IP pública del ISP

Es posible asignar un nombre de dominio de la siguiente manera:

- Se ingresa a la página NO-IP (https://www.noip.com/) y se realiza el registro.

- Una vez dentro de la aplicación de NO-IP en la casilla de host-name se agrega un

nombre. Para el ejercicio queda como: “udistrital.ddns.net” (figura 26). Dado que la

IP pública que proporciona el proveedor de servicio de internet no es fija si no

dinámica, se descarga la aplicación que proporciona la página de NO-IP con

nombre DUCv4.1.1, luego se instala en el PC. Este programa mantiene sincronizado

el dominio con la dirección IP pública en caso que el proveedor de internet cambie

dicha IP (Figura 27).

107

Figura 26. Asignación de nombre de dominio a la dirección IP: 181.130.116.47.

Figura 27. Programa DUC v4.1.1 para mantener sincronizada IP publica con dominio de NO-IP

6.6.3.2. Resultados de las pruebas de servidores.

A partir del despliegue y la experimentación de la aplicación en estas plataformas se

obtuvieron los siguientes resultados:

Se efectuaron modificaciones en la escritura del código del servidor a fin de que funcionara

adecuadamente para las pruebas locales y en la nube modificando únicamente las variables

de entorno y el puerto utilizado.

Se realizaron pruebas del comportamiento del Front-end. El framework Bootstrap funciona

adecuadamente en los dispositivos móviles probados (celular, tablet) así como en PC de

escritorio siempre y cuando las prestaciones de los dispositivos sean adecuadas (buena

capacidad de procesamiento para ejecutar Javascript y HTML5).

Los servicios en la nube de IBM yHeroku mostraron un comportamiento muy similar, los

tiempos de respuesta y la gestión de peticiones presentaron prácticamente las mismas

prestaciones. Ambos servicios dan soporte para node.js en diferentes versiones. Una de las

limitaciones de estos servicios gratuitos radica en que al desconectarse súbitamente un

dispositivo del servidor y volver a conectarse, después de unos minutos la plataforma se

desconecta automáticamente. El problema se debe al enrutamiento interno de estos

servicios.IBM y HEROKU no son completamente gratuitos, tienen cobros por bytes

enviados por segundos. La base de datos para probar los servicios de IBM y Heroku es de

la empresa Cleardb dando solo 5 MB de capacidad y una cantidad de usuarios limitada, esto

por ser una cuenta gratuita, suficiente para unas pruebas limitas pero no para una aplicación

completa.

La plataforma NO-IP es un servicio gratuito, después de 30 días hay que registrar

nuevamente el dominio, por lo que la asignación de DNS es útil sólo para efectuar pruebas.

108

Al usar la IP publica del ISP como dirección para el servidor en internet, es recomendable

tener una IP privada fija que no cambie dinámicamente. Esto garantiza poder usar el

servidor local como servidor web de forma permanente, o al menos por un periodo

suficiente para la implementación y puesta a punto de este trabajo. Es posible dejar

cualquier puerto como puerto de escucha, por ejemplo el 2000, en este caso se debe escribir

la IP pública o el dominio seguido de dos puntos y el número de puerto ejemplo:

http://181.130.116.47:2000/ o http://udistrital.ddns.net:2000/

.

6.7. CONCLUSIONES

Aunque las tramas de los mensajes enviados por Websocket se realizaron en ASCII

también es posible hacer en envío de los datos de forma binaria. El proceso de elaboración

del servidor exigió una etapa de análisis de datos donde fue más fácil trabajar con cadenas

de caracteres y por esa razón se escogió ese tipo de envío de datos. Node.js permite crear

un servidor que utiliza conexiones persistentes con el cliente con un consumo de recursos

mínimo y con el número de clientes simultáneos bastante elevado.

Al realizar una sola aplicación web, permite realizar un solo diseño para cualquier

Sistema Operativo. Es muy importante que el navegador que se esté utilizando este

actualizado en sus últimas versiones. Los mensajes desde el servidor y el cliente web se

envían por el protocolo Websocket y los datos de intercambio se envían en formato

JSON. Es muy importante aprender la estructura del formato JSON para escribirlo en el

microcontrolador.

Una de las ventajas de JSON sobre XML como formato de intercambio de datos es que es

mucho más sencillo de escribir y en Javascript un texto JSON se puede analizar fácilmente.

109

7. ETIQUETADO E INTERACCIÓN DE OBJETOS IoT

Para lograr la interacción objeto-persona que se plantea en el internet de las cosas es

fundamental establecer el etiquetado de los objetos tal como se mencionó en el capítulo 1.

Para este trabajo se optó por un etiquetado de soporte pasivo de los más comunes que hay

en la actualidad y es el uso de códigos en dos dimensiones (2D). Existen diferentes tipos de

códigos 2D (Microsoft Tag, AztecCode, Maxicode, Code16K, BIDI, Datamatrix, QR, entre

otros) estos representan información de forma visual para permitir su lectura automática,

rápida y sin errores por parte de un escáner. La principal diferencia entre ellos es la forma

de representar la información y la cantidad de datos que son capaces de almacenar en el

mismo espacio (densidad de información). Los códigos QR (del inglés Quick Response

code, "código de respuesta rápida") son los códigos 2D más extendidos en la actualidad,

estos pueden almacenar información alfanumérica, binaria o caracteres del japonés

(Kanji/kana). A diferencia de los códigos de barras, la codificación QR en 2D hace posible

almacenar una mayor cantidad de información en un espacio menor (figura 1).

Figura 1. Comparación entre un código de barras unidimensional (Derecha) y uno 2D (izquierda). Mientras el

código de barras almacena información en una sola dirección, un QR almacena la misma información en 2

dimensiones con un uso menor de espacio.

La codificación QR se encuentra reglamentada en dos normas: La norma QR-Code model1

(modelo original, norma ISO (ISO/IEC18004):1998), y la norma QR-Code model2

(modelo extendido, norma ISO (ISO/IEC18004):2005). La principal diferencia entre estas

es la existencia de diversos métodos de producción que permiten ubicar la simbología sobre

variados sustratos en el model2 siendo este el que se usa por defecto en la actualidad. El

conjunto de caracteres que es posible codificar en una etiqueta QR consiste en:

Numéricos (0-9): Secuencias de3 caracteres se codifican con una longitud de 10 bits. En

teoría es posible almacenar hasta 7089 caracteres numéricos en una etiqueta QR.

Alfanuméricos (0-9A-Z $% * + -. / :): En total 45 caracteres, grupos de dos caracteres se

codifican en una secuencia de 11 bits. Es posible escribir hasta 4296 caracteres en una

etiqueta QR.

Bytes de datos de 8 bits: Hasta 2953 caracteres se pueden almacenar en una etiqueta QR.

110

Caracteres KANJI26

: Un único carácter de kanji se codifica en una secuencia de 13 bits,

en teoría es posible almacenar hasta 1817 en una etiqueta QR.

La codificación QR posee una función de corrección de errores de lectura basada en puntos

negros (bits) sobre un fondo blanco, se han definido cuatro niveles de corrección (también

llamados de redundancia):

Nivel L: 7% o menos errores se pueden corregir (baja).

Nivel M: 15% o menos errores se pueden corregir (media).

Nivel Q: 25% o menos errores se pueden corregir (alta).

Nivel H: 30% o menos errores se pueden corregir (muy alta).

Las partes componentes de una etiqueta QR se dividen en patrones de ajuste, información

de la versión, del formato, y corrección de errores y datos (Figura 2). Los patrones de ajuste

se dividen a su vez en tres componentes: El patrón de posición, cuyo propósito es

determinar el marco de la etiqueta en el entorno donde se encuentra. El patrón de

sincronización, que corresponde a una secuencia binaria 10101010…. y permite al escáner

dimensionar la ubicación de la cuadrícula de filas y columnas. Finalmente el patrón de

alineamiento que permite un ajuste más preciso cuando el tamaño de la etiqueta es grande.

Estos patrones pueden estar distribuidos de forma iterativa según el tamaño total de la

etiqueta.

Figura 2. Elementos componentes de una etiqueta QR.

La versión es un indicador de la cantidad de información almacenada de acuerdo al tamaño,

esta se junta con el nivel de corrección de errores para determinar la capacidad final de una

etiqueta en particular. El formato indica el modo de representación y el agrupamiento de

bits correspondiente a cada modo, los primeros 4 bits representan el conjunto de caracteres

(numérico: 0001, alfanumérico: 0010, bytes de 8 bits: 0100, KANJI: 1000), el restante, de

un total de 26 bits, se dedican a la codificación del agrupamiento, se completa con ceros en

caso de que el codificador tenga una longitud menor que el campo reservado.

Los datos se codifican mediante un código cíclico Reed-Solomon, éste se forma sobre

grupos de bits denominados símbolos. La codificación/decodificación se da entonces con

base a los grupos de símbolos definidos en el estándar, dichos símbolos corresponden a

valores numéricos que a su vez se hacen coincidir con los modos de acuerdo al

agrupamiento establecido.

26

Los kanjis (漢字kanji, literalmente «carácter han») son los caracteres utilizados en la escritura del idioma

japonés, aunque su origen es Chino. Estos se usan en para expresar conceptos, a diferencia del chino, donde

pueden emplearse también como fonemas.

111

7.1 GENERACIÓN DE CÓDIGOS QR

En sus inicios lo códigos QR se utilizaron para registrar repuestos de automóviles e

inventarios. Actualmente los smartphone y otros dispositivos inteligentes decodifican estos

códigos de manera sencilla y económica. Fundamentalmente se usan para escribir

direcciones web donde permiten el ingreso más rápido a una página ya que los usuarios se

libran de la tarea de ingresar las direcciones de manera manual [32]. Existen entidades

dedicadas a la elaboración y distribución de las etiquetas QR de acuerdo al entorno donde

se aplican (industrial comercial, entre otros), para la mayoría de los casos una etiqueta

sencilla, donde se garantice el adecuado contraste entre el fondo y los símbolos es más que

suficiente para la lectura por parte de un dispositivo inteligente. Muchas páginas web

ofrecen el servicio de codificación de manera gratuita, por lo que ese ha sido el método

usado para la generación27

.

Como se mencionó en la sección 6.5.3, la identidad virtual de cada objeto IoT estará

dividida en dos perfiles, uno público, al que cualquier usuario con un dispositivo inteligente

pueda acceder, y uno privado, reservado para el usuario que tiene asociado el objeto como

su propietario. La idea es que cualquier usuario sin registrar tenga la posibilidad de conocer

el estado del objeto IoT (de medición de energía eléctrica o agua potable). En dicho caso la

identidad virtual corresponde a una página llamada “perfil público”. La etiqueta QR

contiene entonces la codificación de la dirección web del perfil público del dispositivo. Una

vez se establece la dirección del perfil publico del dispositivo de acuerdo a su id particular

y la ubicación del servidor en la red, se tiene toda la información de la dirección web, esta

se diligencia en la página generadora de códigos QR (como ejemplo los códigos de la

figura 3); obtenido el código se imprime y coloca al objeto. En el caso de la medición de

agua resulta mucho más práctico que la etiqueta se coloque en o muy cerca del aparato

consumidor; en el caso del objeto de medición de energía, la etiqueta se ha colocado al

frente y al costado de la carcasa protectora del circuito, aunque no es descartable colocarla

en el electrodoméstico si resulta más cómoda la lectura.

Figura 3. Ejemplos de códigos QR generados para el acceso a un servidor local configurado para funcionar en

la web como se describió en la sección 6.6.3.1 (Derecha sensor agua sa_001en nivel M, izquierdo sensor

eléctrico se_002 en nivel L).

27

Existe una gran diversidad de páginas dedicadas a la elaboración de los códigos QR, para este trabajo se

usaron: www.codigos-qr.com, www.qrcode.es, www.qrcode-monkey.com y www.visualead.com

112

7.2 PASOS PARA EL ACCESO AL OBJETO IoT MEDIANTE CÓDIGOS QR.

La secuencia que se debe seguir para que cualquier usuario tenga acceso a la identidad

virtual del objeto IoT es como sigue:

1. El dispositivo debe estar conectado a la red y enviando información al servidor. En

caso de que el dispositivo esté inactivo, será posible ver el perfil, pero este no tendrá

datos de monitoreo de tiempo real.

2. La etiqueta QR debe estar ubicada en un punto donde sea fácilmente accesible al

dispositivo smart del usuario.

3. El dispositivo smart debe tener una conexión a internet, poseer cámara y el software

necesario para leer el código QR28

4. Mediante la cámara, el software hace el escaneo del código QR del objeto IoT,

obteniendo la URL de la identidad virtual y de manera automática lo llevará a dicha

página.

Dependiendo del tipo de dispositivo se cargará uno de los dos perfiles públicos, que puede

ser el del eléctrico o el del agua potable

Los perfiles públicos no permiten observar los consumos históricos (año, mes, día), ni

tampoco el costo del evento. Se considera que esta información es de interés para el usuario

asociado al dispositivo (propietario), por lo que la misma sólo se puede acceder si

previamente se han validado las credenciales del usuario. Con este ejercicio de etiquetado y

acceso por red se ha completado el ejercicio de efectuar una medición de parámetros de

consumo de energía eléctrica y agua potable, con una interacción básica hacia al usuario

haciendo uso de los conceptos asociados a la denominada internet de las cosas.

28

Existen diversidad de aplicaciones para la lectura de códigos QR, para las pruebas efectuadas se usaron las

Apps gratuitas para Android QR Droid y QR BarcodeScaner.

117

8. CONCLUSIONES Y CONSIDERACIONES FUTURAS.

8.1 CONCLUSIONES.

El trabajo desarrollado ha logrado el diseño e implementación de un sistema de medición

de consumo de energía eléctrica y agua potable remoto con interacción al usuario basado en

el concepto "Internet de las cosas" Se han establecido los métodos de medición de energía

eléctrica y agua potable para la lectura de los datos que son capturados y enviados por el

dispositivo de comunicación ESP8266 que ha sido seleccionado. Igualmente se ha diseñado

e implementado una plataforma de software de comunicación y almacenamiento de datos

usando tecnologías afines a las necesidades del Internet de las cosas como Websocket y

Node.js, que aprovechan una comunicación bidireccional, full dúplex y en “tiempo real”.

Finalmente se ha logrado el vínculo entre objetos reales y sus identidades virtuales

mediante etiquetado 2D. El sistema permite la interacción con la identidad virtual desde

cualquier lugar usando dispositivos inteligentes con características disímiles de hardware y

software, aprovechando los recursos de HTML5 y frameworks disponibles para interactuar

directamente desde un navegador de internet, evitando así la instalación de APPs u otros

programas informáticos.

La identidad virtual de los objetos elaborados se ha centrado en los datos colectados, estos

constituyen un registro del historial de consumo en una base de datos, almacenados por

eventos de consumo y que se pueden consultar en la interfaz en intervalos de minutos,

horas, días, meses y años. Estos datos son útiles para conocer los detalles del consumo y

eventualmente tomar decisiones sobre el comportamiento de los aparatos consumidores.

Cada objeto IoT se ha identificado con una key única que brinda acceso a sus datos

particulares en la web. La interfaz HTML es intuitiva y fácil de manejar, adaptándose a

cualquier tipo de resolución de pantalla.

El protocolo Websocket resultó ser muy adecuado para establecer y mantener la

comunicación de datos entre los objetos IoT y la red. Los mensajes estructurados en

formato ASCII podrían modificarse a tramas en binario, reduciendo el tamaño de los datos

a fin de mejorar la velocidad de respuesta en un escenario de alto volumen de conexiones.

Dado que los paquetes Websocket enviados desde el servidor al MCU no se enmascaran (el

protocolo RFC 6455 lo indica de esta manera), se elaboró un protocolo orientado a

conexión sencillo y ligero para enviar los mensajes desde el servidor al MCU de modo que

fuesen fácilmente identificados e interpretados desde la terminal del ESP8266.

Por simplicidad los mensajes que se envían desde cualquier dispositivo se envían con una

misma cabecera Sec-WebSocket-Key. El valor de este campo debe ser un valor de 16 bytes

seleccionados al azar que tiene que haber sido codificado en base 64. Lo indicado y según

el protocolo es generar una Key para cada negociación que se realice con el servidor, es

decir, con cada dispositivo o usuario conectado mediante un Websocket.

118

Los servicios en la nube (IBM, HEROKU) comparten varias características comunes, estos

servicios desconectan el Websocket “por conexión ociosa” después de 1 o 2 minutos de no

presentarse ninguna transacción de información entre el cliente y servidor. Teniendo en

cuenta esta característica los usuarios web envían un mensaje hacia el servidor (ping) para

mantener la conexión abierta.

La identidad virtual Un objeto IoT, del mismo modo que una persona, deberá tener perfiles

de acuerdo a la cantidad y la naturaleza de la información que convenga compartir con

otros dispositivos o usuarios. Se ha logrado hacer un ejercicio simple donde se demuestra la

factibilidad de que un objeto IoT posea un perfil público de fácil acceso a través de códigos

QR. El etiquetado QR en los dispositivos facilita el acceso al dispositivo pues evita que se

tenga que direccionar de forma manual la URL o dirección de la identidad virtual. Los

códigos QR crean el vínculo inicial entre los dispositivos, es deber del diseñador, de

acuerdo a la naturaleza y el propósito de los objetos inteligentes, determinar cuáles son los

alcances y límites en la durabilidad, ubicuidad y perfiles asociados a ese vínculo. Para este

ejercicio no se ha puesto ninguna restricción de tiempo o ubicación una vez establecido el

vínculo, empero, en una IoT con fines prácticos, serán necesarias dichas restricciones a fin

de mantener la adecuada ubicuidad de los sistemas inteligentes tal como se describió en la

sección 1.2.

Poder interactuar remotamente con un dispositivo, en este caso con un simple interruptor,

desde cualquier lugar y con dispositivos de muy variadas prestaciones abre un abanico de

desarrollo para nuevas aplicaciones tanto en hardware como en software, para ambientes

industriales y empresariales, peor especialmente en espacios cotidianos donde la ubicuidad

de estas tecnologías deberán bogar por brindar facilidades para el acceso y el confort de las

personas.

8.2. CONSIDERACIONES FUTURAS.

El presente trabajo ha mostrado la viabilidad del desarrollo de objetos IoT dentro del marco

teórico actual y la disponibilidad de herramientas para el desarrollo y la integración, sin

embargo, existen muchas posibilidades de mejora a fin de lograr un sistema que integre

otros aspectos que no se han tenido en cuenta en el presente trabajo entre ellos:

Calibración: La calibración de los dispositivos resulta más práctica de realizar una vez se

encuentran integrados todos los elementos componentes del objeto IoT, a diferencia del

método empleado donde primero se realizaron las calibraciones y luego integró el

dispositivo. Para la elaboración de un producto terminado a nivel industrial resulta más

conveniente la calibración una vez se encuentren montados todos los componentes.

Enfoque a la industria: Los dispositivos podrían poseer sensores más sofisticados a fin de

efectuar mediciones más precisas según las necesidades. Ambientes industriales pueden

aplicar los conceptos de un internet de los objetos de manera rápida y práctica ya que los

119

sistemas de comunicación, medición y control son fundamentales y se han desarrollado

ampliamente en la industria siendo la IoT un complemento a las herramientas existentes

capaz de minimizar costos, mejorar el flujo de información, aumentar la flexibilidad, entre

otros. Por otra parte, se requiere una mejora en la robustez de los sistemas asociados, en

especial la seguridad de la información y la capacidad de control.

Costos: Una de las mayores limitantes actuales del aprovechamiento masivo de las

tecnologías IoT son los costos asociados al desarrollo, implementación, instalación y puesta

a punto. El desarrollo de esquemas donde los objetos IoT sean muy simples (y por tano

económicos) pero capaces de suministrar información con valor relevante para un usuario o

grupo de usuarios impulsa la masificación de estas tecnologías. Recientemente los

dispositivos hardware requeridos han presentado una caída de precios significativa, y con

ello, mejora la viabilidad económica de proyectos de pequeña y mediana escala enmarcados

en el IoT.

Vínculos para la interacción: En el presente trabajo se ha hecho uso del etiquetado 2D

como elemento de vínculo para la interacción con los objetos IoT. Existen sin embargo toda

una gama de tecnologías que en la actualidad se pueden usar como vínculos, destacando la

denominada “realidad aumentada” que combina la capacidad de los sistemas de

información basados en la realidad virtual con objetos del mundo real, dicho escenario es

la confluencia de la realidad virtual con la denominada “virtualidad incorporada” esbozada

por Mark Weiser [1].

Ubicuidad: Un aspecto fundamental en la interacción entre personas y objetos IoT es

cuándo y cómo se presentan estas interacciones. De acuerdo a la naturaleza del objeto real y

de la capacidad de suministrar información en red, se requiere estructurar los límites y

alcances de estas interacciones. El estudio de la ubicuidad de los objetos debe convertirse

en parte del diseño y puesta a punto de una IoT práctica y segura, a fin de que las

interacciones se presenten cuando y donde se requieren, ya que la identidad virtual, como

un compilado de información, es ubicua en la red y teóricamente disponible en cualquier

momento y lugar.

Seguridad: De acuerdo a la naturaleza de los objetos, se requiere que existan barreras de

seguridad a fin de minimizar o evitar la intrusión de agentes externos en las interacciones y

el flujo de información, así como evitar la exposición no deseada de datos en la red. Dentro

del diseño futuro de plataformas web como la propuesta es requerido considerar la

seguridad de la misma, aprovechando recursos como el protocolo HTTPS que utiliza

canales cifrados basados en SSL/TLS y el uso de URL cifradas. La asociación entre objetos

IoT y su identidad virtual requieren de una variable con lakey de identificación única

incluida en la cabecera HTTP. Esta key debe ser de difícil predicción para evitar robos de

ID y con ello evitar el robo o la suplantación de los objetos IoT.

Escalabilidad: Para el manejo de la gran cantidad de información y volumen de datos que

se producen en la plataforma web se podría utilizar algoritmos predictivos como son las

redes neuronales.

131

9.4. COSTOS

Tabla 2 .Costos dispositivo wifi ($)

Carcasa plug 35000

Chip wifi ESP8266 15000

ADE7753 10000

Sensor de corriente 15000

Fuente AC/DC 30000

Memoria EEPROM 7000

PCB 32000

Varios(Soldadura,

resistencias,condensadores,regul)

25000

Microcontrolador NXP JM128VLH 28000

Triac BTA16 600 2000

MOC 3021 1200

TOTAL $ 200.200

El costo para 3 dispositivos eléctricos es de $600.600

Tabla 3. Costos dispositivo Agua ($)

Chip wifi ESP8266 15000

Microcontrolador NXP QE128 35000

PCB 15000

Batería 10000

varios 5000

Sensor de Flujo 23000

Memoria EEPROM 7000

TOTAL $ 110.000

El costo para 2 dispositivos de agua es de $220.000

El costo total por los 5 dispositivos seriade $ 820.600

Tabla 4 .CostosAlojamiento servidor

Servidor Local con base de datos

(Computador)

$ 1.100.000

Servidor Nube (IBM, Heroku) Gratuito (con limitaciones)

Servidor MYSQL en la nube Gratuito (con limitaciones)

132

Costos adicionales

Costos servicios de internet 60.000 por mes

Librerías Graficas software Gratuitas para uso no comercial

9.5 COMPARACIÓN DE COSTOS CON RESPECTO A PRODUCTOS

COMERCIALES SIMILARES.

En la actualidad existen varios produciros comerciales que ofrecen características de

medición de consumo remoto semejantes a las propuestas en el presente trabajo, las

principales se listan en la tabla 5 y 6.

Tabla 5. Productos comerciales semejantes al sistema de medición de parámetros eléctricos

EMPRESA REFERENCIA PRECIO($)

BELKIN WEMO InsightSwitch 150.000

Bayit Switch Wi-Fi Socket, BH1810 105.000

TP-link HS110 Smart plug 124.000

D-Link DSP-W110 Wi-Fi Smart Plug 105.000

Ankuoo NEO PRO Wi-Fi 110.000

thinkeco TE1010 Modlet Starter Kit 145.000

Samsung SmartThings Smart Plug 170.000

Orvibo S20 Smart Wifi Smart Socket 100.000

Tabla 5. Productos comerciales semejantes al sistema de medición de consumo de agua.

MPRESA REFERENCIA PRECIO($) Gaoxiang 15D 103.540

Jinhua Joint Optoelectronics

Technology

LMSE03 120.000

ANHUI EMI INTELLIGEN LXSYYW (15E ~ 20E) 280.000

MICROM MC100-RF 180.000

TEREN UFM315K 450.000

HIWITS HWC-SVMRV-005 80.000

Los precios varían de acuerdo a la marca y trayectoria de la empresa también de las

diferentes certificaciones y materiales que posea el dispositivo.

133

9. BIBLIOGRAFÍA.

[1] Mark Weiser, "The Computer for the Twenty-First Century". Scientific American

Journal Sep. 1991 pp 94-104. Documento digital disponible en:

http://wiki.daimi.au.dk/pca/_files/weiser-orig.pdf.

[2]Traversat, B; Abdelaziz, M; Doolin, D; Duigou, M; Hugly, J.C; Pouyoul, E. "Project

JXTA-C: enabling a Web of things" Proceedings of the 36th Annual Hawaii International

Conference, System Sciences. 2003. IEEE Conference publications.

[3] Dolin, R.A. "Deploying the Internet of things" Applications and the Internet, 2006.

SAINT 2006. International Symposium on Digital Object Identifier:

10.1109/SAINT.2006.21, 2006, Page(s): 4 pp. – 219. IEEE Conference publications.

[4] Furness, A; Smith L; Sakamura K; “Final Report RFID and the Inclusive Model for the

Internet of Things”, CasagrasProyect - Final Report 2010.

Documento digital disponible en:

http://www.grifs-project.eu/data/File/CASAGRAS%20FinalReport%20%282%29.pdf.

[5] Jordán Pascual Espada, “Diseño de objetos virtuales colaborativos orientados a

servicios en el marco de Internet de las cosas” Tesis Doctoral, Universidad de Oviedo,

2012. Documento digital disponible en:

http://digibuo.uniovi.es/dspace/handle/10651/13140.

[6] Alejandra García Salvatierra "El Internet de las Cosas y los nuevos riesgos para la

privacidad" Tesis de Maestría, Universidad Politécnica de Madrid, Julio de 2012.

Documento digital disponible en: http://oa.upm.es/14543/.

[7]Yinghui Huang, Guanyu Li. "A Semantic Analysis for Internet of Things" Intelligent

Computation Technology and Automation (ICICTA), 2010 International Conference, pp

336-339, 2010. IEEE Conference publications.

[8]Changheng Shao "An Internet of Things Application with Location Perception Based on

IMS" Multimedia Information Networking and Security (MINES), 2011 Third International

Conference on Digital Object Identifier: 10.1109/MINES.2011.92 Publication Year: 2011,

Page(s): 163 – 166.IEEE Conference publications.

[9] CreusSole, Antonio. Instrumentación industrial Séptima edición, Alfaomega -

Marcombo, año 2005. Documento digital disponible en:

https://books.google.com.co/books?id=cV6ZOqQ0ywMC&pg=PA156&lpg=PA156&dq=L

os+medidores+de+turbina

[10] Campos López Omar, Aarón. Informe Técnico Programa de Cómputo Para

Dimensionar Medidores de Flujo por Presión Diferencial en Líquidos, Instituto Politécnico

134

Nacional Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Profesional “Adolfo

López Mateos” Documento digital disponible en:

http://tesis.ipn.mx/jspui/bitstream/123456789/30/1/Tesis%20Omar%20Campos.pdf

[11] Duque, Camilo. Medición de Caudal. Presentaciones de clase de instrumentación en

control, universidad UNEFA. Documento digital disponible en:

http://es.slideshare.net/camilorene/instrumentacin-de-control-clase-8-caudal

[12] Centro de Documentos de EPM Colombia, Criterios para definir el diámetro de la

acometida y el medidor a instalar en urbanizaciones y edificios. Versión 3, marzo de 2011.

Documento digital disponible en:

http://www.epm.com.co/site/Portals/0/centro_de_documentos/clientes_y_usuarios/personas

/aguas/vinculacion/Criterios%20para%20definir%20el%20diametro%20de%20acometida%

20y%20medidor.pdf

[13] Heredia Londoño, Diana Marcela, Desarrollo de una guíaenfocada a medidores de

energía y conexiones de medidores. Documento digital disponible en:

http://repositorio.utp.edu.co/dspace/bitstream/11059/3223/1/621374H542.pdf

[14] Codensa, “Documentos técnicos, generalidades capítulo 7”.Documento digital

disponible en:

http://www.codensa.com.co/documentos/3_17_2010_7_39_20_AM_GENERALIDADES

%207.4.pdf.

[15] Allegro Microsystems, ACS714: Automotive Grade, Fully Integrated, Hall Effect-

Based Linear Current Sensor IC. Documento digital disponible en:

https://www.pololu.com/file/download/ACS714.pdf?file_id=0J196

[16] Analog Devices, ADE7753: Single-Phase Multifunction Metering IC with di/dt Sensor

Interface. Documento digital disponible en:

http://www.analog.com/media/en/technical-documentation/data-sheets/ADE7753.pdf

[17] Jin-Shyan Lee, Yu-Wei Su, and Chung-Chou Shen “A Comparative Study of Wireless

Protocols: Bluetooth, UWB, ZigBee, and Wi-Fi” Information & Communications Research

Labs Industrial Technology Research Institute (ITRI) Hsinchu, Taiwan

[email protected]. IEEE Conference Publications.

[18] Zhou Ying ; Li Hongsheng "Design of New Low Power Loss Nonmagnetic Water

Meter" Electronic Measurement and Instruments”, 2007. ICEMI '07. 8th International

Conference on Digital Object Identifier: 10.1109/ICEMI.2007.4350461. 2007, Páginas: 1-

356 - 1-359. IEEE Conference Publications.

[19] Descripción de familias del ESP8266. Documento digital disponible en:

http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

[20] Espressif, ESP8266EX: Eespecificacion, think connect.Documento digital disponible

en: http://espressif.com/products/hardware/esp8266ex/resources

135

[21] Introducción a los Websockets. Documento digital disponible en:

http://www.html5rocks.com/es/tutorials/websockets/basics/

[22] Node.js y Websockets. Documento digital disponible en:

https://manuais.iessanclemente.net/index.php/Node.js_y_Websockets

[23] Descripción de API’s de aplicaciones web con HTML5. Documento digital disponible

en:

https://html.spec.whatwg.org/multipage/comms.html#network

[24] A. Melnikov, Internet Engineering Task Force, RFC6455: The WebSocket Protocol.

2011. Documento digital disponible en:

https://www.rfc-editor.org/rfc/rfc6455.txt

[25] Arturo Muñoz de la Torre Monzón, Introducción a Node.JS a través de Koans.

Escuela Técnica Superior de Ingenieros de Telecomunicación de la Universidad Politécnica

de Madrid.

[26] IBM developer Works, Introducción a Node.js. Biblioteca técnica. Documento digital

disponible en:

http://www.ibm.com/developerworks/ssa/opensource/library/os-nodejs/

[27] Alejandro L. Veiga. Sistemas de tiempo real. Documento digital disponible en:

http://www.electro.fisica.unlp.edu.ar/temas/p7/RTS-1.html

[28] Brian Cantrill. Instrumenting the real-time web: Node.js in production. Documento

digital disponible en:

http://www.slideshare.net/bcantrill/instrumenting-the-realtime-web-nodejs-in-production

[29] E. Marcote, «Responsive Web Design,» [En línea]. Documento digital disponible en:

http://alistapart.com/article/responsive-web-design

[30] Esther Labrada Martínez y Cristina Salgado Ceballos, DISEÑO WEB ADAPTATIVO

O RESPONSIVO Revista Digital Universitaria–UNAM

http://www.revista.unam.mx/vol.14/num1/art07/art07.pdf

[31] Adrián Alonso Vega, Responsive Web Design: Interfaces Web, Adaptables al

dispositivo empleando HTML5 y CSS3, UNIVERSIDAD DE ALCALÁ Escuela

Politécnica Superior Grado en Ingeniería Informática. Documento digital disponible en:

http://dspace.uah.es/dspace/bitstream/handle/10017/19972/Memoria.pdf?sequence=1

[32] Jorge Cueva Estrada, Jaime Cevallos Herrera, Estudio del código QR para el

desarrollo de los planes de marketing y publicidad en las empresas del sector comercial de

la ciudad de Guayaquil, Universidad politécnica salesiana sede Guayaquil, Maestría de

administración de empresas.

136

[33] Lu Tan; Neng Wang "Future internet: The Internet of Things" Advanced Computer

Theory and Engineering (ICACTE), 2010 3rd International Conference on Digital Object

Identifier: 10.1109/ICACTE.2010.5579543. 2010, Páginas: V5-376 - V5-380. Future

internet: The Internet of Things

[34] Anthony Furness, "CASAGRAS and The Internet of Things" European Centre of

Excellence for AIDC, documentos de trabajo, 2008.

Documento digital disponible en: docbox.etsi.org/.../CERP20081008/CERP7%20CAS.

[35] Ferrada Bautista, Manuel y Silva Peñaloza, Mayra del pilar. Medición digital de la

potencia activa para un sistema de calentamiento eléctrico monofásico. Universidad

Industrial de Santander, 2005. Tesis de grado disponible en:

http://repositorio.uis.edu.co/jspui/bitstream/123456789/3077/2/116339.pdf

[36] Davila frias, Alex. Diseño y construcción de un prototipo para medición y transmisión

inalámbrica del consumo de energía eléctrica de un sistema monofásico bifilar. Escuela

Politécnica Nacional de Quito, 2006. Tesis de grado disponible en:

http://bibdigital.epn.edu.ec/

[37] Hernández González, Guillermo Enrique. Diseño y construcción de un sistema

integrado de medición de energía monofásico de uso residencial (S.I.M.E.M.) Versión 2.

Universidad Pontificia Bolivariana, 2013. Tesis de grado disponible en:

https://repository.upb.edu.co/handle/123456789/195

[38] Freescale Semiconductor. Data Sheet: Technical Data MCF51JM128 ColdFire

Microcontroller. Documento digital disponible en:

https://www.nxp.com/files/32bit/doc/data_sheet/MCF51JM128.pdf

[39] Freescale Semiconductor. Data Sheet: Technical Data MCF51QE128 Series.

Documento digital disponible en:

http://cache.nxp.com/files/32bit/doc/data_sheet/MCF51QE128.pdf?pspll=1

[40] Microchip, 512K I2C Serial EEPROM Datasheet. Documento digital disponible en:

http://ww1.microchip.com/downloads/en/DeviceDoc/21754M.pdf