scieee Science in your language
[es] (orig)

Gestión eficiente de una finca mediante el uso de una aplicación móvil y microcontroladores ESP32

Abstract

El objetivo de este TFG es facilitar la gestión de una finca mediante el uso de microcontroladores ESP32 que permitan identificar distintos parámetros dentro de un recinto, estos parámetros podrían ser: la temperatura, la humedad, concentración de humo/gas, nivel de agua en bebederos de animales, etc. Todos esos valores serán enviados a la aplicación móvil para que quien esté al cargo de la finca pueda llevar un mejor control de la misma, y no solo eso, sino que además podrá enviar con la misma aplicación peticiones para configurar los sensores que intervienen en todo este proceso. Para llevar a cabo este propósito se establece una red de comunicación bidireccional indirecta entre los ESP32 y la aplicación, ya que un broker actuará como intermediario entre ambos. Esta comunicación se lleva a cabo mediante el protocolo MQTT con el uso de tópicos previamente definidos, donde si se quiere enviar información se hará un “PUBLISH” en el tópico en cuestión, y al contrario si se desea recibir información deberemos suscribirnos a él.

Read accessible full text

Gestión eficiente de una finca mediante el uso de una aplicación móvil y microcontroladores ESP32

Author: Juez de Miceli, Enrique; Alcaraz Escobar, Fabrizio; Petrisor Cincea , Rares
Year: 2023
Source: https://docta.ucm.es/bitstreams/01bb5358-f68b-4732-a3bb-9c3c08929208/download
GESTIÓN EFICIENTE DE UNA FINCA MEDIANTE EL USO DE
UNA APLICACIÓN MÓVIL Y MICROCONTROLADORES ESP32
EFFICIENT FARM MANAGEMENT WITH ESP32 AND APP
TRABAJO FIN DE GRADO
CURSO 2022-2023
AUTORES
ENRIQUE JUEZ DE MICELI
FABRIZIO ALCARAZ ESCOBAR
RARES PETRISOR CINCEA
DIRECTOR
JUAN CARLOS FABERO JIMÉNEZ
GRADO EN INGENIERÍA DE COMPUTADORES
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
GESTIÓN EFICIENTE DE UNA FINCA MEDIANTE EL USO DE
UNA APLICACIÓN MÓVIL Y MICROCONTROLADORES ESP32
EFFICIENT FARM MANAGEMENT WITH ESP32 AND APP
TRABAJO DE FIN DE GRADO EN INGENIERÍA DE COMPUTADORES
AUTORES
ENRIQUE JUEZ DE MICELI
FABRIZIO ALCARAZ ESCOBAR
RARES PETRISOR CINCEA
DIRECTOR
JUAN CARLOS FABERO JIMÉNEZ
CONVOCATORIA: JUNIO 2023
GRADO EN INGENIERÍA DE COMPUTADORES
FACULTAD DE INFORMÁTICA
UNIVERSIDAD COMPLUTENSE DE MADRID
16 DE MAYO DE 2023
III
AGRADECIMIENTOS
A nues as amilias, amigos y pa ejas po el g an apoyo que nos han b indado du an e el
desa ollo de es e p oyec o. También que emos ag adece a nues o u o Juan Ca los Fabe o
po guia nos en es e a duo camino, ya que sin su ayuda es o no hubie a sido posible. También
ag adece a Gus a o Eloy Alca áz ( ío de Fab izio) po dona nos su Raspbe y Pi, y po sus
consejos de cómo a on a el p oyec o.
Y no podemos ol ida nos de odos los p o eso es que nos han acompañado a lo la go de
la ca e a, descub iéndonos el ma a illoso mundo de la Ingenie ía de Compu ado es.
Muchas g acias a odos.

V
RESUMEN
Ges ión e icien e de una inca median e el uso de una aplicación mó il y
mic ocon olado es ESP32
El obje i o de es e TFG es acili a la ges ión de una inca median e el uso de
mic ocon olado es ESP32 que pe mi an iden i ica dis in os pa áme os den o de un ecin o,
es os pa áme os pod ían se : la empe a u a, la humedad, concen ación de humo/gas, ni el de
agua en bebede os de animales, e c. Todos esos alo es se án en iados a la aplicación mó il
pa a que quien es é al ca go de la inca pueda lle a un mejo con ol de la misma, y no solo eso,
sino que además pod á en ia con la misma aplicación pe iciones pa a con igu a los senso es
que in e ienen en odo es e p oceso.
Pa a lle a a cabo es e p opósi o se es ablece una ed de comunicación bidi eccional
indi ec a en e los ESP32 y la aplicación, ya que un b oke ac ua á como in e media io en e
ambos. Es a comunicación se lle a a cabo median e el p o ocolo MQTT con el uso de ópicos
p e iamen e de inidos, donde si se quie e en ia in o mación se ha á un “PUBLISH” en el ópico
en cues ión, y al con a io si se desea ecibi in o mación debe emos susc ibi nos a él.
Palab as cla e
ESP32, Senso es, B oke , Raspbe y, App, MQTT, WiFi, HTTP, NTP, Mosqui o.
VII
ABSTRACT
E icien a m managemen using a mobile app and ESP32 mic ocon olle s
The objec i e o his Final P ojec is o acili a e he managemen o a a m h ough he
use o ESP32 mic ocon olle s ha allow he iden i ica ion o di e en pa ame e s wi hin a a m
enclosu e, hese pa ame e s could be: empe a u e, humidi y, smoke/gas concen a ion, wa e
le el in animal wa e oughs, e c. All hese alues will be sen o he mobile applica ion so ha
whoe e is in cha ge o he a m can ha e a be e con ol o i , and no only ha bu also can
send eques s o con igu e he mic ocon olle s ha pa icipa e in his p ocess.
To ca y ou his pu pose, an indi ec bidi ec ional communica ion is es ablished be ween
ESP32 and he mobile applica ion, since a b oke will ac as an in e media y be ween bo h. This
communica ion is ca ied ou h ough he MQTT p o ocol wi h he use o p e iously de ined opics,
whe e i you wan o send in o ma ion you will make a "PUBLISH" in he wished opic, and on he
opposi e side i you wan o ecei e in o ma ion you will ha e o subsc ibe o i .
Keywo ds
ESP32, Senso s, B oke , Raspbe y, App, MQTT, WIFI, HTTP, NTP, Mosqui o.
VIII
ÍNDICE DE CONTENIDOS
Capí ulo 1 - In oducción .........................................................................................................17
1.1 Mo i ación .......................................................................................................................17
1.1.1 Mo i ación pe sonal ..................................................................................................17
1.1.2 An eceden es ...........................................................................................................17
1.2 Obje i os .........................................................................................................................19
1.3 Plan de abajo ................................................................................................................20
Capí ulo 2 - Es ado de la cues ión ...........................................................................................23
2.1 IoT ...................................................................................................................................23
2.1.1 ¿Cómo unciona IoT? ...............................................................................................23
2.1.2 Ven ajas que o ecen los sis emas de IoT ................................................................24
2.1.3 Ejemplos de sis emas IoT .........................................................................................24
2.2 ESP32 .............................................................................................................................25
2.2.1 Modelos ESP32 ........................................................................................................26
2.3 Conexiones .....................................................................................................................28
2.3.1 Blue oo h ..................................................................................................................28
2.3.2 WiFi ..........................................................................................................................29
2.3.3 Blue oo h en e a WiFi .............................................................................................30
2.4 MQTT ..............................................................................................................................31
2.4.1 Calidad de se icio (QoS) .........................................................................................32
Capí ulo 3 - Elección ESP32 ...................................................................................................33
3.1 Compa ibilidades .............................................................................................................34
Capí ulo 4 - Elección de Pe i é icos .........................................................................................35
4.1 DHT22 ............................................................................................................................35
XV
ÍNDICE DE TABLAS
Tabla 6-1. Tabla de pa iciones de la memo ia..........................................................................63
Tabla 9-1. Login nue o usua io .................................................................................................84
Tabla 9-2. Login usua io exis en e ............................................................................................84
Tabla 9-3. Sali de la aplicación ................................................................................................84
Tabla 9-4. Elimina disposi i o exis en e ...................................................................................85
Tabla 9-5. Re esca in o mación del disposi i o .......................................................................86
Tabla 9-6. Acceso a la is a de edición de disposi i o ...............................................................86
Tabla 9-7. Acceso a la is a de escaneo de disposi i os ...........................................................86
Tabla 9-8. Escaneo de disposi i os ...........................................................................................87
Tabla 9-9. Añadi un disposi i o ................................................................................................88
Tabla 9-10. Consul a in o mación sob e un senso ..................................................................89
Tabla 9-11. Edi a alias del ESP32 ............................................................................................89
Tabla 9-12. Edi a umb ales de ala ma de un ipo de senso ....................................................90
Tabla 9-13. Cambia GPIO de un senso ..................................................................................91
Tabla 9-14. Edi a pa áme os ex a de un ipo de senso .........................................................91
Tabla 10-1. Tabla de p esupues o........................................................................................... 105

17
Capí ulo 1 - In oducción
1.1 Mo i ación
1.1.1 Mo i ación pe sonal
Con el a ance de la ecnología en la ac ualidad y la llegada al me cado de inno ado es
p oduc os de IoT se pe cibe una c ecien e necesidad de nue os sis emas ecnológicos capaces
de enca ga se de la ges ión de es os p oduc os. La inalidad de es os sis emas no es más que
la mejo a en la calidad de ida dia ia, an o a ni el pe sonal, como a ni el indus ial o labo al.
Nues o abajo “GESTIÓN EFICIENTE DE UNA FINCA MEDIANTE EL USO DE UNA
APLICACIÓN MÓVIL Y MICROCONTROLADORES ESP32” o como nos gus a llama lo
ca iñosamen e “My ESPecial Finca” es un p oyec o que encaja a la pe ección con las
ecnologías IoT. En nues o caso, in en amos p opo ciona a los g anje os los medios necesa ios
pa a ayuda les a ealiza sus a eas en el campo, que de o a o ma se ían más di íciles y ediosas
de ealiza .
1.1.2 An eceden es
An es de comenza con el desa ollo de nues o p oyec o, se ealizó un es udio pa a
descub i sis emas simila es que nos si ie an de e e encia. Algunos de ellos ue on:
• To som
Ilus ación 1-1. Pan alla de inicio de To som
18
To som es una emp esa que se dedica a la au oma ización indus ial y al desa ollo de
p oduc os elec ónicos. Uno de los ámbi os en los que abajan es en el sec o ag ícola,
o eciendo la posibilidad de au oma iza p ocesos como la medición de da os ( empe a u a,
ni eles de agua, de silos, e c.) Tienen disposi i os capaces de ges iona la in o mación del ecin o
donde haya sido ins alado es e sis ema de mane a emo a, ambién oman decisiones de mane a
au ónoma en unción de los alo es ob enidos. Po úl imo, o ecen un sis ema de análisis en
iempo eal pa a una mayo e iciencia y p oduc i idad.
• Sphe ag
Ilus ación 1-2. Pan alla de inicio de Sphe ag
Sphe ag es una emp esa que o ece se icios IoT combinados con se icios en la nube
que pe mi en c ea un ecosis ema cloud que simpli ica la necesidad de mig a digi almen e los
da os. Hacen uso de disposi i os IoT ATLAS que son disposi i os sola es basados en la
ecnología LTE-M que incula los da os de los senso es p opios y de e ce os, o eciendo la
posibilidad de au oma iza acciones.
Los disposi i os ATLAS no necesi an un despliegue p e io ni acceso a la ed eléc ica,
son ecnologías Plug & Play, haciéndolos au ónomos y au osu icien es. Bas a con conec a los a
los elemen os que quie as ges iona pa a empeza a ecibi da os y manda ó denes en iempo
eal.
19
• HW G oup
Ilus ación 1-3. Disposi i o Poseidon2 4002
Es una emp esa que se enca ga de la ab icación de equipos RME (Sis emas de
moni o ización Eco-Sys em). De es a emp esa nos in e esa menciona el disposi i o Poseidon2
4002 que es á diseñado pa a moni o iza , con ola senso es, en adas y salidas digi ales a a és
de la ed median e p o ocolos M2M segu os, como HTTP o IP 6. Y g acias al p o ocolo de
comunicaciones MQTT posibili a la in eg ación de es e disposi i o en sis emas IoT. U ilizando el
po al SensDesk de HW G oup se puede con igu a y moni o iza de o ma emo a g acias a un
se ido web inco po ado en el p opio disposi i o.
1.2 Obje i os
El obje i o de es e p oyec o de in de g ado es c ea un sis ema IoT capaz de ges iona
de mane a e icien e una inca median e el uso de mic ocon olado es ESP32 que end án
conec ados un conjun o de senso es capaces de medi las a iables del en o no. Se lle a á a
cabo en las siguien es ases:
• Desplega mic ocon olado es ESP32 capaces de ges iona in o mación ela i a a
esas a iables del en o no den o de una inca.
• Es ablece unos canales de comunicación pa a pe mi i la ansmisión de da os en e
la aplicación mó il y los mic ocon olado es po medio de un b oke .
• P og ama una Raspbe y pa a que ac úe como un b oke p i ado.
• C ea una aplicación mó il capaz de mos a da os po pan alla, así como manda
pe iciones al ESP.
20
• Es ablece un se ido web pa a pode con igu a odos los pa áme os ele an es de
nues o sis ema.
1.3 Plan de abajo
Una ez de inidos los obje i os necesa ios pa a que nues o sis ema de ges ión uncione
co ec amen e, el siguien e paso consis i á en decidi el o den en el que se ealiza á el desa ollo
de cada una de las pa es que componen el sis ema inal. Pa a de es a mane a, lle a a cabo
una dis ibución de las a eas en el iempo y así pode hace una es imación de la du ación o al
del p oyec o como de la du ación p e is a pa a el desa ollo de cada una de las pa es. Pe o
p ime o se end á que ealiza un desglose de esos obje i os y ma ca las a eas necesa ias que
se debe án lle a a cabo:
1. In es igación p elimina
a. Familia iza se con los mic ocon olado es ESP32 y la capacidad que ienen
pa a la medición de a iables ambien ales.
b. Lle a a cabo un ap endizaje sob e el p o ocolo MQTT y la o ma en la que
unciona un b oke de comunicación en e disposi i os.
c. Indaga en las dis in as he amien as que exis en pa a el desa ollo de una
aplicación mó il y una aplicación web.
2. Diseño del sis ema
a. De ini qué a iables se quie en medi en la inca y de qué mane a se lle a á
a cabo su medición.
b. Diseña el esquema de la ed de mic ocon olado es ESP32, y como se
comunica án con el b oke .
c. Diseña la a qui ec u a de las aplicaciones mó iles y web, así como la in e az
de usua io.
3. Desa ollo del so wa e de los mic ocon olado es ESP32
a. P og ama d i e s de los senso es pa a que midan las a iables ambien ales
deseadas.
b. P og ama iche os enca gados de maneja la inco po ación y eliminación de
senso es, así como ecolec a o modi ica la in o mación ela i a a ellos.
c. P og ama iche os capaces de ges iona odas las a eas ela i as a las
conexiones WIFI, HTTP, NTP y MQTT.
4. Con igu ación de Raspbe y pa a que uncione como b oke MQTT
a. Ins ala so wa e necesa io pa a hace que Raspbe y uncione como b oke .

21
b. Con igu a el b oke MQTT pa a que se comunique con los mic ocon olado es
ESP32.
5. Desa ollo de la aplicación mó il
a. P og ama aplicación mó il pa a que sea capaz de comunica se con el b oke
MQTT y así ecibi da os de los mic ocon olado es ESP32.
b. Diseña la in e az g á ica de la aplicación mó il.
c. Implemen a sis ema de au en icación pa a comunicación MQTT.
d. Implemen a sis ema de ala mas de los senso es.
6. Desa ollo de la aplicación web
a. Diseña la in e az g á ica de la aplicación web.
b. P og ama un iche o Ja aSc ip que pe mi a a la aplicación web conec a se
con el mic ocon olado ESP32 y comunica se con él median e pe iciones
XML.
c. Gene a las he amien as necesa ias pa a pode con igu a las conexiones
WIFI, NTP y MQTT.
d. Hace el despliegue de in o mación ela i a a los senso es conec ados al
mic ocon olado .
e. Pe mi i a la aplicación web añadi o elimina senso es, así como pode
con igu a odos sus pa áme os de mane a dinámica.
. Embellece la in e az median e CSS.
7. P uebas y a eglos
a. Realiza p uebas del sis ema pa a comp oba que odos los componen es
uncionen co ec amen e.
b. Lle a a cabo los ajus es y co ecciones pe inen es en el so wa e y la
con igu ación de nues o sis ema.
8. Documen ación
a. Documen a el p oceso de desa ollo.
b. P epa a una p esen ación del p oyec o pa a su de ensa, incluyendo una
demos ación de su uncionamien o.
Una ez ijados los obje i os se es ableció un plan de abajo pa a pode lle a los a cabo
en el iempo es ablecido. Pa a ello, se ealizó un Diag ama de Gan ijando la can idad de iempo
necesa ia pa a cada una de las ac i idades en lo que se e ie e a la di icul ad y la p io idad que
se le ha o o gado a cada una de ellas:
22
Figu a 1-1. Diag ama de Gan
1
1
Figu a ealizada con el p og ama eamGan
23
Capí ulo 2 - Es ado de la cues ión
Pa a es e p oyec o se ha á uso de a ios mic ocon olado es que sean capaces de lee
señales analógicas p o enien es de los dis in os ipos de senso es pa a pode medi alo es
como la empe a u a ambien al, humedad ela i a del ai e, p esencia de gas/humo, humedad
ela i a de la ie a (como po ejemplo de una mace a) y el ni el de agua (de un ecipien e,
bebede o, e c.).
La in o mación ecogida de cada senso se isualiza á en una pan alla LCD y, median e
una conexión inalámb ica, se e ansmi i á a una “unidad cen al” que ag upa á a odos los
mic ocon olado es pa a, inalmen e, ansmi i la in o mación a los usua ios que se conec en. De
es e modo, los usua ios no end ían que conec a se a cada mic ocon olado del que quie an
ecibi la in o mación de sus senso es.
An es de en a en de alles sob e nues o p oyec o, se mos a á in o mación ele an e de
emas elacionados con él.
2.1 IoT
El é mino IoT (In e ne o Things), o In e ne de las cosas en español, hace e e encia a
las nue as ecnologías que acili an la comunicación en e los disposi i os y la nube. Con la
mejo a en las p es aciones de los chips, el aumen o del ancho de banda en los canales de
comunicación, así como, la acilidad de accede a es as nue as ecnologías g acias a su educido
p ecio, ha p o ocado que ac ualmen e exis an miles de millones de disposi i os conec ados a
In e ne concu en emen e.
En los úl imos 30 años, den o del ámbi o de la ingenie ía se ha es ado in eg ando
senso es y p ocesado es a los obje os co idianos, donde los módulos que con ienen es os
componen es son cada ez más pequeños, ápidos y su capacidad de p ocesamien o es cada
ez mayo . G acias a es o se en cada ez más p esen es los disposi i os IoT en luga es del día
a día como puedan se nues a casa o luga de abajo.
2.1.1 ¿Cómo unciona IoT?
Los sis emas IoT, en e o as cosas, pueden ecopila da os pa a pode in o ma o
au o iza acciones. Se lle a a cabo en 4 e apas:
24
Figu a 2-1. 4 e apas del IoT
1. Cap u a la in o mación: Los disposi i os IoT cap u an in o mación de su en o no
median e el uso de senso es.
2. Compa i in o mación: Es a in o mación se puede ansmi i a o os sis emas
in o má icos ales como un sis ema en la nube u o o disposi i o. Es a e apa no es
es ic amen e necesa ia, pues o que ambién el sis ema que ob iene es os da os
puede conse a los pa a ealiza cie as acciones de mane a au omá ica.
3. P ocesamien o de la in o mación: El sis ema p ocesa los da os ob enidos y ac úa
en consecuencia.
4. Respues a a la in o mación ob enida: El usua io analiza la in o mación ob enida de
los disposi i os que se comunican con él. Basándonos en es a in o mación, el usua io
oma á las decisiones pe inen es.
2.1.2 Ven ajas que o ecen los sis emas de IoT
Los sis emas IoT nos p opo cionan una g an can idad de en ajas, en e las cuales se
incluyen la au oma ización de a eas y la moni o ización de la in o mación en iempo eal. G acias
a la au oma ización se aumen a la e iciencia al ealiza a eas y se educen los posibles e o es
humanos que se puedan come e , mien as que la moni o ización de la in o mación nos ayuda
en di e sos ámbi os, como pod ían se la e iciencia ene gé ica y la segu idad.
En esumen, los sis emas IoT mejo an la calidad de ida de las pe sonas y nos ayudan a
oma decisiones de mane a in o mada.
2.1.3 Ejemplos de sis emas IoT
En la ac ualidad los sis emas IoT se pueden encon a en muchos si ios. Algunos muy
comunes son:
31
2.4 MQTT
Una ez de inido que se u iliza á WiFi pa a las conexiones en e los disposi i os y el
usua io, queda pendien e cómo se lle a ía a cabo el in e cambio de mensajes, dado que la idea
inicial e a algo simila a un MAESTRO/ESCLAVO en e los mic ocon olado es y la “unidad
cen al” pa a pode ag upa el en ío de da os desde la “unidad cen al” al usua io, nues o u o
nos ecomendó el p o ocolo MQTT, el cual se ajus a a la pe ección a la idea del p oyec o.
“Message Queue Teleme y T anspo ” (MQTT) es un p o ocolo de ansmisión de
mensajes basado en publicaciones/susc ipciones c eado po IBM en 1999 con la in ención de
se lige o, bidi eccional y e icien e.
En MQTT se hace dis inción en e 3 oles:
• Publishe (Publicado ): es el que en ía la in o mación a a és de los emas o
ópicos, los cuales son cadenas de ex o je a quizadas a a és de “/” u ilizadas pa a
ca ego iza los mensajes publicados, acili ando así una o ganización lógica de los
mensajes, como po ejemplo “Casa/Habi ación2/Tempe a u a”
• Subsc ibe (Susc ip o ): es el que ecibe la in o mación publicada a a és del ópico
al que es á susc i o.
• B oke : es el se ido enca gado de in e media en e los publicado es y los
susc ip o es, pues es el que ecibe odas las publicaciones y las e ansmi e a los
susc ip o es del ópico al que ue publicado.
Su uncionamien o es ela i amen e sencillo, pues es compa able al de un quiosco
(b oke ) al que los clien es (susc ip o es) acuden pa a comp a e is as o pe iódicos (mensajes)
endidas po las dis in as edi o iales (publicado es).
Cabe des aca que los oles no son excluyen es, pues un susc ip o puede se a la ez
un publicado , lo cual es una si uación común, ya que, po ejemplo, un usua io pod ía se
susc ip o de un disposi i o y publicado del mismo pa a pode con igu a lo o en ia comandos.
G acias a es e uncionamien o, la escalabilidad es mucho más al a, pues an o los
susc ip o es y los publicado es solo es án conec ados al b oke , independien emen e de cuan os
más disposi i os haya en la ed, p o ocando que haya una comunicación 1 a N.

32
2.4.1 Calidad de se icio (QoS)
En MQTT se di e encian 3 ipos de calidad de se icio pa a la en ega de mensajes
9
:
• QoS 0: llamado ambién “ i e and o ge ”, es el ni el más bajo de se icio, ya que el
mensaje se en ía una sola ez sin la ga an ía de que se haya en egado al
des ina a io.
• QoS 1: se ga an iza que el ecep o eciba, al menos, una ez el mensaje aunque
puede ecibi duplicados, pues o que si el emi en e no ha ecibido un mensaje de
con i mación de que el mensaje ha llegado en un iempo azonable, een ía el
mensaje has a que lo eciba.
• QoS 2: ni el máximo de se icio, en el que se ga an iza que el mensaje es ecibido
exac amen e una ez a cada ecep o a a és de un mecanismo de “ ou -pa
handshake” desechando los duplicados.
9
Hi eMQ - MQTT Essen ials
33
Capí ulo 3 - Elección ESP32
Una ez is o odos los modelos posibles que o ecen la amilia de los ESP32, se ha de
elegi el que se usa á en es e p oyec o. Dado que di ícilmen e se pod á ins ala los modelos
basados en o ma os SoC y SiP sin las he amien as necesa ias, se op a á mejo po los modulos
PCB o las placas de desa ollo. En es e caso se eligie on los modelos basados en placas de
desa ollo po la acilidad que hay en usa las. Con es o se consegui á que no se engan
demasiados p oblemas du an e su ins alación, además de pe mi i nos modi ica lo ácilmen e en
un u u o si uese necesa io.
En cuan o a la se ie, no es necesa io que sea un ipo especializado en nada. Es po ello
que se usa á los modelos de la se ie base, que son las que se adap an mejo a nues as
necesidades. Den o de odos los modelos posibles de es a se ie se ha u ilizado
undamen almen e el ESP32-WROVER-B modi icado po la compañía F eeno e. Dicha
modi icación cons a de una placa de expansión conec ada a una placa de p o o ipado. La
siguien e imagen mues a los componen es mencionados:
Ilus ación 3-1. Ki ESP32 F eeno e
10
10
Fo o ex aída de la documen ación de F eeno e
34
3.1 Compa ibilidades
No se han podido ealiza p uebas en di e sos ESP32 de dis in as se ies, pe o la
compa ibilidad debe ía se bas an e al a po lo gene al. Algunos aspec os cla e pa a sabe que
sí es compa ible son:
• La ejecución de a eas se ha di idido de al o ma que se epa a la ca ga de abajo
en los dos núcleos del mic op ocesado , con ello se e i a que el p og ama se bloquee
en exceso y se mejo a su endimien o. Po lo an o, se necesi a ía que el ESP
escogido no sea de un solo núcleo.
• Se gua dan algunas a iables en la memo ia lash in eg ada del ESP. Son las que
es án elacionadas con la con igu ación de las conexiones WiFi y MQTT, así como
los senso es y sus pa áme os ele an es. Se hace es o pa a e i a ene que
econ igu a odo a mano cada ez que se inicia el p og ama. Po ello hab ía que
asegu a se que el ESP disponga de al memo ia.
• Cada ESP32 dispone de una can idad di e en e de GPIOS, además ambién a ía la
nume ación y el ipo de GPIO que es. Po ejemplo, el que p incipalmen e se usa
(ESP32-WROVER-B de “F eeno e”) iene 30 GPIOS de los cuales 4 de ellos son solo
de en ada. Aquí es donde es más ácil que haya incompa ibilidades en e ESP32,
pe o es ácilmen e con igu able a a és del iche o c eado pa a maneja los GPIOS
del ESP.
35
Capí ulo 4 - Elección de Pe i é icos
Los pe i é icos son undamen ales pa a el co ec o uncionamien o de nues o p oyec o,
ya que se án los enca gados de ealiza odas las a eas elacionadas con las a iables del
en o no, an o su pe cepción (DHT22, HC-SR04…) como su ep esen ación (LCD). Los
pe i é icos se di iden en dos pa es:
• Ha dwa e: es la pa e ísica del senso , es a á en con ac o con el medio en cues ión.
Cada senso es a á compues o de los ma e iales necesa ios que le pe mi an pe cibi
las señales. Se comunica con el mic ocon olado a a és de sus pines de
en ada/salida.
• So wa e: es la pa e lógica del senso , es deci , la pa e esponsable de que el
pe i é ico ac úe con enien emen e. Todo ello es a á con enido en un único iche o
denominado d i e .
Hay muchos senso es di e en es que pod ían encaja en nues o p oyec o, a su ez cada
senso puede ene modelos dis in os desa ollados po di e sas compañías. En nues o caso se
ha decidido u iliza los siguien es cua o:
4.1 DHT22
Senso enca gado de medi la empe a u a y la humedad que haya en la localización que
se encuen e, p e e iblemen e una sala ce ada pa a e i a lec u as i egula es.
4.1.1 Ha dwa e
Figu a 4-1. DHT22
36
1. VCC: pin conec ado al ol aje del ci cui o. Aunque acep e del ango de 3 a 5 V lo más
ecomendado son 5 V.
2. Da a: pin con el cual se comunica á con el ESP (Pin de En ada/Salida).
3. NC: pin que no se usa pa a nada, es e pin debe á es a desconec ado del ci cui o
pa a e i a p oblemas.
4. GND: pin conec ado a ie a.
Las a iables que mide son:
• Humedad: se mide g acias a dos elec odos sepa ados po un sus a o que la
e ienen, cuan o mayo es la concen ación, el sus a o eje ce menos esis encia y
pe mi e un mayo lujo de iones, pe mi iendo calcula la humedad ela i a en el
ambien e.
• Tempe a u a: se mide g acias a un e mis o que iene in e namen e.
4.1.2 So wa e
Pasos:
1) El ESP32 pone el GPIO “Da a” en modo ou pu . Pone su señal a ‘0’ du an e 3 ms y
pos e io men e lo pone ‘1’ b e emen e.
2) El senso de ec a es e cambio de señal y en iende una señal “S a ”, po lo que
empieza a medi la humedad y la empe a u a. A odo es o, el ESP pone el GPIO
“Da a” en modo inpu pa a comenza la lec u a.
3) T as una b e e pausa que ealizan ambos disposi i os, el senso comienza a manda
bi a bi el esul ado de la lec u a has a manda un o al de 40 bi s:
a) 0 - 15: los p ime os 16 bi s son el esul ado al po cen aje de humedad en el
ambien e, los 8 p ime os son la pa e en e a y los 8 úl imos la pa e decimal.
b) 15 - 31: los siguien es 16 son el esul ado de la empe a u a, los 8 p ime os la
pa e en e a y los o os 8 la pa e decimal.
c) 32 - 40: Finalmen e, el senso manda un “CheckSum” en los 8 úl imos bi s
pa a comp oba que la lec u a de los an e io es 32 se haya ealizado
co ec amen e.

37
4.2 HC-SR04
Senso que se enca ga de medi dis ancias a a és de ondas que dispa a on almen e
y que ecibe cuando ebo an en alguna supe icie.
4.2.1 Ha dwa e
Figu a 4-2. HC-SR04
1. VCC: pin que a conec ado al ol aje del ci cui o.
2. T ig: pin a a és del cual se le indica al senso que comience a manda ondas (Pin
de en ada).
3. Echo: pin con el que se indica la llegada de las ondas p e iamen e mandadas (Pin
de salida).
4. GND: pin conec ado a ie a.
La a iable que mide es:
• Dis ancia: se mide a a és del iempo que a da el senso desde que comienza a
manda ondas has a que las ecibe de uel a.
4.2.2 So wa e
Pasos:
1) El ESP comienza poniendo una señal ‘0’ en el “T ig” pin, as un pa de mic osegundos
cambia la señal a ‘1’ y de uel a lo uel e a pone a ‘0’.
2) El ESP espe a a que el senso ponga su “Echo” pin a ‘1’. Una ez de ec ado el cambio
espe a a que es e se ponga a ‘0’ indicando que el senso ya ha ecibido las ondas de
uel a. En su de ec o, si el senso no lo indica du an e un pe iodo la go de iempo, el
ESP da á po hecho que ha allado y se desca a odo el p oceso has a el momen o.
38
3) En caso de que odo salga bien, se ealiza un cálculo ma emá ico en elación con el
iempo que ha pasado desde el cambio de señal en el GPIO “Echo”.
4) Finalmen e, en nues o p oyec o se u iliza á pa a sabe cómo de lleno es á un
ecipien e de agua (po cen ualmen e). La ó mula se ía:
es = 100 - ((dis Sens - dis AlSens) / dis Reci) * 100
• es: esul ado, como de lleno es á el ecipien e de mane a po cen ual.
• dis Sens: dis ancia esul an e calculada a a és del senso .
• dis AlSens: dis ancia que hay desde el senso a la pa e supe io del ecipien e.
• dis Reci: dis ancia que hay desde la pa e supe io del ecipien e has a su pa e
in e io .
4.3 MQ2
Senso que de ec a la p esencia de humo y di e sos gases en el ai e. No indica el
po cen aje como al, ya que solo ac úa como una esis encia que a ía en unción de la
concen ación de pa ículas de dichos compues os.
4.3.1 Ha dwa e
Figu a 4-3. MQ2
39
1. VCC: pin que a conec ado al ol aje del ci cui o.
2. GND: pin conec ado a ie a.
3. D0: pin que indica con una señal digi al la apa ición de humo o di e sos gases. El
p opio senso con iene un compa ado que comp ueba la can idad de co ien e que
es á dejando lui y con ello selecciona cuál es la señal a manda (ese compa ado
puede se ajus ado a a és de una osca pa a indica el umb al) (Pin de salida).
4. A0: pin que ansmi e una señal analógica, es e se á el que se u ilice en el ESP32.
Esa señal analógica es equi alen e a la co ien e que deja lui . Según el ol aje que
nos llegue po su GPIO se pod á hace una es imación po cen ual de humo o gases
(Pin de salida).
La a iable que mide es:
• Concen ación humo/gas: es o le es posible g acias a una capa de dióxido de
es año que se encuen a en su in e io . Cuando el ai e se encuen a limpio de
cualquie gas educ o , los á omos de oxígeno se quedan a aídos a la supe icie de
la capa, al queda se en dicha supe icie los elec ones que se encuen an en la p opia
capa quedan a aídos ambién a causa de los á omos de oxígeno, o mando así una
ba e a al amen e esis i a e impidiendo que la co ien e luya. Con la apa ición de los
gases educ o es, los á omos de oxígeno son a as ados ue a de la supe icie,
libe ando así los elec ones de la capa de dióxido de es año y pe mi iendo de es a
o ma que luya la co ien e de nue o.
A con inuación, se mues a una abla que especi ica lo que puede de ec a y cómo ac úa
el senso en unción de las can idades “ppm”:
40
Figu a 4-4. G á ica ppm
• H2: molécula de dihid ógeno.
• LPG: gas licuado de pe óleo.
• CH4: me ano.
• CO: monóxido de ca bono.
• Alcohol: compues os que con ienen una molécula de hid oxilo (OH) en sus i ución de
un á omo de hid ógeno.
• Smoke: humo p oceden e de la combus ión po uego.
• P opane: gas p opano.
• Ai : compues o de ai e sin al e a .
47
Capí ulo 5 - Es uc u a MQTT
5.1 Posibles diag amas de conexiones
T as la elección de MQTT como p o ocolo de en ío de mensajes en e los disposi i os
del sis ema, se han analizado las posibles conexiones que se pod ían lle a a cabo en el TFG:
Figu a 5-1. Diag ama de conexiones 1
Se ía el más ípico, pues se pod ía u iliza una ed in e na sin conexión a in e ne pa a
comunica los mic ocon olado es con el b oke , es ando es e úl imo conec ado an o a esa ed
in e na como, po ejemplo, a la ed de la casa o inca, ya que con es e modo se pod ía ene
acceso al b oke desde in e ne .

48
Figu a 5-2. Diag ama de conexiones 2
Es un caso muy pa ecido al p ime o, con la di e encia de que se pod ían conec a al
b oke mic ocon olado es que es én ue a de la ed in e na. Un ejemplo eal se ía una casa
g ande en la que la mayo ía de los mic ocon olado es se encuen en en la ed in e na, pe o haya
algunos a los que la señal no alcance, pe o sí lo haga el de la ed de la casa (po ejemplo, po
epe ido es) u o a ed con acceso a in e ne que pe mi an esa conexión con el b oke .
Es e diag ama de conexión es el que se ha u ilizado a lo la go de la ealización del
p oyec o.
49
Figu a 5-3. Diag ama de conexiones 3
A a és de es e diag ama se es a ía explo ando la capacidad de “b idging” en e b oke s,
po el cual es posible que a ios b oke s se comuniquen en e sí in e cambiándose los mensajes,
p o ocando que un disposi i o que publique es ando en la Red 1 sea e ansmi ido a algún
susc ip o de la Red 2, po ejemplo.
Un caso eal se ía el de ene mic ocon olado es en una casa y o os en la segunda
esidencia y/o inca en donde haya un b oke en cada ed y, es os a su ez hagan “b idging” a
un se ido en la nube (que no deja de se o o b oke , pe o sin mic ocon olado es conec ados)
desde el cual el usua io pod á ecibi la in o mación de odos los mic ocon olado es.
50
5.2 Es uc u a de los ópicos
Con el in de o ganiza el en ío de los mensajes, se ha diseñado la siguien e es uc u a
de los emas de MQTT que se u ilizan en el p oyec o:
Figu a 5-4. Diag ama de ópicos
NOTA: Los emas en cuad os ama illos son ejemplos, mien as que los ojos es án
p esen es siemp e.
Se decidió que la aíz de los ópicos sea MESPF, ya que de es a o ma se pod ían u iliza
o os p oyec os de MQTT den o del mismo b oke sin que haya colisiones en los ópicos.
De MESPF salen dos amas: SENS (en donde se ubica án las in o maciones de los
mic ocon olado es) y USR (en donde cada usua io end ía su espacio pe sonal pa a que los
mic ocon olado es publiquen el esul ado de alguna pe ición ealizada po él).
51
5.2.1 Rama SENS
En es a ama de los ópicos se encuen a la in o mación de los senso es que publican los
mic ocon olado es, co espondiéndole el p ime ni el de es a ama a cada mic ocon olado
conec ado al sis ema, po ejemplo, el mic ocon olado ESP32_X publica á oda su in o mación
en los subni eles a MESPF/SENS/ESP32_X…
Cabe des aca que el ema SCAN ubicado en el mismo ni el que los mic ocon olado es
no se co esponde a ningún mic ocon olado en pa icula , sino que se a a de un “comando”
gene al al que los usua ios publica án su nomb e pa a que odos los mic ocon olado es ac i os
en el sis ema espondan con su nomb e al co espondien e. Po ejemplo, el usua io FABRIALC
publica en MESPF/SENS/SCAN el siguien e mensaje: “FABRIALC”, con ello los susc ip o es de
ese ópico (los cuales se án los mic ocon olado es) que eciban el mensaje publica án en el
ópico MESPF/USR/FABRIALC/SCAN su nomb e o iden i icado pa a, de es a o ma el usua io
FABRIALC sepa qué mic ocon olado es se encuen an ac i os.
El segundo ni el de es a ama (siendo el 3.º desde la aíz) se co esponde con los
dis in os ipos de senso es conec ados a cada mic ocon olado , como po ejemplo el DHT22 o
el MQ2, los cuales publica ían su in o mación en los subni eles de
MESPF/SENS/ESP32_X/DHT22/… o MESPF/SENS/ESP32_X/MQ2/… espec i amen e. Como
la ins alación de los senso es es dinámico (es deci , no odos los mic ocon olado es end án un
MQ2 o un DHT22 ins alado) es os emas son opcionales, a excepción de STATUS, el cual es un
ema especial en el que se in o ma de da os gené icos (di ección IP, ho a local, e c.) del
mic ocon olado .
El e ce ni el se co esponde a las unidades de cada ipo de senso , po ejemplo, si un
mic ocon olado iene ins alado 2 MQ2s, publica ía la in o mación de cada uno en los siguien es
ópicos: MESPF/SENS/ESP32_X/MQ2/1/… y MESPF/SENS/ESP32_X/MQ2/2/…
El cua o ni el se e ie e a los dos emas en los que los mic ocon olado es publican
in o mación:
• ALERT: donde se in o ma de la ale a de algún alo ano mal.
• INFO: en donde los mic ocon olado es publican pe iódicamen e los da os de sus
senso es (po de ec o, cada 5 minu os).
52
Po úl imo, en el quin o ni el se hallan los 3 comandos sopo ados ac ualmen e, los cuales
son:
• REFRESH: Si e pa a que el mic ocon olado publique oda la in o mación de odos
sus senso es en el sub ópico del usua io que lo solici a pa a que, de es a o ma, en
caso de que algún usua io pida un e esco de los da os, los mic ocon olado es solo
en íen la in o mación al usua io solici an e e i ando así ene que ol e lo a en ia a
odos los susc ip o es de INFO.
• GETCONF: Su inalidad es la de in o ma al usua io que lo solici a de la con igu ación
de GPIOS y de ala ma de cada senso ins alado.
• SET: El cual es lo con a io a GETCONF, pues a a és de es e comando los usua ios
pueden con igu a los senso es ya ins alados de cada mic ocon olado .
5.2.2 Rama USR
En es a ama se encuen an las espues as a las dis in as pe iciones lanzadas a los
mic ocon olado es po pa e de los usua ios, acili ando así el esul ado de es as.
En el p ime ni el se iden i ican odos los usua ios que hayan ealizado alguna pe ición.
En el segundo ni el se encuen an las espues as a las pe iciones ealizadas:
• RESP: Ac ualmen e, es u ilizado pa a ecibi el esul ado de los comandos SET y
GETCONF.
• REFRESH: Es análogo a la ama SENS, pues aquí se eciben los da os de los
mic ocon olado es a los que se les ha solici ado el comando REFRESH.
• SCAN: Tema en el que los mic ocon olado es esponde án con su iden i icado cada
ez que el usua io lo solici e a a és de MESPF/SENS/SCAN.
5.3 QoS seleccionado
Pa a el p oyec o se ha á uso del QoS 0, pues es el más ápido, la in o mación de los
mensajes no es c í ica (ya que son da os de senso es que se uel en a en ia cada cie o iempo
y se puede hace un REFRESH en caso de necesi a lo) y, al momen o del desa ollo del TFG, el
QoS 2 aún no es á disponible en el ESP32.

53
5.4 Usua ios de MQTT
En MQTT es posible que las conexiones al b oke sean au en icadas con el uso de
usua ios, los cuales pueden ene de inidos una se ie de pe misos pa a publica /susc ibi se a
cie os ópicos añadiendo así un poco de segu idad, pues no se pe mi e la conexión a usua ios
sin au en ica se.
Pa a es e p oyec o se han de inido 3 ipos de usua ios con los siguien es pe misos:
1. MESPF_ADMIN: es el “supe usua io” que se u iliza pa a supe isa el sis ema a modo
de “debug”, pues iene pe misos de publicación y susc ipción a odos los ópicos.
2. MESPF_SENSOR: el que u ilizan los mic ocon olado es que publican la in o mación
de los senso es, puede publica en los siguien es ópicos:
a. MESPF/SENS/+/+/+/INFO
b. MESPF/SENS/+/+/+/ALERT
c. MESPF/USR/+/RESP
d. MESPF/USR/+/REFRESH/+/+/+/INFO
e. MESPF/USR/+/SCAN
Mien as que solo puede susc ibi se a los siguien es:
a. MESPF/SENS/SCAN
b. MESPF/SENS/+/+/+/CMD/+
3. MESPF_USER: u ilizado pa a los usua ios de la aplicación mó il, sus pe misos son
los con a ios que el de MESPF_SENSOR, es deci , solo puede susc ibi se a los
emas que MESPF_SENSOR pública y ice e sa.
NOTA: Los ni eles con “+” indican que es una “Wild Ca d” o comodín, po el cual se hace
e e encia a odos los emas del ni el que se encuen e “+”. Po ejemplo, u ilizando de e e encia
la es uc u a de ópicos del TFG, MESPF/SENS/ESP32_X/STATUS/1/CMD/+ hace e e encia a
MESPF/…/CMD/REFRESH, MESPF/…/CMD/GETCONF y MESPF/…/CMD/SET.
54
5.5 B oke
Como se ha explicado an e io men e, pa a pode lle a a cabo la e ansmisión de
mensajes en MQTT es necesa io la p esencia de un b oke que in e medie en e los publicado es
y los susc ip o es, con i iendo al b oke en la unidad más impo an e.
Al p incipio del desa ollo del p oyec o se enía planeado u iliza un ESP32 como b oke ,
pues se buscaba que odos los componen es del sis ema sean lo más pequeño posible, pe o,
as una búsqueda de posibles b oke s ya desa ollados pa a el ESP32 no se encon ó ninguno
con incen e, pues uno de los p oblemas de conexión en el ESP32 es que po de ec o solo admi e
16 conexiones simul áneas, me mando así su endimien o y la escalabilidad del p oyec o. Po
ello, y a modo de “ es eo”, se u iliza on b oke s públicos como el de Eclipse P ojec s
11
(man enido
po la comunidad) o el de HIVEMQ
12
aunque no po mucho iempo, ya que pos e io men e y
g acias a MOSQUITTO
13
, se pudo u iliza un o denado po á il como b oke pa a así no depende
de e ce os y, a su ez se pudo con igu a a las necesidades del p oyec o (c eación de usua ios
con pe misos, longi ud de mensajes, logs de mensajes, e c.).
Aunque el o denado po á il como b oke uncionaba bien, no e a iable man ene lo
encendido 24 ho as y su amaño choca con la iloso ía de “componen es pequeños”, has a que
se nos ue donado una RASPBERRY PI 2 MODEL B (el cual es un o denado monoplaca (SBC)
ca ac e izado po su pequeño amaño y ene odo lo necesa io en la placa base), sol en ando
así esos p oblemas.
A su ez, la RASPBERRY PI ambién si ió de pun o de acceso, pues a a és de una
an ena WiFi conec ada po USB es posible c ea una ed WiFi in e na u ilizada únicamen e po
los ESP32, aislándolos del ex e io . Con ello, el diag ama 2 de conexiones se cumpli ía al es a
la RASPBERRY PI conec ada con los ESP32 a a és de la WiFi, mien as que po E he ne lo
es a ía a la ed de la casa.
11
B oke Eclipse P ojec s
12
B oke Hi eMQ
13
MOSQUITTO es un b oke open sou ce desa ollado po Eclipse
55
Capí ulo 6 - Aplicación ESP32
Aquí se desc ibe en de alle odos los ecu sos que ges iona el ESP32 pa a hace
unciona nues o sis ema. Adminis ando la en ada/salida de in o mación desde a ios pun os
(Se ido HTTP, MQTT, WiFi, e c.).
6.1 Fiche os de ges ión de senso es
Pa a acili a la adminis ación de odos los posibles senso es que se puedan llega a
egis a en el ESP32, se ha op ado po di idi odas las a eas exis en es elacionadas con ellos
en 3 iche os de ges ión.
6.1.1 Ges o de GPIOS
Se ha á ca go de ges iona co ec amen e odos los GPIOS de los que disponga nues o
ESP32, que como ya se ha mencionado an e io men e es muy p obable que no coincidan. El
p oyec o es á pensado pa a hace uso del modelo ESP-WROVER-B. En caso de usa un modelo
dis in o a ese, se debe á ac ualiza los GPIOS a los que el modelo admi a.
El iche o bloquea á los GPIOS que se seleccionen du an e la con igu ación de nues o
sis ema (puede da se el caso de que un GPIO no se bloquee si se a a de un canal que pueda
se compa ido, como po ejemplo I2C). También el caso con a io, libe a á los GPIOS que dejen
de se usados pa a que pueda ol e a se seleccionado.
6.1.2 Ges o de ecolección
Es e iche o se enca ga á de ecolec a in o mación ela i a a lo senso es, an o las
a iables del en o no que calcule, como los posibles pa áme os o GPIOS que lo de inan.
Básicamen e lo que hace es almacena odas las unciones “ge ” de los senso es. Esas son:
• X_ge _senso s_da a: unción que en ía da os p opios del senso como su nomb e.
Y ambién las a iables que calcula.
• X_ge _senso s_gpios: unción que en ía los GPIOS que es án siendo usados po
las unidades de ese senso .
• X_ge _senso s_addi ional_pa ame e s: unción que en ía los posibles pa áme os
adicionales que ue an necesa ios pa a el co ec o uncionamien o del senso .
Casi oda la in o mación que de uel e es e ges o lo hace en o ma o JSON.
56
6.1.3 Ges o de con igu ación
Es el ges o in e media io en e el usua io y los senso es que se desean con igu a .
Pe mi e con igu a alo es como los GPIOS que se desean usa , cambia los umb ales de ala ma
de una a iable e incluso desplega o elimina unidades de un ipo de senso . Almacena odas
las unciones “add”, “dele e” y “se ” de los senso es. Esas son:
• X_add_senso : unción que ealiza odo lo necesa io pa a desplega una nue a
unidad de cualquie senso egis ado.
• X_dele e_senso : unción que ealiza lo necesa io pa a elimina una unidad de
cualquie senso egis ado.
• X_se _gpios: unción que hace cambios pa a es ablece el uso de nue os GPIOS.
Libe a los que se es aban usando y bloquea los que se quie en usa .
• X_se _pa ame e s: unción que hace cambios en los pa áme os adicionales
necesa ios pa a el co ec o uncionamien o del senso .
• X_se _loca ion: unción que hace cambios en la localización en la que se encuen a
una unidad.
• X_se _ale _ alues: unción que hace cambios en las a iables elacionadas con las
ala mas de un senso .
No a: ‘X’ equi ale al nomb e del senso a la que se en ía la o den (po ejemplo
dh 22_se _loca ion(…)).
6.2 Sinc onización
O o de los p oblemas encon ados du an e el desa ollo del p oyec o ue el de la
sinc onización en e los ESP32 y el es o del sis ema ya que hab ía que, po ejemplo, si un
usua io ecibe dos mensajes a la ez del mismo ESP32 o alguno o o que se haya quedado
“a ascado” en la ed no hab ía o ma de sabe cuál es el más ecien e y, po an o, el más ealis a
con la si uación ac ual. Pa a sol en a es e p oblema se pensa on en a ias opciones que se
exponen a con inuación.
63
La memo ia lash que ienen los ESP32 po lo gene al son de 4MB, aunque los puede
habe de o os amaños como 8MB o incluso 16 MB (También cabe la posibilidad de que no
enga). La memo ia se encuen a di idida en pa iciones, más conc e amen e en las siguien es:
Nomb e
Tipo
Sub ipo
desplazamien o
Tamaño
n s
da a
n s
0x9000
0x14000
o ada a
da a
o a
0x1D000
0x2000
phy_ini
da a
phy
0x1F000
0x1000
o a_0
app
o a_0
0x20000
0x1F0000
o a_1
app
o a_1
0x210000
0x1F0000
Tabla 6-1. Tabla de pa iciones de la memo ia
Es a abla no es una de las que nos o ece el en o no de Esp essi , se a a de una abla
de pa iciones pe sonalizada. Es o se debe a que no eníamos espacio su icien e pa a odo el
p og ama. Po ello se decidió pe sonaliza la, lo cual nos pe mi ió adqui i odo el espacio de la
memo ia que no es aba siendo u ilizado, con es o se consiguió el doble de memo ia de la que se
enía p e iamen e.
En es e caso nos cen a emos en la pa ición “n s” que se á el luga donde se almacenen
las a iables o bloques de a iables que nos in e esen.
La in o mación se almacena á po pa ejas cla e - alo . Cuando se use una misma cla e
múl iples eces a la ho a de almacena in o mación, solo pe sis i á la úl ima de odas, el es o
queda án eliminadas po comple o.
La cla e no debe supe a los 15 ca ac e es (incluyendo el ca ác e nulo) y algunos de los
ipos de alo es que se pueden almacena son los siguien es:
• “In ” y “Uin ”, así como posibles subdi isiones de ellos (8 bi s, 16 bi s, e c.).
• “S ing”, el amaño máximo (incluido el ca ác e nulo) no debe supe a los 4000 by es
• Blob, es á pensado pa a almacena es uc u as. El amaño de la es uc u a no debe
supe a los 508000 by es o el 97,6% del amaño de la pa ición - 4000 by es, lo que
ocu a an es.

64
65
Capí ulo 7 - Despliegue del ESP32
A lo la go del desa ollo del p oyec o se ha u ilizado una placa de p o o ipo al que es aba
conec ado el ESP32 con odos los senso es a a és de un adap ado pa a el p opio ESP32, con
lo cual es o p o oca que odos los componen es es én expues os y no sea iable su uso en
ex e io es.
Ilus ación 7-1. Senso es conec ados a la placa de desa ollo F eeno e
Po lo an o, pa a sol en a el p oblema de que las conexiones de los senso es y el p opio
ESP32 es én expues os al ai e lib e se op ó po u iliza una caja de conexión es anca. De es e
modo, se pod ía ins ala el ESP32 con sus senso es en el ex e io o, simplemen e pa a aisla lo.
66
Ilus ación 7-2. Caja es anca
Sin emba go, al busca una caja aco de a las dimensiones de la placa que se es aba
u ilizando no se encon ó una que sea lo su icien emen e pequeña, po lo que, inalmen e, se
decidió po u iliza una placa de desa ollo especial pa a el ESP32, educiendo así
conside ablemen e el amaño ocupado en compa ación con la placa de p o o ipado.
Ilus ación 7-3. Compa ación placa de desa ollo F eeno e con uno especial pa a ESP32
67
Finalmen e, pa a ija el ESP32 a la caja se ha u ilizado silicona aplicado di ec amen e
en e la placa y la caja, se ha ijado un ozo de placa de p o o ipado pa a las omas de ie a y
alimen a con 3.3V a los senso es que lo necesi en y, pa a pode conec a los senso es desde el
ex e io se han u ilizado ubos de PVC.
Ilus ación 7-4. Mon aje caja es anca con una ba e ía ex e na como uen e de alimen ación
7.1 Fuen e de ene gía
O a cues ión impo an e pa a el mon aje inal del ESP32 ue la de qué se u iliza ía pa a
alimen a al ESP32 y odos los senso es, pues al ene pensado que se u iliza á en ex e io es,
no se pod ía depende de que siemp e hubiese un enchu e ce ca.
Po ello, se pensó en hace uso de ba e ías de lión li io 18650 pa a alimen a al ESP32,
las cuales pod ían se ca gadas a a és de paneles sola es du an e el día siguiendo el siguien e
esquema:
68
Figu a 7-1. Esquema paneles sola es
En el que se u iliza un módulo TP4056 pa a con ola la ca ga y desca ga de la ba e ía, y
un MCP1700 pa a egula el ol aje de la ba e ía, pues en su máxima capacidad iene una salida
de 4.2 V cuando el ESP32 admi e como mucho 3.3V.
No obs an e, as una e isión de las especi icaciones del TP4056
15
se ha is o que no es
del odo segu o u iliza lo con ese esquema debido a su p opio uncionamien o, el cual consis e,
de o ma esumida, en suminis a una co ien e cons an e (después de una se ie de
comp obaciones) y, con o me de ec e que se es á llegando a los 4.2V a bajando la co ien e
has a el pun o que de ec e que la ba e ía ya no lo es á abso biendo, dando así po e minada la
ca ga.
Figu a 7-2. P oceso de ca ga del TP4056
15
TP4056 - Da ashee

69
Es po ese úl imo paso que no es ecomendable el uso de es e módulo en el an e io
ci cui o, pues de la ba e ía es á “colgando” el ESP32 y odos sus senso es, los cuales es án
cons an emen e consumiendo la ene gía p o ocando que la ca ga nunca acabe, desgas ando
así la ida ú il de la ba e ía conside ablemen e (pues se es á ca gando y desca gando odo el
a o e, incluso pod ía sob eca ga se).
Po es a azón se buscó o a o ma de pode ca ga la ba e ía y alimen a el ESP32 sin
co e iesgos, encon ando así el MCP73871, el cual es un módulo que se enca ga de ges iona
la ca ga de la ba e ía y de la alimen ación del ESP32 de o ma segu a. Sin emba go, a la echa
de la ealización del mon aje inal es e componen e no es u o disponible y su en ega se es imaba
después de la en ega del TFG, po lo que no se ha podido lle a a cabo, quedándose como un
plan de abajo u u o pode in eg a ba e ías de li-ión li io y paneles sola es como uen e de
ene gía al p oyec o.
Ilus ación 7-5. MCP73871
70
71
Capí ulo 8 - He amien as u ilizadas
Todo el p oceso de c eación de nues o sis ema se ha lle ado a cabo g acias a una se ie
de he amien as o p og amas que nos lo han pe mi ido. A con inuación, eamos algunas de las
más ele an es:
8.1 A duino IDE
A duino IDE es uno de los en o nos de desa ollo más conocidos del mundo. Su ama se
debe a la simplicidad de su in e az, la can idad de lib e ías p ep og amadas que con iene y la
g an compa ibilidad que iene con los mic ocon olado es.
Fue c eada pa a pone en uncionamien o sus placas de A duino, pe o con la ayuda de
e ce os, a día de hoy se pueden p og ama aplicaciones e ins ala las en muchos más ipos de
placas, en e ellas las del ESP32.
Ilus ación 8-1. Vis a p incipal A duino IDE
72
Como se puede obse a , el concep o que se lle a a cabo en es e en o no de desa ollo
es muy simple, usando únicamen e una unción “se up” que se ejecu a al inicio del p og ama y
una unción “loop” que se ejecu a a con inuación del “se up” y lo hace de mane a cíclica cada
ez que llega al inal de sí misma.
A duino IDE es un en o no an amigable y ácil de usa que nos hemos se ido de él pa a
in oduci nos en el mundo de los mic ocon olado es ESP32. Hicimos di e en es p uebas con
di e sos pe i é icos pa a ene una idea inicial de como empeza a desa olla odo el abajo.
Pe o llegado el momen o se decidió que A duino no iba a se el en o no que se usase
pa a nues o p oyec o inal. Noso os buscábamos algo que nos pe mi iese lle a a cabo lo que
eníamos en men e, especi icando con más de alle odo. Así que nos asladamos al en o no de
desa ollo o ecido po la p opia compañía c eado a de los ESP32. Es e en o no se llama SDK-
IDF.
8.2 SDK-IDF
SDK-IDF es el en o no de desa ollo aconsejado pa a la p og amación de los ESP. Es
mucho más in e esan e que A duino debido a que da una mayo libe ad al usua io pa a lle a a
cabo el p oyec o que ealmen e quie e. Esa libe ad se aduce ambién en una mayo
complejidad a la ho a p og ama lo que necesi as, pues o que se a a de un en o no de desa ollo
más comple o como pod ían se Eclipse o Visual S udio.
Ilus ación 8-2. Vis a p incipal SDK-IDF
79
S udio, lo que indica que dispond emos de una mayo can idad de plugins y he amien as en
And oid S udio especiales pa a es e lenguaje.
Además, Ko lin se p esen a como un lenguaje más conciso y ácil de lee y de esc ibi .
Es o nos pe mi e esc ibi código más ápido y, po an o, de mane a más e icien e.
Po úl imo, se debe hace especial hincapié en su p incipal di e encia con Ja a, y es el
en oque que iene Ko lin an e la nulabilidad. Ya qué los ipos de da os en Ko lin, no pueden se
nulos po de ec o, y, en consecuencia, los e o es de NullPoin e se de ec an en iempo de
compilación en luga de en iempo de ejecución, o eciendo un código más segu o y obus o.
9.1.3 SQLi e
Fue necesa io c ea una base de da os pa a nues a aplicación y la elección es SQLi e.
SQLi e es una base de da os elacional de código abie o muy común que además se
encuen a in eg ada de mane a na i a en And oid y, po an o, no ha sido necesa io la ins alación
de paque es adicionales.
También iene poca complejidad y es una base de da os con la que ya había abajado
con an e io idad en a ias asigna u as de la ca e a, además es una base de da os muy lige a,
que ocupa poco espacio de almacenamien o y memo ia RAM.
O o aspec o a des aca es la elocidad con la que se ealizan las esc i u as y las lec u as,
haciendo que nues a aplicación sea más ápida y no no emos delays.
Todo es o se consigue g acias a 4 ac o es undamen ales:
• Su a qui ec u a, ya que es á diseñada como una base de da os sin se ido que se
ejecu a de mane a local, po an o, no es necesa io ealiza pe iciones a la base de
da os que puedan ene delay en la espues a.
• Las ansacciones de la base de da os es án op imizadas de mane a que pe mi e
a ias ope aciones ealiza se en un solo bloque, educiendo así el núme o de
esc i u as necesa ias.
• Uso de índices: ya que, al ene iden i icado es únicos, es más ácil busca y clasi ica
los elemen os en la base de da os, aduciéndose es o en una mayo elocidad de
acceso a la in o mación con enida.
• Y, po úl imo, el uso de sis ema de a chi os del sis ema ope a i o subyacen e pa a el
almacenamien o de da os.

80
9.1.4 Sha ed P e e ences
Los Sha edP e e ences en And oid, son iche os que con ienen pa es, cla e- alo , donde
la cla e se á un s ing y el alo puede se desde un s ing a un booleano o incluso un conjun o
de s ings. Y que nos pe mi en el acceso y la esc i u a de da os de mane a sencilla.
Es un mé odo pe ec o pa a gua da p e e encias y con igu aciones del usua io, y dado
que nues a aplicación necesi a gua da p e e encias y con igu aciones.
9.1.5 View Binding
Usualmen e en And oid se hacía empleo del mé odo indeViewById() pa a e e encia los
componen es de las is as. Es o hace necesa io que si una is a iene a ios elemen os,
engamos que e e encia cada uno de los elemen os median e el mé odo indViewById(). Y es
una a ea que puede se p opensa a e o es, además de se muy ediosa de hace , dado que
hay is as que pueden ene muchos componen es isuales y cada ez que se añade un nue o
componen e debemos e e encia de nue o. No solo eso, sino que ambién el impac o que se
iene en la can idad de código que se debe esc ibi , es o o pun o en con a.
Es po eso que su ge View Binding, que se p esen a como una he amien a que nos
pe mi e accede a la is a de un Ac i i y o F agmen .
Pa a lle a a cabo su a ea, View Binding c ea una clase de inculación pa a cada a chi o
de is a que enemos, un layou , y a odas las componen es de esa is a, po an o, una ez
hayamos e e enciado el layou , ya podemos accede a odas sus componen es simplemen e
accediendo al obje o que se ha c eado de la is a.
Figu a 9-1. Esquema de in e acción is a/modelo
81
Además, la inculación se gene a au omá icamen e cada ez que se ealiza la build de la
aplicación. Lo que signi ica que la is a siemp e es a á ac ualizada al añadi nue os componen es
isuales den o de es a.
En la igu a in e io se mues a un ejemplo donde inculamos el layou de la ac i idad y
con igu amos un lis ene pa a el bo ón que enemos den o de la is a.
Ilus ación 9-2. Ejemplo de uso de un obje o binding
9.1.6 Se icios de And oid
Un se icio en And oid, es un componen e de una aplicación que nos pe mi e lanza
ope aciones de la ga du ación en segundo plano, pe mi iendo que nues a aplicación lance un
se icio que se man enga en ejecución incluso cuando el usua io haya ce ado la aplicación. Es o
nos da á la posibilidad de usa es e se icio combinado con las no i icaciones de And oid,
c eando un canal de no i icaciones con un único id. De es a mane a nues o se icio mos a á
los mensajes ecibidos en ese canal seleccionado.
Figu a 9-2. Comunicación se ice con no i ica ion manage
82
9.1.7 JSONTokene
He amien a que pe mi e p ocesa da os en o ma o JSON. Es una clase que iene con
la biblio eca JSON-ja a y acili a el abajo con obje os JSON en Ko lin y po supues o, en Ja a.
Funciona analizando cadenas de ex o y ex ayendo obje os JSON según la sin axis que
debe ía ene un obje o JSON.
9.1.8 Paho MQTT
Lib e ía open sou ce que nos pe mi e, median e mé odos sencillos, es ablece
conexiones a a és de MQTT. Es as conexiones son con b oke s MQTT que ac úan como
se ido es in e media ios en e los disposi i os que publican y los que eciben los mensajes. En
es e caso nues a aplicación ac úa como clien e que in en a comunica se con o os clien es que
son los mic ocon olado es.
9.2 Especi icación de equisi os de la aplicación mó il
En es e apa ado, amos a desc ibi los ac o es y los casos de uso que se han de inido
pa a la aplicación. Pa a simpli ica el desa ollo del esquema, ag upamos los casos de uso en
módulos uncionales y de inimos los ipos de usua ios que u iliza án nues a aplicación.
9.2.1 Ac o es de la aplicación
En la aplicación podemos desc ibi los siguien es ipos de usua ios:
• Usua io no logueado: es el usua io que aún no se ha conec ado y, po an o, no se
ha conec ado con el b oke MQTT. Dándoles la posibilidad solo de pode conec a se
con usua io ya exis en e o con un nue o usua io y con nue a in o mación de conexión
MQTT.
• Usua io logueado: es el usua io que ya ha in oducido los da os pa a es ablece
conexión con el b oke MQTT, en consecuencia, dispone de odas las uncionalidades
de la aplicación.
83
9.2.2 Módulos de la aplicación
Los módulos uncionales de la aplicación que se han de inido son los siguien es:
• Módulo de scan.
• Módulo de edición.
• Módulo p incipal.
• Módulo de login.
9.2.2.1 Módulo de login
En es e módulo se mues an las uncionalidades del usua io que aún no ha es ablecido
conexión con el b oke MQTT y, po an o, es a án limi adas. En la Figu a ep esen amos el
diag ama con los casos de uso pa a el módulo espec i o.
Figu a 9-3. Diag ama casos de uso módulo de login
A con inuación, desc ibi emos los casos de uso del módulo de login.
Login nue o usua io
Ac o es
Usua io no logueado
Desc ipción
El usua io no logueado accede al menú de Login que le pe mi en
iden i ica se y conec a se al b oke Mq .
P econdición
Que el usua io conozca el usua io, la con aseña y la IP pa a conec a se al
b oke MQTT.
Secuencia
No mal
1. El usua io selecciona la opción de Nue os Da os Mq .
2. In oduce la ip y el pue o del b oke Mq .
84
3. In oduce usua io y con aseña pa a iden i ica se en el b oke .
4. In oduci el nomb e de usua io que usa emos pa a los ópicos en
los que publica emos y ecibi emos los mensajes Mq .
Pos condición
El usua io accede a la página p incipal de ges ión y isualización de
disposi i os ESP32.
Tabla 9-1. Login nue o usua io
Login usua io exis en e
Ac o es
Usua io no logueado
Desc ipción
El usua io no logueado accede al menú de Login que le pe mi en
iden i ica se y conec a se al b oke Mq .
P econdición
Que el usua io haya accedido an e io men e con un usua io, con aseña e
IP pa a conec a se al b oke MQTT.
Secuencia
No mal
1. El usua io selecciona la opción de Usa Da os Gua dados.
Pos condición
El usua io accede a la página p incipal de ges ión y isualización de
disposi i os ESP32.
Tabla 9-2. Login usua io exis en e
Sali de la aplicación
Ac o es
Usua io no logueado
Desc ipción
El usua io no logueado puede ce a la aplicación.
P econdición
Que el usua io es é en el menú de login.
Secuencia No mal
1. El usua io pulsa el bo ón A ás del mó il.
Pos condición
La aplicación se ce a á.
Tabla 9-3. Sali de la aplicación
9.2.2.2 Módulo p incipal
En es e módulo, se encuen an las uncionalidades p incipales de la aplicación, que ienen
que e con la isualización de los disposi i os conec ados y el acceso a la ges ión de es os. En
la Figu a podemos e el diag ama de casos de uso del módulo en cues ión.

85
Figu a 9-4. Diag ama casos de uso módulo p incipal
Desc ibimos a con inuación los casos de uso más de alladamen e.
Elimina disposi i o exis en e
Ac o es
Usua io logueado
Desc ipción
Elimina un disposi i o exis en e de la lis a de disposi i os a los que
es amos susc i os pa a ecibi in o mación de sus senso es.
P econdición
El disposi i o debe es a en la lis a de disposi i os a los que es amos
susc i os.
Secuencia
No mal
1. Selecciona uno de los disposi i os y el ondo de ese disposi i o se
uel e oscu o pa a indica que es á seleccionado.
2. Seleccionamos el bo ón con símbolo de con enedo que se
encuen a en el menú supe io pa a elimina lo.
3. El disposi i o desapa ece á de la lis a de disposi i os de los que
ecibimos in o mación.
Pos condición
El disposi i o se elimina á de la lis a de disposi i os y dejamos de es a
susc i os al ópico en el que se publica in o mación sob e ese disposi i o.
Tabla 9-4. Elimina disposi i o exis en e
Re esca in o mación del disposi i o
Ac o es
Usua io logueado
Desc ipción
Re esca la in o mación de los senso es de un disposi i o.
P econdición
El disposi i o debe es a en la lis a de disposi i os a los que es amos
susc i os.
86
Secuencia
No mal
1. Pulsamos el bo ón con símbolo de e esca que se encuen a en la
esquina de echa del nomb e del disposi i o.
2. La aplicación publica en el ópico Re esh del disposi i o con el
nomb e del usua io y el ID del mensaje.
3. La aplicación susc ibe al ópico e esh donde publica á el
disposi i o ESP32 en cues ión.
4. Se ecibe un JSON con la in o mación de los senso es del
disposi i o.
5. Se pa sea el JSON y se mues a la in o mación de los senso es de
ese disposi i o.
Pos condición
La aplicación publica á en su ópico pa a ese disposi i o y después ecibi á
la in o mación de los senso es del mismo, e escando el alo si hubie a
cambiado.
Tabla 9-5. Re esca in o mación del disposi i o
Acceso a la is a de edición de disposi i os
Ac o es
Usua io logueado
Desc ipción
Acceso a la is a con disposi i os disponibles.
P econdición
El usua io debe es a en la página p incipal de la aplicación y habe
es ablecido conexión con el b oke Mq .
Además, el disposi i o debe es a en la lis a de disposi i os a los que
es amos susc i os.
Secuencia
No mal
1. Seleccionamos el disposi i o que deseamos edi a .
2. Una ez seleccionado pulsamos el bo ón con símbolo de lápiz que
enemos en el menú supe io pa a edi a el disposi i o.
Pos condición
Accedemos a la is a de edición del disposi i o.
Tabla 9-6. Acceso a la is a de edición de disposi i o
Acceso a la is a de escaneo de disposi i os
Ac o es
Usua io logueado
Desc ipción
Acceso a la is a con disposi i os disponibles.
P econdición
El usua io debe es a en la página p incipal de la aplicación y habe
es ablecido conexión con el b oke Mq .
Secuencia
No mal
1. Pulsamos el bo ón “+” que se encuen a en el menú supe io .
2. La aplicación lanza á la ac i idad de escaneo y nos mos a á o a
is a.
Pos condición
Accedemos a la is a de escaneo de disposi i os disponibles.
Tabla 9-7. Acceso a la is a de escaneo de disposi i os
87
9.2.2.3 Módulo de scan
Figu a 9-5. Diag ama casos de uso módulo scan
En es e módulo, es á con enido la uncionalidad elacionada con el escaneo y la
posibilidad de añadi disposi i os ESP32 que se encuen an publicando en el b oke con el que
hemos es ablecido comunicación. En la Figu a obse amos el diag ama de casos de uso de es e
módulo.
Escaneo de disposi i os
Ac o es
Usua io logueado
Desc ipción
Realiza un escaneo de los disposi i os que es án publicando en el b oke
ac ualmen e.
P econdición
El usua io debe es a en la página de Scan de la aplicación y habe
es ablecido conexión con el b oke Mq .
Secuencia
No mal
1. Es a en la página de scan de la aplicación.
2. La aplicación publica á en el ópico de Scan.
3. Se eciben los mensajes de los disposi i os conec ados al b oke
en o ma o JSON.
4. Se pa sea el JSON y se ex ae el nomb e único de los disposi i os.
5. Mos amos una lis a con los nomb es de los ESP32 disponibles.
Pos condición
Se mos a án los disposi i os ESP32 disponibles con su iden i icado
único.
Tabla 9-8. Escaneo de disposi i os
88
Añadi un disposi i o
Ac o es
Usua io logueado
Desc ipción
Añadi un disposi i o ESP32 nue o.
P econdición
El usua io debe es a en la página de Scan de la aplicación y habe
es ablecido conexión con el b oke Mq . También debe ene disposi i os
disponibles siendo mos ados.
Secuencia
No mal
1. Selecciona el disposi i o que cambia á de colo pa a sabe que
es á seleccionado.
2. Pulsa el bo ón de ADD pa a susc ibi nos al disposi i o y añadi lo a
la lis a de disposi i os.
3. El disposi i o desapa ece de la lis a de disposi i os disponibles.
4. El disposi i o es añadido a la base de da os.
Pos condición
Se gua da á el nomb e único del disposi i o en la base de da os de la
aplicación y desapa ece á de la lis a de elemen os disponibles.
Tabla 9-9. Añadi un disposi i o
9.2.2.4 Módulo de edición
El módulo de edición con iene odas las uncionalidades elacionadas con la edición de
un disposi i o ESP32 y sus pa áme os. En la Figu a se mues a el diag ama de casos de uso
más de alladamen e.
Figu a 9-6. Diag ama casos de uso módulo de edición
95
Ilus ación 9-3. Pan alla de p ime acceso
La igu a in e io nos mues a lo que e el usua io una ez selecciona la opción de
NUEVOS DATOS MQTT desplegándose un menú de Login, donde cada cuad o de ex o se ha
diseñado u ilizando la lib e ía Ma e ial de And oid. G acias a es a he amien a encon amos el
icono dibujado en cada ecuad o pa a indica nos más cla amen e qué in o mación debe es a
ellenada en ese ecuad o.
Además, se obliga al usua io a ellena cada campo. En caso con a io se le in o ma á
que no puede in en a la conexión y se le eque i á ellena odos los campos.
En caso de habe ellenado co ec amen e odos los campos, al pulsa el bo ón SIGN y
se ecoge á la in o mación con enida en los campos y se usa á pa a in en a es ablece conexión
con el b oke Mq . Si se ha es ablecido la conexión co ec amen e, la in o mación de inicio de
sesión se á gua dada en el iche o Sha edP e e ences y la aplicación nos lle a á al menú
p incipal de usua io Logueado como se mues a en la igu a.

96
Ilus ación 9-4. Pan alla de login
9.5.2 Módulo p incipal
En es a pan alla el usua io puede e odos los disposi i os Esp32 a los que es á susc i o,
pe mi iendo añadi y elimina elemen os de o ma dinámica, iéndose es as modi icaciones
e lejadas en las pan allas.
Pa a consegui es o, se ha u ilizado un Recycle View, que es un componen e de la lib e ía
de And oid que pe mi e mos a conjun os de da os dinámicos.
Pa a ello, se in oduce en la is a un elemen o del ipo Recycle View, es e Recycle View
necesi a á un adap e , que se enca ga á de in la el diseño de la lis a y incula cada uno de los
componen es de es a.
9.5.2.1 Gene ación y isualización de elemen os
Pa a en ende lo mejo , c ea emos la is a de cada uno de los elemen os que que emos
mos a en la lis a, que se á el I emViewHolde , con la lógica de es a pan alla y la is a, como se
mues a en la siguien e igu a:
97
Ilus ación 9-5. Visualización de elemen os (I emViewHolde )
En es a is a se ca ga án g acias a la lógica del ViewHolde los obje os Esp32 en la is a.
Haciendo que los senso es del obje o Esp32 que no es én inicializados po que no es án
ins alados no mos a án sus alo es y solo e emos los que enemos ins alados.
Una ez c eada la is a y la lógica de cada elemen o, se pasa una lis a de es os elemen os
al adap e , de es a mane a enemos con ol sob e lo que ocu e en cada elemen o de la is a y
en los cambios que ocu an en cada disposi i o que es é en la lis a.
Po an o, lo que hacemos en es a pan alla, es ene una lis a de Esp32, que se le
p opo ciona al adap e , que in la á cada elemen o median e una unción que ac ualiza la is a de
cada uno de ellos. Pa a pode isualiza mejo el uncionamien o del Recycle View podemos
obse a la igu a in e io .
Figu a 9-8. Esquema Recycle View
Es o signi ica que cuando se ac ualice uno de los elemen os, po que hemos ecibido
in o mación de ese Esp32, solo ac ualiza emos la is a de ese elemen o, lo que hace que es a
o ma de ep esen a da os sea muy e icien e.
98
Ilus ación 9-6. Pan alla p incipal
Aho a que sabemos cómo se cons uye la is a, debemos sabe cómo se gene an los
elemen os de es a.
En p ime a ins ancia, los elemen os que se en son los senso es que publican en el ópico
del elemen o 1 del Esp32 al que es amos susc i os. Pe o pa a pode di e encia cada senso del
mismo ipo que iene un Esp32, se c ean elemen os nue os isuales con el mismo nomb e del
Esp32 y añadiendo el núme o del senso del mismo ipo, po an o, al como se e en la igu a
Pan alla P incipal si enemos a ios senso es del mismo ipo, se gene an elemen os isuales
pa a di e encia cada nue o elemen o.
Pa a pode e esca la in o mación de un elemen o, lo que hace el usua io es pulsa el
bo ón de e esco del elemen o en cues ión. Al pulsa es e bo ón, lo que hace la aplicación es
publica un JSON con su nomb e y un ID del mensaje es ando susc i o al ópico
MESPF/USR/NOMBRE_USUARIO/REFRESH/ESP32_X/+/+/INFO, de es a mane a ecibi emos
in o mación de odos los senso es que enga el ESP32.
99
9.5.2.2 Elimina elemen o
Cada elemen o de la lis a se puede selecciona pulsando sob e él. Es o ha á que cambie
el colo de ondo indicándonos que el elemen o es á seleccionado y u ilizando el bo ón
seleccionado en la igu a in e io elimina á ese elemen o, an o de la lis a, como de la base de
da os, y se desusc ibi á de los ópicos de ese mic ocon olado Esp32.
Ilus ación 9-7. Menú supe io
9.5.2.3 Añadi elemen o
El elemen o “+” del menú supe io , ab i á una nue a ac i idad lle ándonos a o a en ana,
donde pod emos obse a los mic ocon olado es disponibles. Es e es el módulo de scan que
explicamos en el siguien e pun o.
9.5.2.4 Edi a elemen o
El elemen o Edi a del menú supe io unciona de mane a pa ecida al bo ón de elimina .
Al selecciona un elemen o y selecciona la opción de Edi a que es el símbolo es an e. Se
lanza á una nue a ac i idad, pe o es a ac i idad end á ex as, que es una o ma de pode
compa i a iables y elemen os en e ac i idades al lanza una nue a ac i idad. En nues o caso,
en ia emos los da os del Esp32 a esa ac i idad.
9.5.3 Módulo de scan
La is a que se mues a en la igu a indica que enemos un mic ocon olado Esp32 que
es á publicando en el b oke . La implemen ación de la lis a de disposi i os disponibles se hace
de la misma mane a que se ha diseñado y cons uido el Recycle View de la página p incipal.
Pe o pa a es e caso los elemen os son de ipo Tópico y solo ienen un nomb e y un alias
como a iables de la clase. Po an o, hemos c eado o a clase Adap e pe sonalizado pa a los
ópicos.
Al accede a la is a, el usua io publica en MESPF/SENS/SCAN un JSON con su nomb e
y el ID del mensaje y susc ibe al ópico MESPF/USR/USER_NAME/SCAN pa a ecibi los
disposi i os Esp32 disponibles pa a susc ibi y ecibi in o mación de sus senso es.
100
Pa a ello, el usua io selecciona á el elemen o al que desea susc ibi se iendo que el colo
del ondo de ese elemen o cambia pa a indica que es á seleccionado, y pulsa á el bo ón de
ADD, añadiendo el elemen o a la base de da os y eliminándolo de la is a. Los elemen os a los
que susc ibamos en es a is a son los que se mos a án en la pan alla p incipal.
Ilus ación 9-8. Pan alla de scan
9.5.4 Módulo de edición
Po úl imo, la pan alla de Edición, al inicia podemos obse a en p ime luga el nomb e
del disposi i o que es amos edi ando. El p ime cuad o de ex o pe mi e edi a el alias que se
mos a á en la aplicación una ez u ilicemos el bo ón de gua dado que es á al lado de es e.
Pa a el es o de uncionalidades, el usua io iene que hace uso del selec o de senso es
que nos pe mi e elegi el ipo de senso que que emos modi ica . El n.º del senso en cues ión y
los umb ales, que cambian el ex o mos ado dependiendo del ipo de senso que hemos
seleccionado. Y no solo eso, además ambién se mues an los pa áme os especiales de los
disposi i os que los engan, como podemos obse a en la igu a que ocu e con la p o undidad
del anque y la dis ancia del senso .

101
Ilus ación 9-9. Pan alla scan HC-SR04
Ilus ación 9-10. Pan alla scan DHT22
102
Al consul a los da os, si exis e el senso , e emos cómo los da os se ac ualizan,
incluyendo el swi ch que mues a si la ala ma es á o no ac i a como en la igu a in e io .
Ilus ación 9-11. Pan alla consul a co ec a
Ilus ación 9-12. Pan alla consul a e ónea
103
Es o ocu e de la misma mane a al in en a modi ica los pa áme os del senso , en caso
de éxi o se nos mues a po pan alla y se puede ol e a consul a pa a e que los cambios han
su ido e ec o. Y en caso con a io se nos de uel e un código con e o es que pa seamos y
mos amos al usua io median e un Toas .
Ilus ación 9-13. Pan alla de e o al gua da modi icación
104
111
b. P og am a ja asc ip ile ha allows he web applica ion o connec o he
ESP32 mic ocon olle and communica e wi h i ia XML eques s.
c. Gene a e he necessa y ools o be able o con igu e he Wi-Fi, NTP and MQTT
connec ions.
d. Display in o ma ion abou he senso s connec ed o he mic ocon olle .
e. Allow he web applica ion o add o emo e senso s, as well as o be able o
con igu e all i s pa ame e s dynamically.
. Beau i y he in e ace using CSS.
7. Tes s and ixes
a. Pe o m sys em es s o check ha all componen s a e wo king p ope ly.
b. Ca y ou he ele an adjus men s and co ec ions o he so wa e and he
con igu a ion o ou sys em.
8. Documen a ion
a. Documen he de elopmen p ocess.
b. P epa e a p esen a ion o he p ojec o de ense, including a demons a ion o
i s ope a ion.
Conclusions and u u e wo k
Th oughou he p ocess, we encoun e ed se e al di icul ies, such as he use o new
echnologies like Ko lin. The use o ESP32 mic ocon olle s was also a challenge, as we had o
unde s and hei a chi ec u e and ope a ion in o de o ake ad an age o hei ull po en ial.
The MQTT p o ocol, which was a i s app oach o all o us, was also an ex a di icul y o
unde s and and be able o use i co ec ly.
Howe e , he objec i es se a he beginning o he p ojec ha e been me sa is ac o ily,
ul illing he ini ial expec a ions and e en su passing hem by implemen ing unc ionali ies such
as he OTA ha allows he ESP32 o be upda ed wi hou he need o be physically nex o i .
As he sys em is, he e we e possible imp o emen s o he u u e, bu due o lack o ime
o esou ces hey could no be implemen ed in his e sion.
Some secu i y p oblems we e ound, such as:

112
• The possibili y o iewing h ough a ne wo k ea esd oppe (using Wi esha k, o
example) he packe s sen by MQTT because hey do no ha e any enc yp ion. The
sugges ed solu ion o he u u e is o include SSL wi h ce i ica e be ween he b oke
and he ESP32 o da a enc yp ion.
• Easy physical access o he ESP32, allowing anyone o connec h ough a USB po
and load he so wa e o hei choice. Fo his pu pose, he access o he ESP32 is
shielded.
• Th ough he OTA unc ionali y, i is possible o upload any bina y ile o he ESP32,
ei he by being connec ed o he same Wi-Fi ne wo k o by causing one o he ESP32s
o en e AP+STA mode. When en e ing AP+STA mode, you Wi-Fi and passwo d a e
public knowledge, which may make he ini ial con igu a ion easie o hi d pa ies. I is
also sugges ed o con igu e OTA o only suppo code o signed iles o u u e
eleases o a oid he possibili y o uploading hi d pa y iles
113
CONTRIBUCIONES PERSONALES
En ique Juez de Miceli
Es quien se enca ga de la p og amación y buen uncionamien o de la aplicación a ni el
del ESP32 (jun o con su compañe o Fab izio).
Su apo ación a es e p oyec o se puede di idi en dos bloques:
• Pe i é icos:
Ha sido el enca gado de p og ama oda la lógica de ás de los d i e s. Haciendo una
e olución cons an e de los mismos du an e el desa ollo del sis ema. Empezando po una
p ime a e sión comple amen e es á ica sin posibilidad de modi ica pa áme os elacionados con
ellos, ni ges iona más de una unidad al mismo iempo. Has a una e sión bas an e comple a
donde se pe mi e el despliegue y epliegue de unidades de mane a dinámica du an e la ejecución
del p og ama, así como, la modi icación de muchos de los pa áme os que de inen a un
senso /unidad, como po ejemplo sus GPIOS, los umb ales de ale a pa a cualquie a de los
alo es que calcule, la localización donde se encuen a la unidad u o os pa áme os adicionales
que sean c uciales pa a el buen uncionamien o de los senso es.
Pa a lle a a cabo es a labo , ha desa ollado dos iche os desde ce o y ha ampliado en
g an medida uno c eado po su compañe o Fab izio. Todos ellos enca gados de ges iona a los
senso es.
C eó un iche o pa a los GPIOS que maneja el ESP32 que es emos u ilizando, con el
p opósi o de hace una co ec a ges ión de los mismos y a su ez acili a en g an medida la
compa ibilidad en e dis in os modelos de ESP32, donde el usua io an solo end á que modi ica
unas pocas a iables pa a adap a la a sus necesidades.
El o o iche o que hizo se enca ga de in e media las pe iciones “Add” “Dele e” y “Se ” de
los usua ios con los senso es, c eando un pun o común al que di igi las pe iciones, ya sean
desde el se ido HTTP como de la aplicación mó il ía MQTT.
El iche o que amplió es el enca gado de ecolec a in o mación de los senso es. La
p ime a e sión solo e a capaz de ecolec a los alo es calculados po los senso es, pe o lo
amplió has a el pun o que e a capaz de ecolec a cualquie in o mación ele an e pa a el
se ido HTTP o aplicación mó il.
114
Po ul imo y no po ello menos impo an e hizo el d i e que ges iona el LCD. Tan o las
unciones que modi ican el uncionamien o del LCD, como la a ea que se le ha enca gado hace .
Dicha a ea es mos a de mane a cons an e y cíclica la in o mación ela i a al S a us del sis ema
y odos los senso es que es én egis ados en el mic ocon olado .
• Se ido HTTP
El o o bloque del que se ha enca gado es odo lo elacionado con el se ido HTTP.
Pa ió de una e sión casi sin con enido, se a aba de una e sión casi es á ica. Lo amplió de
o ma que el con enido de la página web se uese mos ando y eliminando de mane a dinámica,
pasando a una e sión comple amen e in e ac i a pa a el usua io.
P og amó el Ja aSc ip casí en e o (Fab izio hizo una pa e ambién) de o ma que le
o o gó a la página web la capacidad de solici a in o mación a los senso es pa a ep esen a los,
a a és de llamadas a URIs econocidas po nues o sis ema. El sis ema lo econoce g acias a
que los ha egis ado en el se ido jun o con su co espondien e handle que lo maneja. Una ez
e minado odo lo elacionado ep esen ación de in o mación, hizo que el se ido pudiese
ealiza pe iciones de modi icación a lo senso es.
Mien as desa ollaba esos emas, iba mejo ando la es é ica de la web di idiéndola en
bloques mucho más cohe en es, mos ando in o mación ú il pa a el usua io, e c. Todo ello
median e CSS, dando p io idad a los colo es cla os y campes es. Finalmen e, el g upo aco dó
di idi la página web en dis in as pes añas, haciéndolo menos ca gan e a la is a.
Fue a de esos bloques ha es ado comp obando y ehaciendo el código que pudiese
supone ulne abilidades en nues o sis ema.
También ha dado un epaso impo an e en la memo ia pa a la en ega inal, poniendo
odo el ex o en el mismo o ma o y p ocu ando deja lo odo según dice la plan illa.
115
José Fab izio Alca az Escoba
Jun o con En ique, se enca gó de la p og amación del ESP32, aunque cen ándose
p incipalmen e en las conexiones inalámb icas de es e, desa ollando el d i e del WiFi así como
su con igu ación po de ec o pa a los modos AP (pun o de acceso) y STA (es ación). Pa a la
pa e de MQTT ealizó el d i e (pa iendo de un ejemplo de Esp essi ) pa a su conexión, a la
ez que la p og amación de odos los comandos sopo ados (SCAN, REFRESH, GETCONF y
SET) jun o con su documen ación pa a que Ra es pueda implemen a los en la aplicación mó il.
Respec o a la pa e de los senso es, se enca gó del d i e del RTC, pues, aunque ya
es aba implemen ado po e ce as pe sonas, u o que adap a lo al p oyec o, aunque luego uese
desechado en de imen o al uso de NTP. Además, ambién es u o a ca go del STATUS (aunque
no sea un senso ísico, a e ec os de en ío de da os sí se le conside a), pa a el cual buscó
mane as de pode sinc oniza el ESP32, p ime o a a és del comando SET, pos e io men e con
el módulo RTC y, inalmen e con el uso de NTP y las lib e ías ya inco po adas po Esp essi .
Pa a el se ido HTTP desa olló la sección de con igu ación del WiFi, MQTT y del NTP,
así como el compo amien o del WiFi (ya que dependiendo de si consigue conec a se o no a la
ed indicada po HTTP pasa a modo AP o STA).
Fue a del ESP32 se cen ó en el diseño de los emas de MQTT, así como de la
coo dinación de su uso con la aplicación mó il. También se enca gó de odo lo elacionado con
el uso de la Raspbe y Pi, pues se u o que ins ala un SO, con igu a los usua ios con sus
pe misos en el b oke MQTT y de la c eación y diseño de una base de da os, el cual ha sido
usado pa a ecoge es adís icas espec o al núme o de en íos de mensajes o los iempos en los
que cada ESP32 se desconec aban. Pa a la ecolección de los da os pa a la base de da os u o
que p og ama un daemon que se iniciaba jun o con el SO, el cual se susc ibe a odos los emas
de MQTT y cada ez que ecibe un mensaje lo uelca en la base de da os donde, g acias a un
igge se almacenaba en su co espondien e abla.
Po úl imo, se enca gó del diseño y mon aje inal del ESP32, pa a el cual buscó dis in as
o mas de encapsula y aisla lo del ai e lib e po segu idad a a és de búsquedas po in e ne ,
encon ando así dis in os ipos de cajas es anco de conexiones que se pod ían u iliza , de los
cuales inalmen e se op ó po uno compac o con el que se u ilizó en conjun o con una placa de
desa ollo especí ico pa a el ESP32, dejando de lado así la placa de p o o ipado que se es aba
u ilizando desde el inicio del desa ollo del p oyec o. Den o del mon aje, ue el que in es igó la
o ma de pode in eg a paneles sola es jun o con ba e ías de li io a a és de o os y a ículos
116
de in e ne , diseño que al inal no se pudo lle a a cabo debido a la a danza en la en ega del
ci cui o in eg ado que ges iona la ca ga compa ida en e la ba e ía y el ESP32.

117
Ra es Pe iso Cincea
Fue la pe sona enca gada de odo lo elacionado con la aplicación mó il. En p ime luga ,
implemen o un sis ema pa a pode conec a se a a és del p o ocolo Mq al b oke . Pa a ello se
u o que ealiza un abajo de in es igación, eligiendo en e las mane as de implemen a es e
sis ema, la óp ima. En es e caso, la lib e ía de PahoMq , que o ece mé odos cla os pa a ello.
Una ez es ablecida la conexión con el b oke se empeza on a ealiza p uebas pa a que
el sis ema ue a capaz de susc ibi se a los ópicos del b oke . Pa a ello se publicaba desde
Mq Explo e y se mos aban los mensajes en la aplicación.
Una ez que se pudo comp oba que e a posible la susc ipción y ecepción de los
mensajes publicados en el b oke , se implemen ó odo él pa seó de los ipos de mensajes JSON
que se iban a ecibi de los mic ocon olado es ESP32, aunque es o ue algo g adual, ya que
ue on a iando.
Además de pode susc ibi a ópicos, se implemen ó la capacidad de publica en ópicos
pa a pode con ola y modi ica los mic ocon olado es Esp32.
Siendo posible la publicación en ópicos y la susc ipción y ecepción de mensajes
u ilizando un usua io, una con aseña y una IP es á ica, que se ha dcodeaba, sé implemen ó la
posibilidad de que el usua io inal in oduzca esos da os. Pa a ello se ha ealizado una pan alla
de Login, enca gándose de la lógica y el diseño de es a en su o alidad.
El siguien e paso a da ue el desa ollo de la página p incipal, que plan eaba el e o de
ges ión de los mensajes Mq , que se pa sean y se ca ego izan dependiendo del ópico en el que
se publica, y de cómo mos a esos da os. Pa a lle a a cabo esa a ea, ealiza el desa ollo de
un Recycle View y se enca ga del diseño de la is a de cada elemen o del mismo.
Asimismo, se hizo un es udio p o undo del ciclo de ida de las ac i idades y del
uncionamien o de los in en s pa a pode lle a a cabo el lanzamien o de nue as ac i idades
desde la ac i idad p incipal. Como es la ac i idad de scan, que ambién se ealizó implemen ando
un Recycle View y haciendo uso del pa seo y los mensajes Mq ecibidos. Pa a que nues a
aplicación ue a capaz de gua da elemen os, ue do ada po una base de da os sencilla que
gua da odos los disposi i os a los que es amos susc i os. Pa a ello se hizo uso del conocimien o
de DAOS en aplicaciones mó iles.
También omó ca go pa a el diseño y la p og amación uncional de la is a de edición de
un ESP32. Pa a lo que u o que implemen a la posibilidad de edi a los elemen os de la base de
118
da os y la ges ión de comunicación pa a ecibi los pa áme os de los disposi i os, pa sea los
mensajes de e o y o ma los mensajes y publica los pa a la edición de los mic ocon olado es.
A lo la go del p oyec o es u o comunicando con inuamen e con sus compañe os pa a
es ablece el o ma o de mensajes y pode c ea de es a mane a una comunicación óp ima en e
la pa e de aplicación mó il y los ESP32.
119
BIBLIOGRAFÍA
[1] IoT. Re ie ed om SAP « Sys em Analysis P og am De elopmen » A ailable:
h ps://www.sap.com/index.h ml
[2] IoT. Re ie ed om AWS «Amazon Web Se icies» A ailable:
h ps://aws.amazon.com/es/wha -is/io
[3] Esp essi Sys ems. ESP-IDF P og amming Guide. ONLINE:
h ps://docs.esp essi .com/p ojec s/esp-id /en/la es /esp32/index.h ml
[4] ANDROID STUDIO. Ap ende a desa olla aplicaciones (2021). José Dimas Lujan
Cas illo
[5] And oid o De elope s. ONLINE:
h ps://de elope .and oid.com/docs
[6] Esp essi Sys ems. ESP32 Da ashee . ONLINE:
h ps://www.esp essi .com/si es/de aul / iles/documen a ion/esp32_da ashee _en.pd
[7] HIVEMQ. MQTT Essen ials. ONLINE:
h ps://www.hi emq.com/mq -essen ials/
[8] Spa k un. DHT22 Da ashee . ONLINE:
h ps://www.spa k un.com/da ashee s/Senso s/Tempe a u e/DHT22.pd
[9] Spa k un. HC-SR04 Da ashee . ONLINE:
h ps://cdn.spa k un.com/da ashee s/Senso s/P oximi y/HCSR04.pd
[10] Pololu. MQ2 Da ashee . ONLINE:
h ps://www.pololu.com/ ile/0J309/MQ2.pd
[11] MOSQUITTO Documen a ion. ONLINE:
h ps://mosqui o.o g/documen a ion/
[12] Wikipedia. Ne wo k Time P o ocol. ONLINE:
h ps://es.wikipedia.o g/wiki/Ne wo k_Time_P o ocol
[13] Random Ne d Tu o ials. Powe ESP32/ESP8266 wi h Sola Panels. ONLINE:
h ps:// andomne d u o ials.com/powe -esp32-esp8266-sola -panels-ba e y-le el-moni o ing/
[14] eMa ie e. Añadi ca gado de ba e ía a ESP8266 y ESP32. ONLINE:
h ps://ema ie e.com/ca gado -ba e ia-esp8266-esp32-bien-hecho/
Anexo al eposi o io de Gi Hub: h ps://gi hub.com/Fab ialc123/My-ESPecial-Finca
120