Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diseño e Implementación de Un Sistema de Telemetría Controlado Por Dispositivos Embebidos
Diseño e Implementación de Un Sistema de Telemetría Controlado Por Dispositivos Embebidos
INDUSTRIALES Y DE TELECOMUNICACIÓN
UNIVERSIDAD DE CANTABRIA
Graduado en
Ingeniería de Tecnologías de Telecomunicación
Figura 4.1. Esquema completo de la conexión entre los sensores y el Arduino .............................. 31
Figura 4.8. Página principal y detección de incendios desde un teléfono móvil .............................. 35
Figura 4.9. Información por mes y por día desde un teléfono móvil................................................. 35
CA Corriente Alterna
CC Corriente Continua
1
1.3. Estructura del documento
La organización del documento viene dada de la siguiente forma:
En el capítulo 2 se describen los elementos que han formado parte del hardware del
sistema, habiendo explicado anteriormente y de forma breve qué es la telemetría.
Seguidamente, en el capítulo 3, se describen las herramientas software utilizadas, así
como la manera de configurar tanto el Arduino como la Raspberry Pi. Después, en el
capítulo 4 se muestran las prestaciones del sistema. Finalmente, en el capítulo 5, se
exponen las conclusiones y líneas futuras que puede ofrecer el sistema de telemetría
desarrollado en este trabajo.
Por último, se agregan varios anexos que ayudan a mostrar la configuración del sistema
operativo de la Raspberry Pi, la instalación y configuración de Apache, MySQL MariaDB y
PHP, del módulo Bluetooth HC-05 y del sensor de temperatura y humedad del Arduino.
2
Capítulo 2. Hardware del sistema
2.1. Telemetría
La palabra telemetría procede de las palabras griegas τῆlε (tele), que quiere decir a
distancia, y la palabra μετρον (metron), que quiere decir medida [1]. Es la medición en
forma remota de magnitudes físicas o químicas captadas a través de sensores. Las
señales o datos medidos se transmiten generalmente usando tecnología inalámbrica [2].
Los sistemas de telemetría son sistemas automatizados de comunicación que miden o
rastrean a tiempo real ondas, temperatura, vibración, presión, voltaje, altitud, velocidad,
tiempo, entre otras magnitudes, en lugares remotos (Figura 2.1).
3
Figura 2.2. Funciones de un sistema de telemetría [3]
4
Siguiendo este primer esquema (Figura 2.3), a la hora de probar la conexión Bluetooth, el
módulo BLE 4.0, AT-09 CC2541 (HM-10) no funcionaba bien, a veces se conectaba y de
repente se desconectaba; otras veces ni siquiera se conectaba y no respondía a comandos
AT de configuración.
Debido a estos problemas, se decidió cambiarlo y utilizar el módulo Bluetooth HC-05, como
se puede ver en la Figura 2.4.
Como una primera aproximación al trabajo, estaba previsto desplegar diferentes sensores
sin un propósito específico, simplemente para recibir datos, por lo que algunos de ellos se
cambiaron por otros en una siguiente versión para darle un significado concreto al sistema
de telemetría.
5
La versión final (ver Figura 2.5) queda representada como un sistema de detección de
incendios, además de obtener datos del sensor de humedad y temperatura. Como
complemento, el sensor de sonido sirve para cambiar el estado del LED RGB cuando no
se detecta ningún incendio.
El siguiente esquema (Figura 2.7) muestra los pines que ofrece esta placa:
6
Tiene 14 pines GPIO (General Purpose Input/Output) de entrada/salida digital (de los
cuales 6 pueden usarse como salidas PWM), 6 entradas analógicas, un reloj/oscilador de
cerámica de 16 MHz, una conexión USB, un conector de alimentación, un cabezal ICSP
(In-Circuit Serial Programmer) y un botón de reinicio o reset [7].
Para alimentar la placa, se puede conectar directamente a un ordenador mediante un cable
USB o usando un adaptador de CA a CC.
Las características técnicas del Arduino UNO son las siguientes (Tabla 2.1):
7
2.2.1. Módulo Bluetooth HC-05
El módulo Bluetooth HC-05 es una pequeña placa con un consumo muy bajo que permite
agregar funcionalidades Bluetooth al Arduino. Este módulo contiene un chip con una placa
de desarrollo con los pines necesarios para la comunicación serie (Figura 2.8). El módulo
HC-05 puede actuar como maestro o esclavo, es decir, puede conectarse con un
dispositivo o esperar a que el dispositivo se conecte al propio módulo [8].
Este módulo puede alimentarse con una tensión de entre 3.3 y 6 V (normalmente 5 V), pero
los pines TC y RX utilizan niveles de 3.3 V, por lo que no se puede conectar directamente
a las placas de 5 V, sino que se deben utilizar 2 resistencias como divisor de tensión para
que no se estropee: una de 5.6 KΩ (bandas verde, azul, rojo) y otra de 10 KΩ (bandas
marrón, negro, naranja). También dispone de un pulsador para entrar en modo comandos,
aunque esto se puede hacer por software utilizando el pin EN [10].
Tiene un LED incorporado que indica el estado de la conexión y si está emparejado o no
en función de la velocidad de parpadeo.
8
El módulo se conectará al Arduino de la siguiente forma (Figura 2.9):
Este sensor mide la humedad relativa, que es la cantidad de vapor de agua en el aire.
Detecta el vapor de agua midiendo la resistencia eléctrica entre dos electrodos. El
componente sensor de humedad es un sustrato que retiene la humedad con electrodos
aplicados a la superficie. Cuando el vapor de agua es absorbido por el sustrato, éste libera
iones que aumentan la conductividad entre los electrodos. El cambio de resistencia entre
los dos electrodos es proporcional a la humedad relativa. Una humedad relativa más alta
disminuye la resistencia entre los electrodos, mientras que una humedad relativa más baja
aumenta la resistencia entre ambos.
9
Además, el DHT11 mide la temperatura con un sensor NTC montado en superficie
(termistor) integrado en la unidad.
Las características técnicas del sensor DHT11 son las siguientes (Tabla 2.3):
La versión utilizada en este proyecto viene montada en PCB e incluye una resistencia de
10 KΩ montada en superficie para la línea de señal, por lo que no se necesita añadir
ninguna resistencia externa en el pin de datos (signal).
Este sensor irá conectado al Arduino como se muestra en la Figura 2.11.
El módulo KY-026 (Figura 2.12) es un sensor de llama que, por medio de un LED receptor
de infrarrojos, detecta longitudes de onda de llama en un rango de 760 nm a 1100 nm.
Incorpora dos salidas, una digital y otra analógica, e incluye un potenciómetro para ajustar
la sensibilidad del sensor, el cual se deberá girar en sentido horario para aumentar la
sensibilidad o en sentido antihorario para disminuirla. Hay que girar el potenciómetro en
sentido antihorario hasta que se apague el LED rojo de la izquierda del sensor (LED de
Detección) para poder usarlo en modo digital. La señal digital será ALTA (se encenderá el
LED de detección) cuando el sensor detecte fuego [13].
10
Figura 2.12. Sensor de llama [13]
Las características del sensor de llama son las siguientes (Tabla 2.4):
11
2.2.4. Sensor de sonido Módulo KY-037
Incluye un potenciómetro con el cual se puede ajustar la sensibilidad del sensor, es decir,
configura el umbral de detección. Si se gira en el sentido horario, se aumentará la
sensibilidad [15].
Este potenciómetro también sirve para activar el modo digital o analógico del sensor. Por
defecto, el sensor tiene encendidos 2 LEDs rojos (LED Salida Digital Accionada y LED de
Alimentación). El LED de Alimentación debe estar siempre encendido. El LED de Salida
Digital Accionada indica que la salida digital está activa, se debe girar el potenciómetro en
sentido antihorario para que se apague, esto hará que la salida digital tenga un nivel bajo
y solo se activará con un sonido fuerte (dependiendo de cómo se haya configurado la
sensibilidad).
Las características del sensor de sonido son las siguientes (Tabla 2.5):
Voltaje de funcionamiento 5V
Tipo de salidas Digital y analógica
Temperatura -40º C a +85ª C
Permite ajustar un nivel de umbral de salida
Usa el micrófono Gao Gan grado, de alta sensibilidad
Interruptor digital de salida (0/1)
Dimensiones 35 mm x 15 mm x 14 mm
Peso 4 gramos
12
Figura 2.15. Conexión entre el sensor de sonido y el Arduino
El módulo KY-006 (Figura 2.16) es un sensor piezoeléctrico el cual puede reproducir tonos
de sonido entre un rango de 1.5 Hz a 2.5 kHz dependiendo de la frecuencia de entrada, ya
sea mediante retardos o modulación de ancho de pulso (PWM). Permite convertir la señal
eléctrica en una onda de sonido al momento en que se manda una señal eléctrica para
conseguir el sonido deseado [16].
13
Figura 2.17. Conexión entre el buzzer pasivo y el Arduino
El módulo KY-016 (Figura 2.18) consta de un LED RGB de 5mm que es capaz de emitir
luz de color por medio de la mezcla de los colores del sistema RGB. Cuenta con tres
resistencias de 150 Ω en su PCB para evitar que se dañe el dispositivo [17].
Las características del LED RGB son las siguientes (Tabla 2.7):
14
Figura 2.19. Conexión entre el LED RGB y el Arduino
15
Chipset Broadcom BCM2387
Procesador
1.2 GHz de 4 núcleos ARM Cortex-A53
Dual Core VideoCore IV ® Multimedia Co-procesador @ 400 MHz
GPU Soporte de OP GL ES 2.0, OpenVG acelerado por hardware y 1080p
30fps, códec de alto perfil de decodificación
RAM 1 GB SDRAM LPDDR2
Ethernet socket Ethernet 10/100 BaseT
802.11 b/g/n LAN inalámbrica y Bluetooth 4.1 (Classic Bluetooth y LE)
HDMI rev 1.3 y 1.4
Salida de video
RCA compuesto (PAL y NTSC)
Conectividad Jack de 3.5 mm de salida de audio, HDMI
Salida de audio
USB 4 x Conector USB 2.0
16
Capítulo 3. Software del sistema
17
Primero, se puede ver en la Figura 3.1 que se comienza incluyendo las librerías necesarias
para el establecimiento de la comunicación serie, la librería del sensor de humedad y
temperatura DHT11 así como la definición de los pines en los que se ha conectado cada
sensor.
Además, se definen los pines 10 y 11 como receptor y transmisor de los datos que se
enviarán vía Bluetooth, respectivamente.
También, se definen variables cuyos valores, correspondientes a cada sensor utilizado, se
irán actualizando a lo largo del programa.
Por último, en la función setup(), cuyo código se ejecuta una sola vez, se inicializa el puerto
serie, el puerto del módulo Bluetooth, los pines (ya sean de entrada o salida) y el puerto
del sensor de humedad y temperatura.
En la función loop() (Figura 3.2), cuyo código se ejecuta en bucle, se obtiene el valor del
sensor de llama y del sensor de sonido. Si se detecta una palmada (sonido fuerte), se
cambia el valor de la variable que se usa para cambiar el estado (encendido/apagado) del
LED RGB. Sólo se realiza correctamente el cambio de esta variable si no se detecta llama,
como se puede ver en la estructura if, llamando a la función cambioLED(). En cambio, si
18
se detecta fuego, el programa cambia el valor de la variable estado_fuego y llama a la
función detectaFuego(), cuya funcionalidad se explicará más adelante.
Además, se introduce un retardo de 7 segundos en el programa para llamar a la función
humedad_temperatura() para evitar errores al tomar las muestras, ya que el módulo DHT11
es un sensor lento.
Por último, se envían los datos de los sensores por Bluetooth a la Raspberry Pi.
La función detectaFuego que se puede ver en la Figura 3.3, se encarga de hacer que el
buzzer suene con el tono que se ha inicializado en la primera parte del programa. Además,
se encarga de cambiar la luz verde que ha podido encender el usuario previamente por
una luz roja, cuyo significado se suele asociar a “peligro”.
La función cambioLED (Figura 3.4) se encarga de apagar la luz roja que ha podido ser
encendida por la detección de un incendio. Además, cambia el estado del LED
dependiendo del valor almacenado en la variable estado_led.
Por último, la función humedad_temperatura() (Figura 3.5) hace uso de funciones propias
de la librería “DHT.h” para obtener los valores de la humedad y temperatura del sensor
DHT11. Además, envía estos datos vía Bluetooth a la Raspberry Pi.
19
Figura 3.5. Función humedad_temperatura() del programa
“Enviar_datos_sensores.ino” de Arduino
Para almacenar los valores de los sensores recibidos, es necesario crear una base de
datos que se almacenará y gestionará mediante la herramienta phpMyAdmin (Figura 3.6),
que se encarga de la administración a través de comandos MySQL (Figura 3.6) y es
accesible utilizando un navegador web [22].
Aunque, utilizando esta herramienta, la base de datos se puede crear de forma gráfica, se
ha preferido crear un programa en SQL (sistema_de_telemetria.sql) para hacerlo, ya que
la creación e inserción de toda la base de datos resulta muy fácil y rápida mediante
phpMyAdmin.
20
Primero, como se puede ver en la Figura 3.7, se crea la base de datos
sistema_de_telemetria. Esta base de datos tendrá una tabla por cada sensor de medición
de datos.
A continuación, se define la tabla humedad (Figura 3.8) y la tabla temperatura (Figura 3.9)
en las que se almacenará la fecha (día, mes, año), la hora (hora, minutos, segundos) y un
campo que almacena el valor de la humedad/temperatura respectivamente que mide cada
sensor.
21
Figura 3.9. Creación de la tabla temperatura
Por último, se definen las tablas sensor_llama (Figura 3.10) y sensor_sonido (Figura 3.11)
en las que se almacenará la fecha (día, mes, año), la hora (hora, minutos, segundos) y un
campo que almacena un 1 si cada respectivo sensor detecta fuego/sonido o un 0 si no
detecta nada.
22
3.2.2. Recepción e inserción de datos del Arduino
23
A continuación, en el bucle del programa (Figura 3.13) se obtienen los datos de la fecha y
hora actuales y se almacenan en una cadena de caracteres. En esta cadena se almacenará
cada dato recibido del Arduino según el contador i, declarado anteriormente, usando
comandos SQL.
En la inserción del valor de la humedad, se ha tenido especial cuidado ya que a veces no
lo recibe completo y vuelve a enviarlo, haciendo así que, si tiene que recibir “63%”, en
realidad se obtenga “663%”. Para ello, se ha hecho que el valor sea el módulo 100 de lo
que reciba.
Por último, se finaliza la conexión con la base de datos y con el Arduino.
El servidor web que se ha utilizado en este proyecto es Apache (Figura 3.14), que es un
servidor web HTTP de código abierto para los sistemas operativos modernos, incluidos
UNIX y Windows. El objetivo de esta plataforma es proporcionar un servidor seguro,
eficiente y extensible que proporcione servicios HTTP en sincronía con los estándares
HTTP actuales [24].
Apache se lanzó en 1995 y ha sido el servidor web más popular en Internet desde abril de
1996.
La funcionalidad principal de este servicio web es servir a los usuarios todos los ficheros
necesarios para visualizar la web, es decir, los textos, imágenes, estilos… que conforman
la portada de una página web de forma segura. Las solicitudes de los usuarios se hacen
normalmente mediante un navegador (Chrome, Firefox, Safari, etc.) [25].
La instalación de Apache se muestra en el Anexo I.
24
A continuación, se describirán los códigos utilizados para crear la página web, que están
disponibles en mi GitHub https://github.com/rmt707/TFG.
En la Raspberry Pi están localizados en la carpeta /var/www/html. Además, se han dado
permisos de ejecución, lectura y escritura al puerto de conexión con el Arduino ejecutando
el comando sudo chmod 777 /dev/rfcomm0 y dando también todos los permisos a la carpeta
Sistema_de_telemetria y a cada archivo dentro de esta para evitar cualquier error que
pueda ocasionar.
Primero, se describirá la página web principal “index.php”:
En la Figura 3.15 se puede ver que al principio del código se configura que la página se
refresque cada 7 segundos, ya que la página principal es la única que muestra los datos
de los sensores a tiempo real. Además, se establece la conexión con la base de datos
insertando la dirección, el usuario, la contraseña y el nombre de la base de datos a la que
se quiere acceder.
Seguidamente, mediante comandos SELECT de SQL, se obtienen los valores actuales de
la base de datos que se mostrarán al usuario.
25
En la Figura 3.16 se muestra el diseño del título y del menú por el que se puede mover el
usuario para acceder a las distintas páginas diseñadas.
Por último, en la Figura 3.17 se puede apreciar que se ha configurado que, si no se detecta
fuego, mostrará al usuario el texto “No se detecta fuego” en un rectángulo con fondo verde;
en cambio, si se detecta fuego, se mostrará el texto “Se detecta fuego” en un rectángulo
con fondo rojo.
Además, se ha configurado una funcionalidad parecida con la detección de sonido. Si el
LED RGB está apagado, muestra el texto “LED OFF” en un rectángulo con fondo blanco;
en cambio, si detecta sonido y el LED se enciende, muestra el texto “LED ON” en un
rectángulo con fondo verde.
También, se muestra una tabla que muestra el valor de la humedad y la temperatura actual.
Esta página principal viene acompañada del programa “main.css” (Figura 3.18), que se
encarga de configurar cómo se muestra visualmente el código anterior.
26
Figura 3.18. Código de “main.css”
Como se ha podido apreciar en la Figura 3.16, hay distintas páginas diseñadas para
enseñar información específica al usuario. Estas páginas tendrán asociado el código
“sub_page.css”, cuyo único cambio respecto a “main.css” es el siguiente que se muestra
en la Figura 3.19:
27
En la Figura 3.20 se puede observar que la página “deteccion_fuego.php” solo se encarga
de mostrar en una tabla las últimas 25 fechas en las que se ha detectado algún incendio.
Por último, se han diseñado 3 páginas muy parecidas entre sí, que son: “info_hora.php”,
“info_dia.php” y “info_mes.php”. Estas páginas se encargan de mostrar el valor máximo, el
promedio y el valor mínimo de la humedad y temperatura por horas/días/meses,
respectivamente.
La página de horas muestra los últimos 24 registros, teniendo intención de mostrar las
últimas 24 horas; la de días muestra los últimos 31 registros, teniendo intención de mostrar
28
el último mes; por último, la del mes muestra los últimos 12 registros, teniendo intención de
mostrar el último año.
29
Como se puede ver en la Figura 3.21, ese es el código de “info_hora.php”. Para el código
de “info_dia.php”, habría que eliminar lo subrayado en azul; y para el código de
“info_mes.php”, habría que eliminar lo subrayado en rojo, además de lo subrayado en azul.
30
Si hay algún problema o algún error que no deje avanzar (generalmente en el discoverable
on), se debe ejecutar:
31
Capítulo 4. Integración y validación del
sistema
Aunque en el proyecto se han colocado todos los sensores del Arduino en una misma
placa, como se puede ver en la Figura 4.1, el usuario podrá colocar cada sensor donde
quiera simplemente usando cables con la longitud suficiente para llegar a la localización
donde quiera instalarlos.
En la Raspberry Pi, el usuario tendrá que ejecutar los comandos descritos en el apartado
3.3. para realizar el establecimiento de la conexión Bluetooth. Además, tendrá que ejecutar
en otra terminal el comando python leer_arduino.py y, cuando quiera dejar de recibir datos
de los sensores, detendrá la ejecución de este programa usando el teclado, como se ha
mencionado en el apartado 3.2.2.
Por último, podrá acceder a la página web para ver los datos de una forma más visual
abriendo el navegador Chromium y accediendo a la dirección
http://127.0.0.1/Sistema_de_telemetria/index.php para acceder de forma local a la página
principal.
32
Figura 4.2. No se detecta fuego y el LED está apagado
En cambio, la página luce como en la Figura 4.3 si se detecta un incendio y el LED RGB
estaba encendido previamente.
33
Figura 4.4. Detecciones de incendios
La página de información por mes (Figura 4.5), la página de información por día (Figura
4.6) y la página de información por hora (Figura 4.7) muestran el valor máximo, promedio
y mínimo de la humedad y temperatura según la elección que se escoja.
34
Figura 4.6. Información por día
Además, el usuario puede acceder a la página web si está conectado a la misma red WiFi
que la Raspberry Pi. Para ello, deberá obtener la dirección IP de la Raspberry con el
comando ifconfig y buscar en la barra del navegador de su dispositivo móvil o portátil la
dirección http://@IP_Raspberry/Sistema_de_telemetria/index.php para
visualizarla.
En las figuras 4.8, 4.9 y 4.10 se puede ver cómo se mostrará cada página al usuario en su
teléfono móvil con más datos obtenidos de los sensores.
35
Figura 4.8. Página principal y detección de incendios desde un teléfono móvil
Figura 4.9. Información por mes y por día desde un teléfono móvil
36
Figura 4.10. Información por hora desde un teléfono móvil
37
Capítulo 5. Conclusiones y líneas futuras
5.1. Conclusiones
Actualmente, la automatización en la obtención, inserción y análisis de datos es muy útil e
importante, consiguiendo ahorrar retardos y optimizar los resultados obtenidos. En el caso
de este proyecto, un sistema de detección de incendios, es fundamental minimizar el
retardo en la detección de incendios.
En particular, los sensores que se han elegido para ser utilizados por Arduino han sido: el
sensor de llama con detección inmediata, el sensor de sonido con micrófono de alta
sensibilidad y el sensor de medición de información (humedad y temperatura) para su
posterior procesado de datos.
Arduino, a través del módulo Bluetooth, le transmite los datos obtenidos de los sensores a
la Raspberry Pi, la cual se encarga de almacenarlos en una base de datos. A su vez, ésta
será consultada por el servidor web para mostrar los resultados a través de una página
web de forma amigable al usuario, con un diseño intuitivo y actual.
Por último, se han hecho las correspondientes pruebas de validación del prototipo para
comprobar que, tanto los sensores, como la programación de las dos placas (Arduino y
Raspberry Pi) funcionaran correctamente, dando así por alcanzados los objetivos
previamente establecidos en este trabajo.
Se podrían añadir más sensores del mismo o de otros tipos, ampliando así la zona de
cobertura monitorizada frente a incendios u otros tipos de peligros. Esto llevaría, a su vez,
a una posible ampliación del número de Arduinos desplegados no sólo en la misma zona,
sino en ubicaciones alejadas y estratégicamente situadas, todos ellos interconectados con
una Raspberry Pi que haría de concentrador, comunicándose en este caso a través de
tecnologías inalámbricas de mayor alcance como Wi-Fi.
Por otro lado, en la parte software del sistema, se podría configurar el sistema y la
Raspberry Pi en particular, para que se pudieran cargar los programas de Arduino vía
Bluetooth, para así actualizar o modificar su programación sin tener que mover el Arduino
de su ubicación física ni tener que conectarlo a un ordenador.
38
Referencias
Todas las referencias web han sido visitadas y están online a fecha de 26 de junio de 2022.
39
[19] «RASPBERRYPI3-MODB-1GB. - Ordenador Monoplaca, Raspberry Pi 3 Modelo B, CPU 1.2GHz,
RAM 1GB, WiFi/BLE, 40 Pines GPIO». https://es.farnell.com/raspberry-pi/raspberrypi3-modb-
1gb/sbc-raspberry-pi-3-modelo-b-ram/dp/2525226
[20] «Raspberry Pi 3 Modelo B | PcComponentes.com», PcComponentes.
https://pccomponentes.com/raspberry-pi-3-modelo-b
[21] «Software». https://www.arduino.cc/en/software
[22] phpMyAdmin contributors, «phpMyAdmin», phpMyAdmin. https://www.phpmyadmin.net/
[23] A. G. Morgado, «Instalando MySQL y PHPmyAdmin en CentOS – Webnoticiero».
https://www.webnoticiero.es/?p=89
[24] «Welcome! - The Apache HTTP Server Project». https://httpd.apache.org/
[25] «¿Qué es Apache y para qué sirve?», Ayuda | dinahosting, 8 de enero de 2019.
https://dinahosting.com/ayuda/que-es-apache-y-para-que-sirve/
[26] «Configurar Bluetooth desde Terminal - Raspbian, Debian, Ubuntu y familia xD», Altaruru, 16
de junio de 2019. https://www.altaruru.com/configurar-bluetooth-desde-terminal-raspbian-
debian-ubuntu-y-familia-xd/
[27] «bluetooth.service running, but bluetoothctl says “org.bluez.Error.NotReady”», Arch linux.
https://unix.stackexchange.com/questions/508221/bluetooth-service-running-but-
bluetoothctl-says-org-bluez-error-notready
[28] R. P. Ltd, «Operating system images», Raspberry Pi.
https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-desktop
[29] «balenaEtcher - Flash OS images to SD cards & USB drives», balenaEtcher.
https://www.balena.io
[30] Manuel González, Nivel 35 - Python con Mysql - Reto 1 - Instalar el conector mysql-connector-
python, (15 de julio de 2021). [En línea]. Disponible en:
https://www.youtube.com/watch?v=iruYJ7y01Bs
[31] AlexPro, «Cómo instalar el servidor web Apache en Raspbian • AlexPro Sytes», AlexPro Sytes,
30 de octubre de 2018. https://alexpro.sytes.net/como-instalar-el-servidor-web-apache-en-
raspbian-stretch-9/
[32] «Cómo instalar el gestor de bases de datos MySQL MariaDB en Raspbian • AlexPro Sytes»,
AlexPro Sytes, 30 de octubre de 2018. https://alexpro.sytes.net/como-instalar-el-gestor-de-
bases-de-datos-mysql-mariadb-raspbian/
[33] «Cómo instalar PHP en Raspbian • AlexPro Sytes», AlexPro Sytes, 1 de noviembre de 2018.
https://alexpro.sytes.net/como-instalar-php-en-raspbian/
[34] «Como instalar PhpMyAdmin en Raspbian • AlexPro Sytes», AlexPro Sytes, 22 de marzo de
2019. https://alexpro.sytes.net/como-instalar-phpmyadmin-en-raspbian-stretch-9/
[35] C. goyal, «localhost/phpmyadmin giving page not found error», Stack Overflow, 24 de agosto
de 2019. https://stackoverflow.com/questions/17772413/localhost-phpmyadmin-giving-
page-not-found-error
[36] Bitwise Ar, Arduino desde cero en Español - Capítulo 24 - Bluetooth HC-05 Introducción y
comandos AT, (6 de agosto de 2017). Accedido: 24 de junio de 2022. [En línea]. Disponible en:
https://www.youtube.com/watch?v=5SmKOUHhmWk
[37] «How to connect DHT11 Sensor with Arduino UNO», Arduino Project Hub.
https://create.arduino.cc/projecthub/pibots555/how-to-connect-dht11-sensor-with-arduino-
uno-f4d239
40
Anexo I. Configuración de la Raspberry Pi
Tras esto, el servidor web ya estaría funcionando, aunque de momento sólo puede mostrar
páginas html.
41
Figura I.1. Estado del servidor web Apache
Una vez instalado, hay que ejecutar el siguiente comando para hacerlo más seguro:
• sudo mysql_secure_installation
42
Tras todo esto, ya está instalado y asegurado MySQL MariaDB. El puerto por defecto de la
base de datos es el 3306.
43
I.6. Instalación de PhpMyAdmin
Por último, para instalar PhpMyAdmin, se ejecuta el siguiente comando en el terminal [34]:
• sudo apt install phpmyadmin
Tras esto, aparecerá una ventana (Figura I.3) preguntando con qué servidor web se quiere
configurar. En este caso, apache2 es la opción que viene marcada por defecto, así que
basta con pulsar Enter para continuar.
Ahora, preguntará si se quiere crear una base de datos necesaria para que funcione
PhpMyAdmin (Figura I.4), por lo que se pulsa Enter para continuar.
44
Figura I.5. Configuración de PhpMyAdmin parte 3
Aparecerá una línea con la palabra MariaDB [(none)]> a la izquierda. En ese entorno hay
que ejecutar las siguientes líneas (Figura I.6) cambiando, en el caso de este proyecto, la
palabra “usuario” por “admin” y “contraseña” por “telematica”:
• USE mysql;
• CREATE USER 'usuario'@'localhost' IDENTIFIED BY '';
• GRANT ALL PRIVILEGES ON * . * TO 'usuario'@'localhost';
• UPDATE user SET plugin='mysql_native_password' WHERE User='usuario';
• SET PASSWORD FOR 'usuario'@'localhost' = password('contraseña');
• GRANT ALL ON *.* TO usuario@localhost IDENTIFIED BY "contraseña" WITH GRANT OPTION;
• FLUSH PRIVILEGES;
• exit;
45
Figura I.6. Configuración en el entorno de MySQL
Ahora, ya se puede acceder a la interfaz web (Figura I.7) e iniciar sesión con el usuario y
contraseña establecidos.
Si apareciese el error 404 Not found al intentar abrir PhpMyAdmin, habría que seguir los
siguientes pasos [35]:
• Ejecutar el comando sudo nano /etc/apache2/apache2.conf en el terminal.
• Incluir la línea Include /etc/phpmyadmin/apache.conf al final del fichero.
• Reiniciar Apache ejecutando el comando /etc/init.d/apache2 restart
Por último, para importar la base de datos creada con SQL, se pulsa en “Seleccionar
archivo” en la pestaña “Importar” y después “Continuar”, como se muestra en la Figura I.8.
46
Figura I.8. Inserción de la base de datos en PhpMyAdmin
47
Anexo II. Configuración del módulo
Bluetooth HC-05
Para activar el módulo Bluetooth HC-05 en modo configuración (comandos), se debe pulsar
el botón del módulo durante 5 segundos justo cuando se le conecta a la alimentación, o
bien, cuando está conectado el pin EN (enable) al pin de 5 V del Arduino. Entonces, se
verá que, en lugar de parpadear rápidamente el LED rojo, pasa a parpadear lentamente.
Es ahora cuando responderá a los comandos AT de configuración, esto se puede
comprobar enviando el comando AT y obteniendo la respuesta OK (Figura II.1).
Para salir del modo configuración y volver al modo usuario, el Arduino se debe desconectar
de la alimentación. El pin EN del módulo Bluetooth también se debe desconectar del pin
de 5 V del Arduino y se debe conectar al pin GND o quitar el cable para que tenga el estado
LOW. Luego, se vuelve a conectar el Arduino a la corriente. Con esto, se verá que el LED
48
rojo del módulo volverá a parpadear rápidamente, lo que quiere decir que ya no responderá
a los comandos AT y se podrá encontrar desde otros dispositivos Bluetooth.
Ahora, cuando el módulo Bluetooth HC-05 se enlace con otro dispositivo, el LED rojo del
módulo parpadeará en intervalos lentos de 2 ráfagas rápidas para indicar que está
conectado con el dispositivo, en este caso, con la Raspberry Pi.
49
Anexo III. Configuraciones previas del sensor
de temperatura y humedad
Para poder obtener datos del sensor DHT11, se debe instalar la librería “biblioteca de
sensores DHT” de Adafruit en el IDE de Arduino, como se puede ver en la Figura III.1 y en
la Figura III.2 [37].
50
A partir de la versión 1.3.0 de la biblioteca DHT, también hay que instalar la biblioteca
“Adafruit Unified Sensor” (Figura III.3), que también está disponible a través del gestor de
librerías “Arduino Library Manager”.
Con esto, se podrán utilizar las funciones específicas de este sensor para obtener
correctamente los datos de la humedad y la temperatura.
51