miércoles, 10 de julio de 2024

Librería PyTermTk crea interfaces en terminal


Buenas a todos! Hoy he descubierto una librería para Python que me ha dejado una espinita. Se llama PyTermTK y es una biblioteca que ofrece una gran variedad de características para crear TUIs (Terminar User Interfaces).
Tiene un gran parecido a TKinter a la hora de diseñar una interfaz y vamos a ver como se instala y ver algunos de sus ejemplos.
PyTermTK también tiene la opción para un diseñador de interfaces llamado ttkDesigner y veremos también como instalarlo y como usarlo.

Instalación de la librería con pip3:


# Instalación

pip3 install pytermtk

Que nos ofrece PyTermTk:
  • Fácilidad de uso con una API simple e intuitiva que la hace fácil de aprender y usar.
  • Potencia gracias a una amplia gama de widgets y funciones para crear TUIs complejas.
  • Flexibilidad para crear una variedad de aplicaciones, desde simples interfaces de línea de comandos hasta aplicaciones de escritorio completas.
  • Extensible ya permite agregar sus propias funciones y widgets.

Gracias a estas funcionalidades de usar PyTermTk puedes crea TUIs atractivas y fáciles de usar que se pueden ejecutar en cualquier sistema operativo que tenga una terminal compatible. Además PyTermTk es una biblioteca liviana y eficiente que no consume muchos recursos de su sistema.



Una de las cosas que más me ha gustado es que se puede usar incluso por ssh lo que hace que sea ideal para hacer programas más sencillos de usar para la terminal

PyTermTk desde SSH

PyTermTk desde Terminal en local




ttkDesigner es una herramienta visual para diseñar interfaces de usuario de terminal (TUIs) utilizando la biblioteca pyTermTk. Permite crear TUIs de forma rápida y sencilla, sin necesidad de escribir código. 

Instalación de ttkDesigner con pip3:


# Instalación

pip3 install --upgrade ttkdesigner

Para usar ttkDesigner debes abrirlo desde tu terminal. Puedes hacerlo ejecutando el siguiente comando:


# Ejecución de ttkDesigner

ttkDesigner




ttkDesigner


Puedes encontrar toda la información sobre PyTermTk y ttkDesigner:

pyTermTk: https://github.com/topics/pytermtk 

ttkDesigner: https://github.com/ParthJadhav/Tkinter-Designer 

theDumbPaintTool: h    ttps://github.com/topics/paint-tools 

tlogg: https://github.com/dromara/TLog 

ttkode: https://github.com/ceccopierangiolieugenio/ttkode





lunes, 1 de julio de 2024

Raspberry Pi 3 ventilador PWM

Como estamos a Julio y se vienen 'las calores', es hora de refrigerar la Raspberry pi 3. Esta es una Raspberry que adquirí de segunda mano y viene sin ningún tipo de refrigeración y eso no es muy recomendable. Como le voy a dar varios usos (maquina arcade, probar SO etc) puede ser que tenerla sin un disipador no sea lo mejor. 

Ya he encargado unos cuantos disipadores en una web chinesca, pero espero que sea valida para estos pequeños accesorios.

También se me ocurrió ponerle un pequeño ventilador conectado a uno de los puertos GPIO de las Raspberry pi. Como los ventiladores son de 5V DC pero no tienen linea PWM, tenemos que crear un pequeño driver con un transistor que controle el PWM.

Primero tenemos que saber cuales son las temperaturas aproximadas que alcanza el procesador. Investigando un poco he encontrado esta tabla, más o menos representativa:


Temperaturas: Sin disipador Con disipador Disipador activo
Sin carga: ~40ºC ~30ºC 25ºC - 30ºC
Carga media: 50ºC - 60ºC 40ºC - 50ºC 30ºC - 40ºC
Carga intensiva: 60ºC - 80ºC 50ºC - 70ºC 40ºC - 60ºC

Tomando esta tabla como referencia crearemos unos perfiles y por último un perfil personalizado.

También se puede añadir un DHT11 para tener una referencia de la temperatura ambiente, pero eso para otro momento, Por el momento nos vamos a centrar en el PWM 

Programaremos en Python y usaremos las librerías RPi.GPIO para el control de los pines GPIO. La librería time para hacer una pausa antes de mostrar los datos y subprocess para capturar la salida de 'vcgencmd' donde nos mostrará el dato de measure_temp.  

Con estos datos y con el perfil que tengamos seleccionado aplicara una velocidad u otra al ventilador.

El programa completo se puede descargar desde Github

En este punto ya tenemos la parte de programación. Ahora le toca el turno a la electrónica.

Como queremos mover un ventilador, aunque pequeño, su carga es mucho más que los 15mA que puede entregar el pin de la Raspberry Pi. Para solucionar esto usaremos un transistor NPN como el BC548 una resistencia de 10Kohm y un diodo 1N4007

Usaremos el siguiente diagrama:


Una vez tenemos todo conectado tenemos que habilitar los pines de la Raspberry Pi. Tenemos un diagrama de los pines si en el terminal usamos el comando 'pinout'


Este comando también nos dará información como el modelo, SoC, RAM, puertos USB y algunos parámetros más. Si necesitas más información sobre la placa podemos usar el comando 'raspinfo'

Ahora solo falta que este programa se ejecute al iniciar la maquina. Esto es muy sencillo solo tenemos que añadir una linea en el 'crontab' ejecutando 'sudo crontab -e' que será la encargada de cargar el programa en el inicio del sistema. Añadiremos la siguiente linea:


  @reboot sleep 15; /usr/bin/python3 /home/ruta_del_archivo/pwm_fan_rpi3.py > /dev/null
  

Lo podemos desglosar de la siguiente manera:
  • @reboot sleep 15; -> Iniciara el script cuando se reinicie la maquina y hayan pasado 15 segundos
  • /usr/bin/python3 -> Ruta donde se encuentra Python3
  • home/.../pwm_fan_rpi3.py -> ruta donde se encuentra el script de Python
  • > /dev/null -> mandamos la salida del programa a null
Tengo que añadir que al intentar ejecutar el programa en el sistema RetroPie que tengo instalado este comando no me ha funcionado correctamente, he tenido que poner este:
  
@reboot sleep 15 && python3 /home/pi/Ruta_del_archivo/pwm_fan_rpi3.py > /home/Ruta_para_log/cron.log 2>&1

Por otro lado al cargar el programa me daba muchos errores de las librerías y la única solución que he encontrado es instalar las librerías con sudo. Haciendo esto todo ha funcionado perfectamente iniciando el ventilador al arrancar el sistema.

Y bueno hasta aquí la parte de programación y teoría. Montaremos los componentes y probaremos que tal va el programa.

Advertencia: 

A partir de 80°C, la Raspberry Pi 3 comenzará a reducir su velocidad de reloj (thermal throttling) para protegerse del sobrecalentamiento. Esto puede afectar el rendimiento de la placa.

Superar los 85°C durante un período prolongado puede dañar la Raspberry Pi 3.


Fuente:

domingo, 2 de junio de 2024

ESP32 Micropython y Thonny IDE

El ESP32 es un microcontrolador muy potente y versátil con módulos WiFi y Bluetooth integrados de bajo costo y alta potencia desarrollado por la compañía china Espressif
Muy utilizado en el internet de las cosas, domótica, robótica y una amplia gama de proyectos y aplicaciones, sobre todo, si son aplicaciones que necesiten un bajo consumo de energía. 
Es fácil de programar y cuenta con una gran comunidad a sus espaldas.
Es el sucesor del más que famoso ESP8266 el cual es mono núcleo y no cuenta con comunicación bluetooth. En una de las cosas que si se parecen es en su bajo costo, se pueden encontrar desde unos 3€ aproximadamente.

A día de hoy, en 2024, existen varias series y modelos del microcontrolador ESP32, cada uno con características y enfoques específicos pero en este articulo vamos a centrarnos en el modelo WROOM32.

sábado, 9 de marzo de 2024

Kdenlive, edita vídeo con código abierto

 Kdenlive es un editor de vídeo no lineal gratuito y de código abierto disponible para Linux, Windows y macOS. 

Tengo que decir que el editor que utilizo para mis vídeo del canal de youtube y Kdenlive ha mejorado mucho con los años (no como mis vídeos jajaja). Al principio era muy fácil que se quedara colgado o que simplemente desapareciera la pantalla, esto ya no pasa. O es algo muy raro. También editar con un portátil con mas de 10 años tampoco era lo mejor. Para lo que lo uso a mi me va bien, y como todo, cuanto más tiempo de uso mejoramos nuestra curva de aprendizaje.

Uno de los puntos fuertes de Kdenlive es que cuenta con una comunidad activa, comprometida y, generalmente, apasionada del software libre. Podemos tener información tanto en el foro oficial como en canales de Youtube tipo "Locos por Linux" o "Punto Edu".

Aquí hay algunas de las características más destacables de Kdenlive:

sábado, 2 de marzo de 2024

WLED el mejor control para tus tiras LED


WLED es un firmware de código abierto que te permite controlar tiras de LED digitales RGB con un microcontrolador ESP8266 o ESP32. Es una de las mejores alternativas a los controladores LED tradicionales, ya que ofrece una gran flexibilidad y personalización a través de una interfaz web intuitiva.

Empecemos!

Una tira de LED direccionable es un tipo de tira de LED que te permite controlar el color y el brillo de cada LED individual. La más popular es la denominada WS2812B y es la tira de led que he usado en varios proyectos con unos resultados totalmente satisfactorios. Uno de ellos es la iluminación para la caja del PC.


domingo, 18 de febrero de 2024

Documenta tu proyecto con doxygen y doxygen-gui

Este es uno de esos programa de los de... como no lo conocí esto antes... Si, Doxygen es una herramienta de generación de documentación para código fuente. Es una herramienta gratuita y de código abierto que se puede usar para generar documentación en HTML, LaTeX, RTF, PDF y otros formatos.


Es genial si tienes que compartir código con otros miembros de un equipo de trabajo o para recordar que hacía ese código que escribiste hace años. Otra ventaja es que en la mayoría de las distribuciones ya lo tienen incluido en sus repositorios.

Instalación desde repositorios Ubuntu

Para instalar Doxygen solo tienes que abrir una terminal y ejecuta el siguiente comando:


sudo apt install doxygen

Este comando instalará la última versión estable de Doxygen en tu sistema.

Instalación desde binarios