Codea Blog  

Blog Details

Raspberry Pi: Guardar data de sensor en una base de datos

1. INTRODUCCIÓN

En la era de la información, donde los datos son el núcleo de la toma de decisiones y la innovación, la capacidad de almacenar, gestionar y acceder a estos datos de manera eficiente se ha vuelto crucial. Las bases de datos, tradicionalmente asociadas con sistemas robustos y servidores poderosos, han experimentado una transformación significativa en términos de escalabilidad y accesibilidad. Una muestra impresionante de esta evolución es la capacidad de alojar bases de datos en dispositivos de tamaño diminuto pero sorprendentemente capaces, como la Raspberry Pi.

 

La Raspberry Pi, una placa de computadora del tamaño de una tarjeta de crédito, se ganó rápidamente una reputación como una herramienta versátil para la educación en informática, la creación de proyectos de bricolaje y la experimentación tecnológica. Lo que comenzó como un dispositivo simple para enseñar programación se ha transformado en un auténtico fenómeno en la comunidad de la tecnología, encontrando aplicaciones en una amplia gama de campos.

 

Una de las aplicaciones más intrigantes es el uso de la Raspberry Pi como anfitrión de bases de datos. A primera vista, la idea de alojar una base de datos en un dispositivo de bajo consumo y recursos limitados puede parecer contraintuitiva, pero los avances en tecnología y la optimización de software han permitido que este concepto evolucione de lo experimental a lo funcional. Esta capacidad abre las puertas a una serie de posibilidades, desde la creación de pequeñas bases de datos de proyectos personales hasta la implementación de sistemas de monitoreo remoto y recopilación de datos en entornos industriales.

 

En este artículo, les voy a mostrar como usar una pequeña computadora llamada Raspberry Pi para almacenar en una base de datos la información captada por un sensor que mide la humedad y temperatura. Les brindo el código de programación y los pasos para que ustedes puedan replicarlo.


2. DEFINICIONES

2.1. RASPBERRY PI

La Raspberry Pi es una placa de computadora de bajo costo y tamaño reducido que ha revolucionado la forma en que las personas interactúan con la tecnología. Diseñada para ser asequible y accesible, esta pequeña placa ofrece una plataforma versátil para la experimentación, la educación en informática y la creación de proyectos de bricolaje.

 

Lanzada por la Fundación Raspberry Pi, esta placa de computadora compacta ha evolucionado a lo largo de los años, pasando de ser una herramienta educativa inicial a una solución funcional en una variedad de aplicaciones. La Raspberry Pi contiene todos los componentes esenciales de una computadora, incluyendo un procesador, memoria, puertos USB, conectividad de red y salidas de video, todo integrado en una tarjeta del tamaño de una tarjeta de crédito.

 

Una de las características más atractivas de la Raspberry Pi es su enfoque en el aprendizaje práctico. Los usuarios pueden programar en varios lenguajes, experimentar con sistemas operativos, conectar periféricos y sensores, y crear una amplia gama de proyectos interactivos y funcionales. Esto ha hecho que la Raspberry Pi sea un recurso valioso en entornos educativos, tanto en aulas como en el hogar.

 

Además de su uso educativo, la Raspberry Pi ha encontrado aplicaciones en áreas como la automatización del hogar, la creación de servidores ligeros, la emulación de videojuegos retro, la monitorización ambiental y mucho más. Su bajo consumo de energía y su tamaño compacto la convierten en una opción popular para proyectos que requieren flexibilidad y eficiencia.

 

En el contexto del alojamiento de bases de datos, la Raspberry Pi demuestra su versatilidad al desempeñar el papel de anfitrión para sistemas de gestión de bases de datos como MariaDB. A pesar de su tamaño reducido, la Raspberry Pi puede manejar tareas de base de datos, lo que demuestra cómo la tecnología moderna ha avanzado en términos de miniaturización y eficiencia.

 

Figura 1. Características de la Raspberry Pi 4

 

Figura 2. Rasperry Pi como PC de escritorio

 

 

Figura 3. Carrito creado con una Raspberr Pi

 

2.2. RASPBERRY PI OS

El sistema operativo que usa la Raspberry Pi es Raspberry Pi OS, anteriormente llamado Raspbian. Es una distribución de Linux basada en Debian, optimizada para el hardware de la Raspberry Pi.

 

Raspberry Pi OS incluye una amplia gama de software, incluyendo un navegador web, un editor de texto, un reproductor multimedia y un entorno de desarrollo integrado. También incluye una serie de herramientas y utilidades para el desarrollo de aplicaciones para la Raspberry Pi. Es un sistema operativo gratuito y de código abierto, y está disponible para descargar en el sitio web de Raspberry Pi.

 

Aquí hay algunos de los beneficios de usar Raspberry Pi OS:

• Es gratuito y de código abierto.

• Está optimizado para el hardware de la Raspberry Pi.

• Incluye una amplia gama de software.

• Es una buena plataforma para el desarrollo de aplicaciones.

 

Si estás buscando un sistema operativo para tu Raspberry Pi, Raspberry Pi OS es una excelente opción.

 

Figura 4. Logo de Raspberry Pi OS

 

 

Figura 5. Interfaz de Raspberry Pi OS

 

2.3. MARIADB

MariaDB, una bifurcación de código abierto de MySQL, es un sistema de gestión de bases de datos relacional (RDBMS) que ha ganado popularidad debido a su robustez, rendimiento y licencia de código abierto. Creada por los desarrolladores originales de MySQL después de que esta última fuera adquirida por Oracle, MariaDB se ha convertido en una alternativa confiable y escalable en el mundo de las bases de datos.

 

Este sistema ofrece una amplia gama de características, incluyendo soporte para transacciones ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), almacenamiento en caché de consultas, replicación de bases de datos, y una sintaxis SQL estándar con extensiones específicas. MariaDB también ha introducido mejoras de rendimiento y características adicionales en comparación con MySQL, lo que ha contribuido a su creciente adopción en aplicaciones empresariales y proyectos de código abierto.

 

Dentro del contexto de alojar una base de datos en una Raspberry Pi, MariaDB se presenta como una opción atractiva debido a su eficiencia en el uso de recursos y su capacidad para funcionar en entornos con limitaciones de hardware. Al aprovechar las características de optimización de MariaDB y configurar adecuadamente la base de datos, es posible lograr un rendimiento satisfactorio incluso en dispositivos con recursos modestos como la Raspberry Pi. avanzada En el siguiente artículo, exploraremos cómo implementar y gestionar una base de datos MariaDB en una Raspberry Pi, teniendo en cuenta las consideraciones específicas de esta configuración. Desde la instalación inicial hasta la creación de una base de datos para almacenar los datos de un sensor de humedad y temperatura, permitiendo a los usuarios aprovechar las ventajas de una base de datos confiable y de alto rendimiento en un dispositivo de tamaño reducido.

 

Figura 6. Logo de MariaDB

2.4. SENSOR DE TEMPERATURA Y HUMEDAD DHT11

El sensor DHT11 es un sensor de humedad y temperatura digital de bajo costo y fácil de usar. Está disponible en un módulo que incluye todos los componentes necesarios para su funcionamiento. Mide la humedad y la temperatura del aire circundante. Utiliza un sensor capacitivo de humedad y un termistor para medir la humedad y la temperatura, respectivamente. Los datos se envían a través de un protocolo digital de un solo cable.

 

El sensor DHT11 tiene un rango de medición de humedad de 20 a 90% RH y un rango de medición de temperatura de 0 a 50. La precisión del sensor es de ±2 °C para la temperatura y ±4% RH para la humedad.

 

Se utiliza en una amplia gama de aplicaciones, incluyendo:

 

• Monitoreo del clima

• Control de la temperatura

• Automatización del hogar

• Agricultura

 

Figura 7. Sensor de humedad y temperatura DHT11

 

2.5. LINUX TERMINAL

La terminal de Linux es una herramienta de línea de comandos que permite a los usuarios interactuar con el sistema operativo sin necesidad de una interfaz gráfica. Es una herramienta poderosa que puede utilizarse para realizar una amplia gama de tareas, desde tareas básicas como copiar archivos hasta tareas más complejas como administrar sistemas.

 

Se compone de una ventana en la que el usuario puede escribir comandos. Los comandos son instrucciones que el sistema operativo interpreta y ejecuta, pueden utilizarse para realizar una amplia gama de tareas, como:

 

• Listar el contenido de un directorio.

• Copiar archivos.

• Mover archivos.

• Eliminar archivos.

• Crear directorios.

• Iniciar programas.

• Administrar sistemas.

 

La terminal de Linux es una herramienta esencial para cualquier usuario de Linux. Es una herramienta poderosa que puede utilizarse para realizar una amplia gama de tareas.

 

Aquí hay algunos consejos para usar la terminal de Linux:

• Familiarízate con los comandos básicos. Hay muchos recursos disponibles para aprender los comandos básicos de Linux.

• Usa las opciones de ayuda. La mayoría de los comandos de Linux tienen opciones de ayuda que te permiten aprender más sobre el comando.

• Usa los atajos de teclado. Hay muchos atajos de teclado que pueden ayudarte a trabajar más rápido en la terminal.

 

Figura 8. Linux terminal

 

2.6. SSH

El protocolo SSH, o Secure Shell, es un protocolo de red que permite a los usuarios conectarse de forma segura a un servidor remoto. SSH utiliza cifrado para proteger los datos que se transmiten entre el cliente y el servidor, lo que lo hace una forma segura de acceder a los servidores remotos.

 

SSH se utiliza para una variedad de propósitos, incluyendo:

• Administrar servidores remotos: SSH se puede utilizar para realizar tareas administrativas en servidores remotos, como instalar software, configurar servicios y solucionar problemas.

• Transferir archivos entre hosts: SSH se puede utilizar para transferir archivos de forma segura entre hosts.

• Acceso remoto a aplicaciones: SSH se puede utilizar para acceder a aplicaciones que se ejecutan en servidores remotos.

 

Para establecer una conexión SSH, el cliente debe proporcionar el nombre de usuario y la contraseña del usuario que desea conectarse al servidor. El servidor también puede requerir que el cliente proporcione un certificado digital para autenticarlo.

 

Una vez que se ha establecido la conexión, el cliente puede acceder a los recursos del servidor como si estuviera sentado en la misma máquina.

 

Aquí hay algunos beneficios de usar SSH:

• Seguridad: SSH utiliza cifrado para proteger los datos que se transmiten entre el cliente y el servidor. Esto hace que sea muy difícil para los atacantes interceptar o modificar los datos.

• Confiabilidad: SSH es un protocolo robusto y confiable que ha sido probado en el campo durante muchos años.

• Flexibilidad: SSH se puede utilizar para una variedad de propósitos, lo que lo convierte en una herramienta versátil para administradores de sistemas y usuarios avanzados.

Si necesita acceder de forma segura a un servidor remoto, SSH es la mejor opción.

 

Figura 9. SSH cliente y servidor


 

3. BASE DE DATOS EN LA RASPBERRY PI

3.1. INSTALACIÓN DE MARIADB

$ sudo apt install mariadb-server

 

3.2. CREAR USUARIO

1. Ingresamos como super usuario.

$ sudo su

 

Figura 10. Super usuario en la Raspberry Pi

 

2. Iniciar mysql como usuario root.

# mysql -u root

Figura 11. Ingresamos como usuario root

 

3. Ver usuarios existentes.

SELECT user, host FROM mysql.user;

 

 

Figura 12. Usuarios en mariaDB

 

4. Crear nuevo usuario.

CREATE USER 'miusuario'@'localhost' IDENTIFIED BY '1234';

Figura 13. Usuario creado con password ’1234’

 

5. Conceder permisos a usuario.

GRANT ALL PRIVILEGES ON *.* TO 'miusuario'@'localhost' WITH GRANT OPTION;

Figura 14. Permisos concedidos a usuario

 

5. Confirmar que el usuario se ha creado.

SELECT user, host, authentication_string, plugin FROM mysql.user WHERE user = 'miusuario';

Figura 15. El usuario sí se ha creado

 

6. Cerrar sesión en mysql.

exit

Figura 16. Sesión cerrada

 

7. Salir de super usuario en linux.

exit

Figura 17. Volvemos a usuario de linux normal

 

8. Iniciar sesión de mariaDB con el usuario creado.

mysql -u miusuario -p

Figura 18. Sesión de usuario iniciada

 

3.3. CREAR BASE DE DATOS

• Creamos base de datos.

create database midb;

Figura 19. Base de datos creada correctamente

 

• Usamos la base de datos creada.

use midb;

Figura 20. Ahora usamos la base de datos midb

 

3.4. CREAR TABLA

1. Creamos una tabla llamada dht11.

CREATE TABLE dht11(id INT AUTO_INCREMENT PRIMARY KEY,fecha DATE,hora TIME,temperatura FLOAT,humedad FLOAT);

Figura 21. Tabla vacía creada con el nombre "dht11"

 

Figura 22. Inicialmente la tabla está vacía


4. HARDWARE

Figura 23. Conexión del sensor DHT11 con la Raspberry Pi

Cuadro 1. Conexiones

pin4 (5v) vcc(3-5v)
pin6 (GND) GND
pin7 (gpio4) data
Raspberry Pi DHT11

Figura 24. Mi implementación de hardware


5. PROGRAMACIÓN

5.1. INSTALACIÓN

1. Instalamos la librería para el sensor DHT11.

$ pip3 install Adafruit_DHT

2. Instalamos la librería para tener acceso a la base de datos que he creado con mariaDB.

$ pip3 install pymysql

5.2. CODIGO PYTHON

import Adafruit_DHT

import time

import datetime as hourSystem

import pymysql

SENSOR_DHT = Adafruit_DHT.DHT11

PIN_DHT = 4

# Conecta con la base de datos

connection = pymysql.connect(host="localhost", user="miusuario", password="1234", database="midb") cursor = connection.cursor()

while True:

  try:

    humedad, temperatura = Adafruit_DHT.read(SENSOR_DHT,PIN_DHT)

    fecha = hourSystem.datetime.today().strftime('%Y-%m-%d')

    hora =  hourSystem.datetime.today().strftime('%H:%M:%S')

    if humedad is not None and temperatura is not None:

      # Inserta la informacion en la tabla

      cursor.execute("INSERT INTO dht11(id, fecha, hora, temperatura, humedad) VALUES (NULL, %s, %s, %s, %s)", (fecha, hora, temperatura, humedad)) connection.commit()

    else:

      print("Falla en la lectura. Revisa el circuito")

  except RuntimeError as error:

    print(error.args[0])

  time.sleep(3)

5.3. EJECUCIÓN

• Ejecutamos el código python para que se siga ejecutando aún así se cierre la terminal.

$ nohup python codigo.py &

5.4. VERIFICAMOS QUE LA DATA SE GUARDA EN NUESTRA BASE DE DATOS

2. Hacemos una consulta a nuestra tabla llamada dht11.

select * from dht11;

Figura 25. Data del sensor DHT11 almacenada en la base de datos

5.5. CONEXIÓN REMOTA A LA RASPBERRY PI POR SSH

Figura 26. Conexión remota

 

En este caso la IP de la Raspberry Pi es 192.168.1.9. Se está haciendo una conexión remota a una Raspberry Pi desde una computadora con el sistema operativo Debian usando ssh. Al ejecutar el comando para la conexión ssh se va a pedir la contraseña del usuario de la Raspberry Pi llamado "pi".

$ ssh pi@192.168.1.9

Figura 27. Conexión remota por ssh establecida

 

 

Figura 28. Ya podemos iniciar sesión en mariaDB para acceder a la base de datos


CONCLUSIONES

1. La versatilidad de la Raspberry Pi permite a los usuarios recopilar datos de una variedad de sensores, desde temperatura y humedad hasta movimiento y luz, lo que la hace adecuada para una amplia gama de aplicaciones.

2. La Raspberry Pi consume una cantidad mínima de energía, lo que la convierte en una elección eficiente para proyectos de monitorización y registro de datos a largo plazo.

3. La integración con bases de datos como MariaDB permite un almacenamiento eficiente y seguro de los datos recopilados. Los usuarios pueden aprovechar las capacidades de consulta de SQL para analizar los datos de manera efectiva.

4. Al alojar una base de datos en una Raspberry Pi, es esencial prestar atención a la seguridad y la privacidad de los datos, asegurando que estén protegidos contra accesos no autorizados.


REFERENCIAS

1. Adafruit. (2012). DHT11, DHT22 and AM2302 Sensors.

2. Jadsa Tech. (2020). DHT11 DHT22 CON RASPBERRY PI.

3. Welcome to PyMySQL’s documentation!

Comentarios

Registrate o Inicia Sesión para comentar y obtener Cursos de pago gratis

function loadurl(){ var val1 = document.getElementById("valor3").value; console.log(val1); if(val1){ window.location = "/comunidad/blog/filtrar/"+val1+"/"} }