Professional Documents
Culture Documents
ResumenGracias al avance de las nuevas tecnologas de la ciudades inteligentes, mejoras en la prestacin de servicios de
informacin y las comunicaciones, las ciudades permiten mejorar su salud, entre otras. Existen adems una extensa variedad de
sostenimiento y las personas incrementar su calidad de vida. El Internet
de las Cosas (IoT, Internet of Things) es un paradigma que ha estado en dispositivos como por ejemplo mdulos, chips, sensores,
auge durante los ltimos aos y pretende consolidarse como una de las actuadores, entre otros, que estn comenzando a ser
tecnologas ms revolucionarias, con mayor proyeccin y que producidos y vendidos a gran escala, adems de
cambiaran al planeta y el estilo de vida de las personas. Debido a esa implementados en dominios como los hogares inteligentes,
motivacin se plantea una alternativa de implementacin de un sistema
domtico centralizado y orientado a plataformas de IoT. Este sistema, solo por dar un ejemplo.
basado en componentes flexibles, fciles de conseguir, y econmicos, El auge de IoT est dado principalmente por la gran
permite al usuario gestionar su hogar con una interfaz web responsiva cantidad de dispositivos que han salido al mercado, como por
desde cualquier parte del mundo gracias a internet. El sistema
propuesto consiste en un conjunto de mdulos programados, sensores,
ejemplo los telfonos inteligentes, relojes inteligentes, y
actuadores y una plataforma IoT orientada a la nube llamada bandas inteligentes, que hacen que la comunicacin entre
Thingspeak, que proveen al usuario de herramientas como botones de cualquier cosa y el usuario sea posible. [1]. Segn [16], las
control, histogramas y lectura de sensores en tiempo real, es decir, un tecnologas alrededor de IoT, se encuentran en el nivel ms
panel de control el cal es accesible por medio de un servicio web.
alto del hiper ciclo de Gartner (Ver Figura 1), entre las que se
Palabras Claves Actuadores, casa inteligente, Domtica, ESP8266, destacan las tecnologas vestibles, los vehculos autnomos,
Internet de las Cosas , Sensores, Thingspeak. las plataformas para IoT, y los hogares conectados. Lo
anterior da una visin de la importancia y relevancia que
I. INTRODUCCIN tiene estas tecnologas en empresas tecnolgicas, organismos
de estandarizacin, investigadores y desarrolladores de
Internet de las Cosas (IoT - Internet of Things) es un aplicaciones.
concepto donde a cualquier objeto fsico, se le puede aplicar
conectividad a internet e interactuar con un usuario (M2C
Machine To Client) u otra cosa (M2M Machine to
Machine) [1]. El paradigma del Internet de las Cosas est en
auge gracias al avance acelerado de la tecnologa, a razn de
esto se han estado creando nuevos dispositivos, mdulos,
sensores, actuadores, plataformas y chips que permiten
facilitar la creacin de nuevos proyectos sin importar el
dominio de aplicacin, adems del nuevo hardware que se ha
estado produciendo, el incremento exponencial de gran
cantidad de cosas a la nube, generan variedad de datos que
necesitan ser procesados y por lo tanto se pueden integrar los
paradigmas de Big Data y Analytics, que le dan un mayor
valor a esta tecnologa.
La importancia del Internet de las Cosas, hoy en da,
radica en la necesidad de tener control sobre casi cualquier Fig 1. Tecnologas emergentes en el 2015 segn Gartner. Tomado de [16].
cosa a la que pueda aplicarse conexin a internet, donde el
usuario pueda gestionarlo, observarlo o que ste se integre e Segn Cisco IBSG (Internet Business Solutions Group)
interacte con otra cosa para obtener datos relevantes por la cantidad de dispositivos conectados a internet para el 2015
medio de sensores especiales y que puedan facilitar tomar es de 25.000 millones y se espera que en los prximos cinco
decisiones por parte del usuario de acuerdo al dominio donde aos se duplique, superando ampliamente el total de la
se implemente la solucin. La ventaja de poder controlar poblacin mundial [2]. Adems, se tienen proyectos
algn dispositivo o ver el estado de un sensor remotamente importantes, desde el monitoreo constante de animales, en el
por medio de internet, ha hecho que el IoT crezca, no solo en cual se controla su salud y los distintos movimientos;
diversos proyectos de investigacin, sino tambin en aplicaciones para agricultura en el cual se implementan redes
produccin de hardware y en la implantacin de sistemas de sensores inalmbricos (WSN) para controlar el riego,
domticos, automatizacin de empresas, implementacin de crecimiento de cultivos, correcto uso del abono en la tierra,
331
Memorias de la Dcima Quinta Conferencia Iberoamericana en Sistemas, Ciberntica e Informtica (CISCI 2016)
332
Memorias de la Dcima Quinta Conferencia Iberoamericana en Sistemas, Ciberntica e Informtica (CISCI 2016)
C. Plataforma IoT con ESP8266 Para poder gestionar el mdulo ESP8266, se hizo
necesario el uso de un programador FTDI a USB. Este
En este proyecto se muestra cmo crear y configurar un programador, conectado al mdulo y a un computador,
tablero independiente con simples comandos, para que permite mediante un IDE (Integrated Development
mediante una red WiFi, se puedan enviar datos ambientales a Enviroment) llamado ESPlorer [15], carga y compila el script
internet y recibir el control para encender un interruptor. El LUA al mdulo, adems gestiona pequeos archivos y
proyecto el cul es de bajo costo (menos de $20 US) enva configuraciones propias del mdulo sin necesidad de usar
lecturas de humedad y temperatura de un sensor DHT11 por comandos complejos como los AT.
medio del protocolo MQTT (Message Queue Telemetry Luego se cre el canal que soporta los datos en
Transport)[14] a travs de la plataforma Thingspeak. Thingspeak. Este canal provee un servicio web RESTful
Tambin escucha los mensajes encolados que le llegan por el empleando el mtodo HTTP GET, que permite enviar datos a
protocolo MQTT y activa o desactiva un rel que est ese canal y almacenarlos. Este servicio tiene como mnimo
conectado al mdulo ESP8266. dos parmetros: el parmetro key el cual se refiere a un API
Un mdulo ESP-01 se utiliz para la realizacin del Key que Thingspeak provee al momento de crear el canal; y
proyecto, el cal tiene slo dos puertos GPIO. Adems que el el campo field1, el cual es el dato que se pretende
ESP-01 cuenta con un firmware independiente y puede almacenar. El canal permite aadir ms campos, por lo tanto
comunicarse con una sistema Arduino a travs del puerto al servicio web se aade el nmero de parmetros fieldN. A
UART. Para un futuro ellos esperan incluir un mdulo continuacin se observa un ejemplo del consumo del recurso
ESP8266 conectado a Aduino con pantalla LCD, adems de por medio de la URI:
un sensor de detencin de movimiento, ms rels y otros
sensores. Aunque no tienen un sistema de panel de control https://api.thingspeak.com/update?key=CUU3AAPZGW
web, proponen desarrollar una aplicacin Android para X7J4DA&field1=25&field2=34
controlar la tarjeta a travs de Thingspeak o MQTT. [13]
Por otro lado, Thingspeak provee un servicio que permite
IV. DESARROLLO obtener el ltimo dato insertado en un canal. Este los retorna
Dentro del marco del proyecto se establecieron dos usando el formato JSON (Java Script Object Notation) con la
requisitos principales. El primero: que por medio de un panel fecha y hora del dato insertado, el Id del dato y los datos en
de control, mediante un navegador web o mvil, el usuario s. A continuacin se presenta un ejemplo de esta salida:
pueda tener control sobre los actuadores y obtener la
http://api.thingspeak.com/channels/42252/feeds/last
informacin de los sensores que se usan en el proyecto; y
como segundo requisito: que los datos generados por los {
sensores y actuadores puedan ser gestionados por una "created_at":"2015-07-13T02:51:02Z",
plataforma IoT en la nube, lo cual implica el almacenamiento "entry_id":59,
de esos datos, la publicacin de estos por medio de un "field1":"25",
"field2":"39"
servicio web dado por un API de tipo RESTful y la }
posibilidad de ver un histograma con informacin relevante.
Se contempl adems que el sistema fuera fcil de utilizar por Teniendo los servicios de Thingspeak disponibles, se
parte del usuario, eficiente en su mecanismo de transmisin y procedi a programar un script que permita la lectura de los
recepcin de datos desde la nube, escalable y sencillo de sensores, el control de los actuadores, la configuracin de la
configurar. conexin WiFi y la integracin con Thingspeak como lo
Para el desarrollo del proyecto, se decidi usar una muestra la figura 2.
plataforma basada en Arduino UNO R3 [17], la cual soporto
la gestin de los sensores y la lgica general detrs de estos.
Parte de esta solucin, se bas en emplear un mdulo WiFi
que integrado a Arduino haca posible la comunicacin con la
plataforma de Thingspeak. Al no tener la posibilidad de
obtener un Wifi Shield para Arduino, se us un pequeo
mdulo WiFi con referencia ESP8266. Este mdulo, es
econmico, de pequeo tamao y adecuado para integrarlo a
un proyecto.
Debido a la complejidad del script al momento de integrar
los mdulos a Arduino por la gran cantidad de comandos AT
que se enviaban a este por medio de los pines seriales, se
tom la decisin de buscar otra solucin para la integracin
de los sensores con internet.
El mdulo ESP8266, por defecto trae un firmware el cal
permite que al mdulo se le realice la configuracin por
medio de comandos AT. Para efectos ms prcticos se us un
nuevo firmware llamado NODEMCU [7] el cal permite que
el mdulo sea programado mediante un script LUA y que Fig 2. Arquitectura General del Sistema desarrollado
adems facilit la gestin de los dos pines GPIO, los cuales
se conectaron a los sensores o actuadores. Este script es
ejecutado directamente en el mdulo sin necesidad de un El mdulo ESP8266 provee 2 pines GPIO a los cuales se
controlador externo. puede conectar dos sensores o actuadores. Al pin GPIO 0 (pin
3) se conect un LED y al GPIO 2 (pin 4) se conect un
333
Memorias de la Dcima Quinta Conferencia Iberoamericana en Sistemas, Ciberntica e Informtica (CISCI 2016)
conn=net.createConnection(net.TCP, 0)
-- Pines conn:on("receive", function(conn, payload) end)
local pinDHT = 4 -- GPIO 2 conn:connect(80,"api.thingspeak.com")
local pinLED = 3 -- GPIO 0 conn:on("connection", function(conn, payload)
conn:send("GET/update?key="..api_key..parametros
-- Modo Pines .." HTTP/1.1\r\n")
gpio.mode(pinDHT, gpio.INPUT) conn:send("Host: api.thingspeak.com\r\n")
gpio.mode(pinLED, gpio.OUTPUT) conn:send("Connection: keep-alive\r\n")
conn:send("Accept: */*\r\n\r\n")
end)
Para controlar el LED simplemente se hace una escritura conn:close()
digital en el pin correspondiente:
Para el caso del sensor de movimiento, tambin se defini
gpio.write(pinLED, gpio.HIGH) un timer alarm el cual se ejecuta cada 19 segundos y se llama
gpio.write(pinLED, gpio.LOW) una funcin que enva los datos a Thingspeak, como se hizo
con el sensor DHT11. Adems, hay otra timer alarm que
En el caso del sensor DHT11, se procedi a usar la consulta un servicio web provedo por Thingspeak para saber
librera que posee NODEMCU para la lectura de este: si el usuario desea tener activo o no el sensor de movimiento.
En el caso del LED, la idea es poder controlarlo mediante
dht.read11(pinDHT)
una peticin que se haga desde internet. Si llega una peticin
con parmetro ON, el LED se enciende y si el parmetro es
La funcin read11 devuelve 5 valores en el siguiente
OFF, el LED se apaga. Para esto se configura un pequeo
orden: estado: Estado del sensor DHT11; temperatura:
servidor en el mdulo el cual va a escuchar las peticiones en
temperatura actual (entero); humedad: humedad actual
el puerto 80 (HTTP) y cuando reciba una peticin se va a
(entero); decimal_temperatura: temperatura actual
ejecutar una funcin:
(decimales); decimal_humedad: humedad actual
(decimales). -- Creando servidor TCP
Por otro lado, el sensor de movimiento se trata de otra servidor = net.createServer (net.TCP)
manera. El modo, a diferencia de los otros componentes, se
define como INT, que significa modo interrupcin, es decir, -- Servidor escuchando en el puerto 80
servidor:listen (80, gestionarConexion)
que la lectura se va a hacer cuando haya algn cambio por
parte del sensor. Luego, ese cambio se captura con un trigger
el cual ejecutar una funcin como se define en el siguiente Con el servidor escuchando peticiones para cambiar el
cdigo: estado del LED y leyendo frecuentemente los datos del
sensor DHT11, solo falta crear un panel de control web para
-- Pines poder realizar las acciones y leer los datos ms cmodamente.
local pinPIR = 4 -- GPIO 2 El panel de control se dise en HTML5 usando el
framework web Twitter Bootstrap para darle un mejor estilo
-- Modo Pines
y usabilidad. Este archivo se carg al mdulo ESP8266 con el
gpio.mode(pinPIR, gpio.INT)
nombre de index.htm. Para poder mostrar esta pgina al
-- Trigger usuario, se configur el script para que cada vez que hubiese
gpio.trig(pinPIR, "up", guardarCambioPIR) una peticin, es decir, cada vez que el usuario ingresara en su
navegador a la direccin IP del mdulo, se mostrar esa
Para realizar la integracin con Thingspeak primero se pgina. Para poder hacer esto, debido a que el tamao de la
configur la conexin WiFi. Para esto, se define el modo pgina era demasiado grande como para enviarlo en una sola
STATION, el cual permite realizar las peticiones a internet y respuesta, se opt por usar un algoritmo que permite enviar el
adems crear un servidor que escuche cierto puerto. Luego se archivo por partes.
configura el SSID (Service Set Identifier) y la contrasea
correspondiente al punto de acceso: local httpRequest={}
httpRequest["/"]="index.htm";
-- Variables de configuracin httpRequest["/index.htm"]="index.htm";
local SSID = "SSID del AP a conectar"
local SSID_PASSWORD = "contrasea" local getContentType={};
getContentType["/"]="text/html";
getContentType["/index.htm"]="text/html";
-- Configurando ESP8266 en modo cliente
wifi.setmode (wifi.STATION)
if getContentType[path] then
wifi.sta.config (SSID,SSID_PASSWORD)
requestFile=httpRequest[path];
print("+++ Enviando archivo
Con la conexin configurada, se procede a crear una "..requestFile.." +++");
funcin que lea los datos del sensor DHT11 y llame el filePos=0;
conn:send("HTTP/1.1 200 OK\r\nContent-Type:
servicio web para guardar los datos en Thingspeak. Esa "..getContentType[path].."\r\n\r\n");
funcin se va a llamar cada 20 segundos con un timer alarm: else
print("+++ File "..path.." not found +++");
tmr.alarm(0,20000,1,enviar_temperatura_y_hu conn:send("HTTP/1.1 404 Not Found\r\n\r\n")
medad) conn:close();
collectgarbage();end
334
Memorias de la Dcima Quinta Conferencia Iberoamericana en Sistemas, Ciberntica e Informtica (CISCI 2016)
335
Memorias de la Dcima Quinta Conferencia Iberoamericana en Sistemas, Ciberntica e Informtica (CISCI 2016)
336
Memorias de la Dcima Quinta Conferencia Iberoamericana en Sistemas, Ciberntica e Informtica (CISCI 2016)
http://iie.fing.edu.uy/institucional/biblioteca/presentaciones/Citas-
IEEE-2011.pdf
[3] Espressif Systems Inc. (2013, 10). Espressif Smart Connectivity
Platform: ESP8266. Adafruit Disponible en:
http://www.adafruit.com/datasheets/ESP8266_Specifications_English.
pdf
[4] D-Robotics UK. (2010, 07). DHT11 Humidity & Temperature Sensor.
www.droboticsonline.com Disponible en:
http://www.micropik.com/PDF/dht11.pdf
[5] E. Fred Schubert. (2003, 11). Light-Emitting Diodes. Cambridge
University. Disponible en: http://www.cambridge.org/ light-emitting-
diodes.
[6] MPJA. (2014, 07). HC-SR501 PIR motion detector. MPIA online.
Disponible en: http://www.mpja.com/download/31227sc.pdf.
[7] NodeMCU. Firmware OpenSource para IoT. Disponible en:
http://nodemcu.com/index_en.html. Fecha de Consulta: Septiembre
20, 2015.
[8] LUA. (2015). LUA Description. LUA. Disponible en:
http://www.lua.org/about.html.
[9] ThinkSpeak. (2105). About ThinkSpeak. ThinkSpeak online,
Disponible en: https://thingspeak.com/docs
[10] Bootstrap. (2015). Blog BootsTrap. BootsTrap online, Disponible en:
http://blog.getbootstrap.com/
[11] Vladimir Vujovi, Mirjana Maksimovi, Raspberry Pi as a Sensor
Web node for home automation, Computers & Electrical Engineering,
Volume 44, May 2015, Pages 153-171, ISSN 0045-7906, Disponible
en:http://www.sciencedirect.com/science/article/pii/S00457906150002
57
[12] Sechi, F.; Fanucci, L.; Luschi, S.; Perini, S.; Madesani, M., "Design of
a Distributed Embedded System for Domotic Applications," Digital
System Design Architectures, Methods and Tools, 2008. DSD '08.
11th EUROMICRO Conference on, vol., no., pp.427,431, 3-5 Sept.
2008. oi: 10.1109/DSD.2008.57
[13] An inexpensive IoT enabler using ESP8266 (2015, 25 de Enero).
Instructables, Fecha de consulta: 22:00, Julio 12, 2015 Disponible en:
http://www.instructables.com/id/An-inexpensive-IoT-enabler-using-
ESP8266/
[14] MQTT. Message Queueing Telemetry Transport. Disponible en:
http://mqtt.org/faq. Fecha de Consulta: Septiembre 20, 2015.
[15] ESPlorer. IDE para modulo ESP8266. Disponible en;
http://esp8266.ru/esplorer/. Fecha de Consulta: Septiembre 20, 2015.
[16] GARTNER. Tendencias Tecnolgicas en el 2015. Disponible en:
http://www.gartner.com/newsroom/id/3114217. Fecha de Consulta:
Enero 13, 2016.
[17] Arduino Uno. Plataforma y Gua de Uso. Disponible en:
https://www.arduino.cc/en/main/arduinoBoardUno. Fecha de
Consulta: Febrero 2 de 2016.
337