Académique Documents
Professionnel Documents
Culture Documents
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
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.
1
II. PLANTEAMIENTO DEL PROBLEMA.
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
2
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].
3
IV. OBJETIVO GENERAL.
V. OBJETIVOS ESPECÍFICOS.
4
VI. JUSTIFICACIÓN.
5
VII. ALCANCES Y LIMITACIONES.
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.
6
1. INTERNET DE LAS COSAS
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
7
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).
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.
8
capaces de comunicarse a través de una red, dicha zona de interfaz física cumple
con las condiciones generales de un sistema ubicuo.
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.
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
9
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.
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.
10
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).
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).
11
Figura 4. Esquema general de una interacción del tipo M2M local.
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).
12
2. MÉTODO DE MEDICIÓN DE CONSUMO DE AGUA.
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.
13
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.
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%).
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.
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).
15
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).
Relación Precisión Presión Pérdida
Temperatura Costo
Tipo de en toda Escala Máxima de Servicio materiales Ventajas desventajas
máxima °C relativo
Caudal la escala (bar) carga**
No Alta dP, fluidos
Placa 3:1 1-2 % 400 500 20 m Líq/Vapor/Gas Metal/plástico Bajo Simple, económico
lineal limpios
0.9-1.5 No Alta dP, fluidos
Tobera 3:1 400 500 16 m Líq/Vapor/Gas Metal/plástico Medio Simple, preciso
% lineal limpios, caro
Alta dP, fluidos
No Muy
Tubo Ventury 3:1 0.75 % 400 500 4m Líq/Vapor/Gas Metal/plástico Preciso, poca dP* limpios, muy
lineal alto
caro
No
Tuvo Pitot 3:1 1.5-4 % 400 500 - Líq/Vapor/Gas Metal/plástico Bajo Simple, económico Poca precisión
lineal
Tubo No
3:1 1% 400 500 - Líq/Vapor/Gas Metal/plástico Bajo Simple, económico Poca precisión
Annubar lineal
Golpe de ariete
Rotámetro 10:1 1-2 % Lineal 400 250 5m Líq/Vapor/Gas Vidrio/Cerámica Bajo Mayor precisión
puede dañarlo
Voluminoso,
Vertedero 3:1 1-2 % Especial Atmósfera 60 - Líquidos Metal Bajo coste medio
caro
Difícil de
Preciso, margen
Turbina 15:1 0.3 % Lineal 200 250 0.7 b Líquidos/Gas Metal Alto calibrar, fluidos
amplio
limpios
Caro, difícil de
cualquier líquido, calibrar,
Sónico 20:1 2% Lineal 100 250 nula Líquidos Metal/plástico Alto
poca dP sensible a la
densidad
Placa de No
10:1 1% 100 400 0.5 b Líquidos Metal Medio Fluidos viscosos Poca capacidad
impacto lineal
Caro, sólo para
Magnético 100:1 0.5-1 % Lineal 20-200 150 nula Líquidos Teflón/Vidrio Alto poca dP líquidos
conductores
Disco
5:1 1-2 % Lineal 10-150 120 0.3 m Líquidos Metal Bajo barato Par pequeño
oscilante
Pistón 0.2-0.5 Líquidos Viscosos,
5:1 Lineal 25 150 10 b Líquidos Metal Medio Alta dP
oscilante % corrosivos
Pistón Voluminoso,
5:1 0,20% Lineal 25 100 0.2 m Líquidos Metal Alto Preciso
alternativo caro, alta dP
Poca precisión
Cicloidal 10:1 1% Lineal 100 150 0.3 b Líquidos/Gas Metal/plástico Medio poca dP en caudales
bajos
Margen
Birrotor 5:1 0.2% Lineal 100 60-200 0,4 b Líquidos Metal/plástico Medio Preciso
pequeño
No afecta la
Oval 10:1 0.5% Lineal 100 180 1b Líquidos Metal/plástico Medio Alta dP
viscosidad
Paredes Voluminoso,
10:1 0.3% Lineal - - - Gas Metal/plástico Medio Preciso
deformables alta dP
margen amplio,
Torbellino 100:1 0.2% Lineal 50 100 0.4 b Líquidos/Gas Metal/plástico Medio Caro
poca dP
soprota Insensible a
Vórtex 10:1 1% Lineal 50 400 - Líquidos/Gas Metal/plástico Medio
vibraciones bajo caudal
Caro, solo
Ideal para
Oscilante 10:1 0.5% Lineal 100 65 - Líquidos/Gas Metal/plástico Medio gases, bajo
propano/butano
caudal
Caro, Margen
Térmico 10:1 1% Lineal 100 65 5m Líquidos/Gas Metal/plástico Alto poca dP
pequeño
Caro, Margen
Axial 5:1 1% Lineal 100 120 0.2 b Líquidos/Gas Metal/plástico Alto poca dP
pequeño
16
2.3. SELECCIÓN DEL TIPO DE DISPOSITIVO.
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.
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.
17
operación general de este tipo de medidor. Los transductores que típicamente se aplican
para obtener una señal eléctrica son:
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.
1
Formación de cavidades llenas de vapor o de gas en el seno de un líquido en movimiento.
18
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).
19
2.4.3. ERROR DE MEDICIÓN.
𝑄𝑖𝑛𝑑𝑖𝑐𝑎𝑑𝑜 − 𝑄𝑟𝑒𝑎𝑙
𝐸= 100% (1)
𝑄𝑟𝑒𝑎𝑙
0,2
Error medida (%)
0,1
0
0 20 40 60 80 100
Porcentaje de Escala (%)
Figura 4. Curva del comportamiento típico del error de un medidor de paletas deslizantes.
• 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.
•Medida volumétrica cuya capacidad debe ser igual o mayor al volumen colectado al flujo
máximo del medidor en un minuto.
2
Información tomada de la pagina del fabricante y traducida al español, disponible en
https://www.adafruit.com/products/828
21
•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.
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.
22
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.
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 ≤ 𝑝 < 52
𝐹 𝑝 = 3.1𝑝 + 258,8 𝑠𝑖 52 ≤ 𝑝 < 62 (2)
7.111𝑝 + 10.11 𝑠𝑖 𝑝 ≥ 62
23
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).
Tiempo
Medida
de Total vol/pulso pulsos/seg
Volumétrica CC/seg litros/min litros/hora
llenado Pulsos (CC) (Hz)
(L)
(seg)
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.
24
500
400
300
Flujo L/h
200
100
0
0 10
30 20 40 50 60 70
Frecuencia (Hz)
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).
500
400
Calibración
Flujo L/h
300
Lineal 1
200 Lineal 2
Lineal 3
100
Lineal 4
0
0 10 20 30 40 50 60 70 80
Frecuencia (Hz)
25
3. MÉTODO DE MEDICIÓN DE CONSUMO DE ENERGÍA ELÉCTRICA.
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.
26
- 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:
De acuerdo con el tipo de medición: Según la norma Colombiana NTC 5019 se efectúan
tres tipos de medición:
27
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).
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.
29
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.
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.
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.
30
3.3. SELECCIÓN DEL TIPO DE DISPOSITIVO.
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
31
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 2. Diagrama típico de conexión del IC ACS714 (tomado de la hoja de datos del fabricante).
32
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.
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.
34
3.6.2. MONTAJE DEL CIRCUITO ADE7753.
35
±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.
𝑅2 𝑉𝑝 𝑉𝑝
𝑉𝑚 = 𝑅1 = 𝑅2 −1
𝑅1 + 𝑅2 𝑉𝑚
Reemplazando valores:
187
𝑅1 = 1000 − 1 = 373 𝐾Ω
0.5
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).
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Ω:
36
𝑅1 1000
𝑅2 = 𝑉𝑝 = 0.6 = 5000
−1 − 1
𝑉𝑚 0.5
Figura 6. Circuito para el acople del Sensor ACS714 con en el ADC del ADE7753.
1
𝑉0 𝑠 𝑅𝐶 1
= 2 1 2
2 𝑑𝑜𝑛𝑑𝑒 𝜔02 =
𝑉𝑖 𝑠 + 𝑠𝜔𝐵 + 𝜔0 𝐶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
𝐶1 = = = 13,79 µ𝐹
𝜔02 𝐶2 𝑅1 𝑅2 120𝜋 0.51
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:
1 1
𝜔02 = = ∗ 106 𝑑𝑒 𝑑𝑜𝑛𝑑𝑒 𝜔0 = 70.475 𝐻𝑧
𝐶1 𝐶2 𝑅1 𝑅2 5.1
Que es un valor cercano a los 60 Hz de la línea, el ancho de banda queda entonces como:
𝑅2 𝑅 𝑅
+ 2+ 1 6.151 ∗ 1010
𝐶2 𝐶1 𝐶2
𝜔𝐵 = = = 12060.8, 𝑑𝑒 𝑑𝑜𝑛𝑑𝑒 𝑓𝐵 = 1919.5 𝐻𝑧
𝑅1 𝑅2 5.1 ∗ 106
37
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.
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:
38
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.
Tabla 2.Pruebas y colecta de datos de medición del ADE7753 con diferentes cargas.
Carga A (RMS) V (RMS) W IRMS VRMS LAENERGY
0W 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
39
3.6.3.2. Equivalencia de valores obtenidos.
A (RMS) W
1,8 250
y = 0,0000017774x - 0,0251367404 y = 0,0221137745x - 1,7760384888
1,6
1,4 200
1,2
150
1
0,8
100
0,6
0,4 50
0,2
0 0
0 300000 600000 900000 0 3000 6000 9000
V (RMS)
122
y = 0,0000577011x + 40,1217936204
121
120
119
118
117
116
115
1300000 1330000 1360000 1390000
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:
40
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.
.
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.
41
4. MÉTODO DE COMUNICACIÓN DE DISPOSITIVOS
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
42
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
868/915 MHz; 2.4
Bandas de frecuencia 2.4 GHz 3.1-10.6 GHz 2.4 GHz; 5 GHz
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)
500 MHz - 7.5
Ancho de banda del canal 1 MHz 0.3/0.6 MHz; 2 MHz 22 MHz
GHz
BPSK, QPSK,
Tipo de modulación GFSK BPSK, QPSK BPSK (+ ASK), O-QPSK COFDM, CCK, M-
QAM
DS-UWB, MB-
Extensión de modulación FHSS DSSS DSSS, CCK, OFDM
OFDM
Selección dinámica
Saltos
de frecuencia,
adaptables Saltos adaptables Selección dinámica de
Mecanismo de coexistencia control de potencia
de de frecuencia Frecuencia
de transmisión
frecuencia
(802.1 1 h)
Celda básica Piconet Piconet Estrella BSS
Ampliación de la celda Árbol de clúster,
Scatternet Igual a Igual (P2P) ESS
básica Mesh
Número de nodos de la
8 8 > 65000 2007
celda
Cifrado de clave Cifrado de flujo RC4
Cifrado de Cifrado de clave AES
Encriptación AES (CTR, modo (WEP), Cifrado de
flujo EQ (CTR, modo contador)
contador) clave AES
Secreto CBC-MAC (ext. of
Autentificación CBC-MAC (CCM) WPA2 (802.11i)
compartido CCM)
Protección de datos 16-bit CRC 32-bit CRC 16-bit CRC 32-bit CRC
802.11 hasta 10
Wifi Shield Arduino WEP, WPA2 SPI hasta 25MHZ 77
b/g Mbps
WEP, WPA,
WiFiShield - 802.11 hasta 11
SparkFun WPA2, AES, SPI hasta 16MHZ 40
CC3000 b/g Mbps
TKIP
hasta 54
RN-XV 802.11 WEP, WPA, UART hasta 464
SparkFun Mbps en 35
WiFly b/g WPA2, PSK Kbps
802.11g
hasta 54
802.11 SPI, UART, I2C
ESP8266 Espressif Mbps en WPA,WPA2 7
b/g/n hasta 100 KHz
802.11g
3
Se denomina MIPS (siglas de Microprocessor without Interlocked Pipeline Stages) a toda una familia de
microprocesadores de arquitectura RISC desarrollados por MIPS Technologies.
44
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.
4.3.1 CARACTERÍSTICAS.
45
Figura 2. Diferentes presentaciones del módulo ESP8266
4.3.3. MEMORIA.
46
Tabla 3. Entrada de corriente al módulo ESP8266-01 de acuerdo a los modos de operación.
Modo Típico Unidades
4
Transmitir 802.11b, DSSS 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
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
4
DSSS: 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.
6
OFDM: 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.
7
MCS: 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.
8
DTIM: 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.
47
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.
48
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).
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.
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.
49
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.
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
50
Figura 6. Escritura del nuevo firmware del ESP8266-01. b) Proceso de grabación concluido.
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>
<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.
51
<CR><LF>ERROR<CR><LF>
A continuación se listan y explican las funciones que se han usado para la implementación
específica de este proyecto:
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.
Una vez ejecutado retorna "OK" si la conexión es exitosa o "ERROR" en caso de que
fallase la conexión.
15
Listado disponible en http://www.espressif.com/sites/default/files/4b-
esp8266_at_command_examples_en_v1.3.pdf
52
+CWLAP: <ecn>,<ssid>,<rssi>,<mac>
donde:
Al final del listado muestra "OK" o "ERROR" en caso de presentarse algún problema en la
búsqueda.
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
53
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).
4.4. CONCLUSIONES.
54
5. INTEGRACIÓN DE ELEMENTOS Y ELABORACIÓN DE OBJETOS IoT.
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:
55
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.
- 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).
56
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.
57
5.3. CARACTERÍSTICAS DE LA MEMORIA.
Figura 2. Mapa de asignación de memoria de la EEPROM para los objetos IoT propuestos.
58
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
59
Figura 3. Plano del circuito del dispositivo de medición de consumo de agua.
60
61
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.
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).
62
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.
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.
63
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.
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á
64
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.
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:
65
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.
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.
66
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.
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.
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
69
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.
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).
70
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.
71
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.
72
5.5.4.1 ciclo de medición de consumo de agua.
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.
73
5.5.4.2 ciclo de medición de parámetros eléctricos.
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.
74
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:
{"𝒊𝒅": "𝒔𝒂_𝟎𝟎𝟏", "𝒔𝒆": 𝟒𝟗, "𝒕𝒅": 𝟏, "𝒄𝒐": 𝟏𝟎𝟎, "𝒇𝒆": "𝟐𝟎𝟏𝟔 − 𝟎𝟓 − 𝟏𝟒𝑻𝟐𝟎: 𝟒𝟕: 𝟑𝟑"}
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.
{"𝒊𝒅": "𝒔𝒂_𝟎𝟎𝟎𝟏", "𝒔𝒆": 𝟒𝟗, "𝒕𝒅": 𝟐𝟓𝟓, "𝒇𝒆": "𝟐𝟎𝟏𝟔 − 𝟎𝟓 − 𝟏𝟒𝑻𝟐𝟎: 𝟒𝟕: 𝟑𝟎",
"𝒅𝒖𝒓": "𝟎. 𝟎. 𝟎. 𝟏", "𝒕𝒑𝟏": "𝟎. 𝟎. 𝟎. 𝟏", 𝒕𝒑𝟐": "𝟎. 𝟎. 𝟎. 𝟓", 𝒕𝒑𝟑": "𝟎. 𝟎. 𝟎. 𝟏", 𝒕𝒑𝟒": "𝟎. 𝟎. 𝟎. 𝟎"}
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
{"𝒊𝒅": "𝒔𝒆_𝟎𝟎𝟐", "𝒔𝒆": 𝟒𝟗, "𝒕𝒅": 𝟑𝟐, "𝒗𝒐": "𝟎𝒙𝟎𝟎𝟏𝟔𝑨𝑭𝑩𝟖", "𝒄𝒐": "𝟎𝒙𝟎𝟎𝟎𝟏𝟓𝟏𝑪𝑫", "𝒑𝒐"
: "𝟎𝒙𝟎𝟎𝟎𝟎𝟎𝟐𝟗𝟎", "𝒔𝒘": "𝒐𝒏", "𝒇𝒆": "𝟐𝟎𝟏𝟔 − 𝟎𝟕 − 𝟐𝟖𝑻𝟎𝟔: 𝟎𝟒: 𝟒𝟖"}
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.
76
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:
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.
77
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.
78
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.
79
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:
Figura 1. Diagrama entidad-relación de la base de datos necesaria para el almacenamiento de los datos de los
objetos IoT propuestos.
80
6.1. BASE DE DATOS.
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.
81
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).
82
6.2. WEBSOCKET.
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.
83
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:
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:
84
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.
En la tabla 1 se muestra la estructura de una trama Websocket donde los datos enviados
deben guardar el orden establecido.
Para abrir una conexión Websocket (Javascript), se debe crear el constructor del objeto
Websocket:
𝑣𝑎𝑟 𝑊𝑒𝑏𝑠𝑜𝑐𝑘𝑒𝑡 = 𝑛𝑒𝑤 𝑊𝑒𝑏𝑆𝑜𝑐𝑘𝑒𝑡(𝑤𝑠: 𝑢𝑟𝑙, [𝑝𝑟𝑜𝑡𝑜𝑐𝑜𝑙𝑜]);
85
Websocket. También hay wss: para conexiones Websocket seguras, de la misma forma que
se utiliza https: para las conexiones HTTP seguras.
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.
86
6.3 DISEÑO BACK-END (NODE.JS).
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.
21
Las aplicaciones monopágina son aquellas que se presentan en una única página web, emulando a las
aplicaciones de escritorio [25].
87
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.
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].
88
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.
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.
90
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. 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.
91
6.5. FUNCIONAMIENTO DEL 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.
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.
92
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í:
93
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.
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 “
94
- "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.
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.
95
Figura 9 Atención de evento close del objeto Websocket.
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.
Al ingresar en la plataforma desde la página principal (key inicio), el usuario tiene dos
opciones para registrarse:
96
Figura 10. Flujo del inicio de sesión de 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:
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:
97
- 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.
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:
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.
23
https://nodejs.org/about/
98
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.
99
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.
100
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.
101
6.6.3. PRUEBAS SERVIDOR WEB.
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”:
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',
103
6.6.3.1. Servidor en Heroku.
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):
gitinit
herokugit:remote -a udistrital
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).
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/
104
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.
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.
105
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).
106
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
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.
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.
107
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.
108
7. ETIQUETADO E INTERACCIÓN DE OBJETOS IoT
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.
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.
109
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.
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.
110
7.1 GENERACIÓN DE CÓDIGOS QR
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
111
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:
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.
112
8. CONCLUSIONES Y CONSIDERACIONES FUTURAS.
8.1 CONCLUSIONES.
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.
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.
117
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.
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
118
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.
119
9.4. COSTOS
131
Costos adicionales
132
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.
[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.
[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.
[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
133
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
[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
jinshyan_lee@itri.org.tw. 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.
[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
[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.
135
[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/
[40] Microchip, 512K I2C Serial EEPROM Datasheet. Documento digital disponible en:
http://ww1.microchip.com/downloads/en/DeviceDoc/21754M.pdf
136