Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Raspberry Pi 4
  3. Interfaz gráfica
Extrait - Raspberry Pi 4 Saque el máximo partido a su microordenador (incluye un proyecto de estación meteorológica)
Extractos del libro
Raspberry Pi 4 Saque el máximo partido a su microordenador (incluye un proyecto de estación meteorológica)
1 opinión
Volver a la página de compra del libro

Interfaz gráfica

Elección de la interfaz

Existen numerosas soluciones para guardar y representar datos en la Raspberry Pi. Una de las más fáciles de implementar es la base de datos (BDD) InfluxDB que propone una suite de programas destinados especialmente a trabajar con MQTT (Message Queuing Telemetry Transport= transporte de telemetría por mensajes) pero que también pueden simplemente dialogar con Python. La suite de programas integra una herramienta de representación gráfica, Chronograf. Pero también existen otras como Grafana.

Grafana es una solución de software libre desarrollada para hacer interfaz con InfluxDB, entre otras. Este programa es más avanzado que Chronograf y permite añadir plug-ins con visualizaciones muy variadas. Las ventajas de Chronograf son:

  • una mejor integración con InfluxDB ya que han sido desarrolladas simultáneamente,

  • la presencia de un gestor de BDD que permite gestionar directamente InfluxDB,

  • una mayor facilidad de uso.

El uso de Chronograf es un buen enfoque para descubrir la interfaz gráfica. Más adelante será posible hacer evolucionar la estación meteorológica probando otras soluciones.

Desactivar el protector de pantalla

Raspberry Pi OS Desktop tiene la (¿fea?) costumbre de activar el protector de pantalla cuando el usuario está inactivo durante cierto tiempo. Para mostrar permanentemente las curvas de la estación meteorológica, habría que desactivar esta función.

 Abra el menú principal haciendo clic en la frambuesa que se encuentra en la parte superior izquierda de la pantalla.

images/LF14_001.png

 Después abra el menú Configuración de Raspberry Pi. En la pestaña Display, en la linea Screen Blanking, active el botón Desactivado.

images/LF14_002.png

 Confirme esta acción haciendo clic en el botón Aceptar, en la parte de abajo de la pantalla, a la derecha.

Después de reiniciar, el protector de pantalla de la Raspberry Pi ya no se activará.

InfluxDB

1. Presentación

InfluxDB es una base de datos libre especialmente diseñada para gestionar datos codificados con la hora. Se puede configurar InfluxDB para conservar los datos durante un período de tiempo definido y suprimirlos automáticamente después. Esta base soporta tanto los datos digitales como los alfanuméricos.

images/LF14_003.png

Es completamente compatible con Raspberry Pi OS en la Raspberry Pi 4 y se puede conectar con muchos lenguajes de programación, entre ellos Python.

Como todas las otras bases de datos, InfluxDB permite gestionar los derechos de diferentes usuarios.

InfluxDB marca con la hora automáticamente los datos guardados. La Raspberry Pi deberá obligatoriamente estar en hora. Esto se hace automáticamente usando NTP (Network Time Protocol= protocolo de tiempo de red) si el sistema está conectado a Internet. Para una estación que no esté conectada, habrá que prever un reloj RTC (Real Time Clock= Reloj en tiempo real) con una batería para poder mantener la hora del sistema. Los datos se guardarán en la tarjeta micro SD.

2. Instalación de InfluxDB

La operación de instalación empieza por una actualización del sistema Raspberry Pi OS.

sudo apt-get update*** 
sudo apt-get upgrade 

 Instalación de las claves de InfluxDB que permitirán garantizar la integridad de los archivos descargados.

wget -qO- https://repos.influxdata.com/influxdb.key...

Chronograf

1. Presentación

Chronograf es un programa libre que permite realizar de manera sencillla magníficos paneles de control (dashboard) para presentar gráficamente los datos guardados en InfluxDB.

La interfaz de Chronograf está en inglés. El equipo de programadores es pequeño. Los programadores no tienen previsto añadir otros idiomas a esta aplicación.

2. Instalación

 Ejecute la instalación de Chronograf.

sudo apt-get install chronograf 

 Configure el inicio automático de Chronograf durante el arranque del sistema.

sudo systemctl enable chronograf 

 Inicie el servicio Chronograf.

sudo systemctl start chronograf 

 Chronograf ha sido instalado. Abra un navegador y teclee la dirección IP de su Raspberry Pi 4 junto con el puerto 8888.

192.168.1.29:8888 
images/13LF03.png

 Aparecerá la página de inicio de Chronograf. Haga clic en Get Started y pase por las etapas del configurador rápidamente (Next o Skip), la configuración real se hará en la interfaz normal (aquí debajo).

3. Configuración de la BDD

a. Eliminación de una BDD en Chronograf

Se puede reutilizar la BDD meteorologia creada manualmente anteriormente, pero para empezar ”de manera limpia” es preferible eliminar esta BDD y crear otra nueva.

images/LF14_004.png

Para eliminar una base de datos:

(1)

En el menú de Chronograf a la izquierda de la pantalla, haga clic en InfluxDB Admin (con el símbolo de una corona).

(2)

En la zona de la BDD que quiere destruir, haga clic en el botón Delete.

(3)

Confirme la destrucción de la BDD escribiendo DELETE seguido del nombre de la BDD que quiere destruir en la zona de texto (respetando mayúsculas y minúsculas).

(4)

Haga clic en el símbolo verde images/cocheverte.png para destruir la base de datos.

La confirmación es necesaria porque la eliminación de la BDD borrará, sin posibilidad de recuperación, todos los datos que contiene. Se trata de una operación que se tiene que ejecutar con conocimiento de causa.

b. Creación de una BDD en Chronograf

En el menú de Chronograf a la izquierda de la pantalla, haga clic en InfluxDB Admin (con el símbolo de corona) y después en Create Database (en la parte de superior derecha de la pantalla) para crear una BDD desde la interfaz Chronograf.

images/13LF04.png

 Teclee el nombre de la BDD que quiere...

Enlace con el script de meteorología

1. Script final

Los valores que se enviarán a la base de datos están disponibles al final del script de gestión de la estación meteorológica. Habrá que añadir la biblioteca de Python de gestión de InfluxDB al principio del script, así como las líneas necesarias para la transferencia de datos a la base de datos al final del script.

 Teclee este script en la zona de script de Thonny (disponible para descargar en Cap14/estacion_meteorologica.py):

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
# Lee y muestra los datos proporcionados por la estación meteorológica completa 
# Envía las medidas a la BDD InfluxDB 
 
# Importar las bibliotecas usadas por el script 
import bme680 
import time 
from datetime import datetime as dt, date 
from gpiozero import MCP3008, Button 
import statistics 
import math 
import os 
import sys 
from influxdb import InfluxDBClient 
 
 
# Inicializa el intervalo de medida 300s = 5 * 60s = 5mn 
medida = 300 
# Inicializa el intervalo de medida de velocidad del viento (en segundos) 
tiempo_medida = 5 
# Inicializa el tiempo de pausa del script (en segundos) 
stop_script = 5 
 
#Crea el detector BME680 probando las dos direcciones posibles 0x76 et 0x77 
try: 
    detector = bme680.BME680(bme680.I2C_ADDR_PRIMARY) 
except IOError: 
    detector = bme680.BME680(bme680.I2C_ADDR_SECONDARY) 
 
# Configuración del sobremuestreo y del filtro 
detector.set_humidity_oversample(bme680.OS_2X) 
detector.set_pressure_oversample(bme680.OS_4X) 
detector.set_temperature_oversample(bme680.OS_8X) 
detector.set_filter(bme680.FILTER_SIZE_3) 
 
 
# Conecta el pluviómetro al GPIO 6 
pluviometro = Button(6) 
# Altura de la lluvia por impulso del pluviómetro 
impulsion_lluvia = 0.2794 
# Inicializa el contador de impulsos 
contador_lluvia = 0 
 
# Lista para guardar las alturas de lluvia cada 5 minutos 
cumul_dia_lluvia = [] 
# Cúmulo diario del día anterior 
cumul_vispera = 0.0 
 
# Conecta el anemómetro al GPIO 5 
anemometro = Button(5) 
# Inicializa el contador de vueltas 
contador...

Conclusión

Este capítulo es la síntesis de todo lo que ha sido abordado en este libro. Los programas no son perfectos, pero... funcionan. La combinación de estos proyectos puede aportar mejoras a la estación meteorológica. Por ejemplo, encender un LED cuando la temperatura supera un umbral, codificar la calidad del aire con un LED o con una cinta de LED: verde: no hay contaminación, naranja: contaminación ligera, rojo: contaminación importante…

También se pueden imaginar combinaciones entre estos proyectos y la domótica: cerrar un toldo si el viento es demasiado fuerte, abrir una compuerta de aire en un invernadero si la temperatura aumenta…

No dude en hacer pruebas y modificar los programas; es la base del aprendizaje de la programación. Siga usando el método de desarrollo de módulos elementales antes de reunirlos bajo la forma de un "gran" programa. Recapacite antes de sentarse delante del teclado. Los minutos que piensa "que está perdiendo" esquematizando en un papel las funciones de su futuro script, los métodos que empleará … serán los mismos que ganará durante la preparación del programa.

Finalmente, sea perseverante, ningún programador o programadora hace un programa sin errores. Con la costumbre se hacen menos, pero la búsqueda del fallo en los programas...