Raspberry Pi und Linux - Basiswissen - Teil 1

En AZ-Delivery, además de emocionantes proyectos con nuestros microcontroladores, también encontrará algunos temas interesantes con la Raspberry Pi. Puede que ya tenga experiencia con la Raspberry Pi, a la que en adelante nos referiremos como Pi, o puede que aun sea completamente novato en este tema. ¿Quizás es tímido porque no conoce Linux y tiene temor de hacer algo mal?

Esta serie de blogs pretende familiarizarle con la Pi y también con Linux, en este caso Raspbian, y además explicarle un poco del tema. El blog no pretende entrar demasiado en detalle, para eso hay lecturas especializadas del tema, pero sí explicar lo básico para que pueda trabajar con la Pi y también implementar pequeños proyectos en Python.

Permítame presentarle la Raspberry Pi, o Pi para abreviar

Probablemente ya ha tenido una Raspberry Pi, o Pi para abreviar, en sus manos o, al menos, ha visto una, véase la Figura 1.

Figura 1: Modelo PI de Raspberry PI 3B

Figura 1: Raspberry Pi Modelo 3B

El corazón de la Pi es el SoC de Broadcom con chip de brazo. SoC es la abreviatura de System-on-a-chip y describe el diseño de un (micro) chip que combina todas las funciones necesarias. La primera Pi no era precisamente la más rápida, con una velocidad de reloj de 700 MHz, ya que con la Raspberry Pi 4 Mod. B ya tiene una velocidad de reloj de 1,5 GHz. Sin embargo, puede hacer overclocking en la Pi, pero, esto afectará a la vida útil de la Pi. Con una memoria RAM inicial de 256 MB o 512MB, que también se debe compartir con la GPU incorporada en el chip de SoC, el proyecto se encontraba inicialmente muy limitado en términos de memoria. En comparación, la Raspberry Pi 4 tiene ahora una impresionante memoria RAM de 8 GB en la versión más grande. Para almacenar el sistema operativo se utiliza una tarjeta SD (micro), aunque desde la Pi 3 también es posible iniciar el sistema operativo a través de una memoria USB. Dependiendo del modelo, se dispone de 2 o 4 puertos USB, así como de LAN y posiblemente incluso de WLAN. Una característica destacada de la Pi son los 40 pines de GPIO, con los que puede conectar hardware independiente, véase la Figura 2.

Figura 2: Los GPIOS de la frambuesa PI 3B

Figura 2: Los GPIOs de la Raspberry Pi 3B

Con el fin de mantener los componentes individuales cortos, se describirá otro hardware además de la barra GPIO, véase la Figura 3 y la Tabla 1.

Figura 3: Resumen de otro hardware interesante

Figura 3: Resumen de otro hardware de interés


Componente de Hardware información
Chip SoC Dependiendo del modelo de la Pi con más o menos GHz. Además de la CPU, la GPU también está integrada en el chip
RAM Dependiendo del modelo y la versión, la memoria RAM tiene un aspecto diferente y un tamaño distinto. La actual Pi 4 puede tener hasta 8 GB de RAM
Puertos USB Con la PI3B ya con 2xUSB3.0 y 2xUSB2.0.
En los Pis más nuevos también en esta configuración, incluyendo sólo USB2.0
Conexión Ethernet En la Pi 3 B, se dispone de un máximo de 300 MB/s a través de USB2.0
Conector jack Para el sonido
Puerto de cámara Para conectar una cámara Raspberry Pi compatible
Puerto HDMI Dependiendo del modelo de Pi con uno o más puertos HDMI, aquí tiene que comprobar si es un puerto HDMI, Midi-HDMI o Mini-HMID
Power-In A través de USB-Mini o USB-C, varía según el modelo de Pi
Puerto de pantalla Para conectar una pantalla compatible


Tabla 1: Descripción de hardware

Pero ¿por qué es importante exactamente? Dependiendo de su tarea, se necesita una Pi diferente para implementar el proyecto. Por ejemplo, la solución NAS OpenMediaVault es apenas factible con una Raspberry Pi 3 Modelo B, sería mejor una Raspberry Pi 4 con 4 GB, o un simple servidor web con una antigua Raspberry Pi 2. Mi MagicMirror particular ya necesitaba una Raspberry 3 Modelo B+, ya que la cantidad de los datos sobrescribiría a una Raspberry Pi más antigua. Como ve, es importante para su proyecto conocer de antemano los requisitos mínimos que se necesitan.

El hogar adecuado para la Raspberry Pi

AZ-Delivery ofrece actualmente, a partir del 10.2021, la Raspberry Pi 3 Modelo B. La carcasa, la fuente de alimentación o la tarjeta SD no están incluidas en el volumen de suministro. Dejar los aparatos electrónicos, incluida la Pi, por ahí no es una buena idea. Por lo tanto, la Pi debe estar siempre protegida en una carcasa adecuada, que por supuesto depende del tipo de proyecto. Si es un verdadero fabricante, puede imprimir una carcasa usted mismo, pero hay una amplia selección en varios minoristas. Dado que trabajo mucho con la Pi en el área de NAS, servidores web, filtro DNS o servidor de impresoras 3D, naturalmente quiero tener una carcasa útil y de alta calidad para mis Pis. Sin querer hacer publicidad aquí, yo utilizo sobre todo carcasas de Geekworm.com y también instalo los módulos complementarios correspondientes para ellos. Actualmente tengo 3 carcasas de geekworm y una de DeskPi. Esta última tiene la ventaja de que puedo acceder a todos las GPIOs, lo que no ocurre en parte con las de geekworm. Las modificaciones, en forma de trabajos antiestéticos en la carcasa, destruirían la óptica. Por lo tanto, siempre preste atención a la carcasa correcta, para el proyecto adecuado.

Volvamos a los GPIOS

Ya he mencionado los GPIOs, véase la Figura 2. A diferencia de una PC normal, el ordenador de una sola placa tiene 40 conectores, los denominados GPIOs, para controlar sensores, pantallas o actuadores. Esto le permite desarrollar programas que interactúan con el mundo exterior. En versiones anteriores, la Pi tenía 28 GPIOs disponibles, lo que también restringía mucho algunos proyectos. Es importante saber que, aunque pueden aprovechar los 5V de la Pi, los GPIOs sólo pueden manejar un máximo de 3,3V. Los sensores o actuadores que devuelven 5V a la salida necesitan un convertidor interconectado, de lo contrario destruirá las GPIOs o incluso peor, la Pi. En principio, puede pensar en los GPIOs como los pines de un ESP32 NodeMCU Módulo WLAN WiFi Placa de desarrollo con CP2102. La diferencia es que no se está programando un microcontrolador, sino programas basados ​​en un sistema operativo. Dependiendo de la versión de la Pi, debe comprobar exactamente qué pin es responsable de cada actividad, véase la Figura 4.

Figura 4: Ocupación de GPIO para Raspberry PI 3 y 4

Figura 4: Asignación de GPIO para Raspberry Pi 3 y 4, https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header

¿Puedo introducir Raspbian o Linux?

En este punto, hay un tema, que es probablemente la razón más común por la que la gente evita la Pi. Estamos hablando del sistema operativo de uso frecuente, véase la Figura 5, que utiliza Debain como base. El nombre Raspbian se compone de Rasparberry Pi y de debian, aunque ahora hay más que este único sistema operativo.

Figura 5: Logotipo oficial de Raspbian

Figura 5: Logotipo oficial de Raspbian

Debian es una de las denominadas distribuciones de Linux y sólo con la palabra Linux mucha gente le entra el pánico o el miedo a sudar en la frente. La razón es que Linux era difícil de instalar y utilizar en sus inicios. Esta imagen es y fue también moldeada por el hecho de que muchas películas de acción muestran a hackers con muchos monitores y muchos terminales abiertos en los que se introducen comandos que son ilegibles para los "mortales normales" y se devuelve una salida incomprensible. Por lo general, se afirmaba entonces que se trataría de un sistema operativo complicado, principalmente Linux. No es tan extremo como nos quiere hacer creer Hollywood, pero Linux no es Windows, que, a fecha de 22.09.2021, tiene una cuota de mercado de casi el 75% de participación de mercado en todo el mundo. Además del terminal puro, Linux también tiene una interfaz gráfica de usuario. Lo mejor es que la interfaz gráfica de usuario y el terminal se pueden utilizar en paralelo, de forma similar a como se puede utilizar la línea de comandos en Windows en paralelo.

Pero, ¿por qué la Fundación Raspberry Pi utiliza Linux, si parece tan complicado y con una cuota de mercado de poco menos del 2,3% en todo el mundo por lo que se utiliza muy poco? La palabra clave es OpenSource y que Linux como sistema operativo, con algunas excepciones, está disponible de forma gratuita. Se debe pagar dinero por una licencia para Windows o MacOS, lo que no ocurre con Linux. Además, en este caso relacionado con Raspbian, el requisito de hardware es mínimo y también se puede utilizar para los denominados Arm-Chips. Como mirada más allá de la punta de la nariz, se debe señalar también que los superordenadores y muchos grandes servidores de proveedores conocidos funcionan todos con Linux. El problema de los sistemas operativos más comunes son los requisitos de hardware, que actualmente están exigiendo una arquitectura de 64bits, especialmente para la CPU. Otros chips, por ejemplo, el chip de SoC de la Raspberry Pi, no son compatibles o lo son sólo parcialmente.

Una opción interesante, especialmente para los principiantes, es la versión actual de Raspbian, que ya incluye todos los programas habituales. Cuando se instala en la tarjeta SD o se descarga la imagen, se debe prestar atención a si se ha seleccionado la versión Lite o Full. El primero es un Raspbian sin escritorio y al que le faltan muchos programas, el segundo es el paquete todoterreno sin preocupaciones para los principiantes. Cómo instalar Raspbian en su Pi se puede encontrar en el E-Book de AZ-Delivery. Mientras tanto, sin embargo, hay una herramienta más simple de la Fundación Raspberry Pi, el Raspberry Pi Imager, que está disponible para todos los sistemas operativos comunes, véase la Figura 6.

Figura 6: The Raspberry Pi Imager

Figura 6: El Raspberry Pi Imager

Si, como yo, sólo utiliza la Pi a través de SSH la mayor parte del tiempo, la herramienta ofrece un menú especial a través de la combinación de teclas Ctrl + Shift + X, véase la Figura 7, en el que ya puede cambiar el nombre del host o activar SSH directamente, por ejemplo.

Figura 7: Modificación del sistema operativo

Figura 7: Modificación del sistema operativo

La Fundación Raspberry Pi también ha publicado el video correspondiente.

Esto le ahorra una gran cantidad de trabajo de configuración durante la instalación del sistema operativo. Otros sistemas operativos como OctoPrint o RetroPi también pueden ser convenientemente seleccionados a través del Raspberry Pi Imager. De hecho, también se puede descargar una imagen de Internet, como, Kali-Linux para la Raspberry Pi. Haga la prueba usted mismo y verá las ventajas.

El sistema de permisos en Linux

Ahora se pone un poco muy teórico y probablemente un tema confuso al principio. Linux, al igual que MacOS o Windows, utiliza un sistema de permisos, aunque el sistema de permisos de MacOS es más similar al de los sistemas Linux o UNIX. Como en todo sistema operativo común, hay usuarios y grupos, por lo que Linux distingue entre el propietario y los demás usuarios. Cada usuario puede ser añadido a uno o más grupos o recibir los derechos especiales.

En este punto, sin embargo, se vuelve mucho más complejo con Linux, porque linux lleva la gestión de permisos al extremo. Como regla general, un simple usuario sólo puede hacer lo que quiera en su directorio de trabajo, el denominado directorio personal. Los datos se pueden crear, editar o borrar como se desee. La situación es diferente con los directorios personales de otros usuarios e incluso con otros directorios en Linux. Para poder acceder a ellos, se debe asignar los derechos adecuados. Como ya se ha mencionado anteriormente, Linux distingue entre propietario, grupo y otros usuarios.

Básicamente, cada uno de estos grupos de derechos mencionados puede asignar los atributos de lectura, escritura y ejecución. En el caso de las carpetas y los archivos, se pueden conceder estos "derechos". Si usted no es el propietario o no está en el grupo y no se le permite acceder a los archivos o carpetas como cualquier otro usuario, entonces se le niega el acceso a las carpetas o archivos. En este punto no quiero entrar en demasiados detalles ya que este tema por sí solo podría llenar libros. Me gustaría remitirle a Wikipedia , que ha documentado el tema de forma muy sencilla y clara. Probablemente sólo enfadé a los seguidores de Windows, ya que éste tiene un sistema de permisos ampliado, pero para ser sinceros, no suele necesitar más que los derechos de archivo de UNIX.

El escritorio de Raspbian y un pequeño proyecto

Ahora echemos un vistazo al escritorio, véase la Figura 8. Coloque la tarjeta microSD en la Pi, conecte la fuente de alimentación, el monitor, el ratón y el teclado, y espere a que la Pi arranque. La barra de tareas está en la parte superior de la pantalla, como en muchas distribuciones de Linux. Tiene un menú de inicio a la izquierda e información importante a la derecha, como la hora, el volumen, Ethernet y otros widgets de libre configuración que puede elegir.

Figura 8: La superficie de Raspbian.

Figura 8: La interfaz de Raspbian.

En la pantalla se visualiza que también muestra la temperatura del procesador y la carga del mismo. Esto me da una visión personal de lo ocupado que está la Raspeberry Pi en este momento.

El menú de inicio también puede parecerle extraño, a diferencia de Windows, véase la Figura 9.

Figura 9: Menú de inicio de RASPBIAN

Figura 9: Menú de inicio de Raspbian

Aquí se subdivide para lo que el programa está destinado. En el apartado de Office, por ejemplo, encontrará LibreOffice y en en el de Desarrollo las dos codiciadas interfaces para desarrolladores Geany y Thonny Python IDE. Esta última es una interfaz de desarrollo para Python, que ya aclara que Python 2 y 3 están instalados en el Raspbian por defecto. Esta interfaz de programación también es ideal para la programación de la Raspberry Pi Pico. ¿Cómo determinar exactamente qué programas se instalan y cómo se instalan o eliminan los programas o bibliotecas? Será parte del próximo blog.

En la última sección, una pantalla OLED de 0,96" debería mostrar información de la Pi. Por ejemplo, si no sabe la dirección IP de la Pi, puede usar un escáner de red, pero sería más interesante que la pantalla mostrara exactamente esta información. Este es un gran proyecto para familiarizarse con el sistema operativo y la tira de conectores GPIO.

En primer lugar, si aún no lo ha hecho, debe activar la interfaz i2c en la Pi, véase la Figura 10. Para hacer esto, navegue a la Configuración en el menú Inicio y luego Configuración de la Raspberry Pi.

Figura 10: Activar la interfaz I2C

Figura 10: Activar la interfaz I2C

En la pestaña Interfaz, active I2C y reinicie la Raspberry Pi. A continuación, la interfaz está disponible. Posteriormente, instale las bibliotecas y las herramientas necesarias, véase la Figura 11 y consulte el Código 1.

Figura 11: Instalación de programas necesarios

Figura 11: Instalación de los programas necesarios

 sudo apt-get install python-smbus i2c-tools

Código 1: Instalación de lsa bibliotecas necesarias

Teóricamente, estos paquetes ya deberían estar disponibles, pero es mejor comprobarlo de nuevo, dependiendo de la antigüedad de Raspbian, los paquetes también podrían faltar o necesitar una actualización. Para poder controlar la pantalla OLED de 0.96", se necesita una biblioteca de programación y ejemplos correspondientes. Para los scripts de ejemplo, clone un repositorio correspondiente de Adafruit a través del terminal Git, consulte el Código 2.

 git clone https://github.com/adafruit/Adafruit_CircuitPython_SSD1306.git

Código 2: Clonación del repositorio Git necesario

A continuación, ejecute el Código 3 para descargar e instalar la biblioteca necesaria adafruit-circuitpython-ssd1306 con todas las dependencias.

 sudo pip3 install adafruit-circuitpython-ssd1306

Código 3: Instalación de la biblioteca Python necesaria

Ahora la pantalla OLED sigue conectada a la Pi, que sigue siendo manejable con cuatro cables, véase la Figura 12. Asegúrese de que la pantalla necesita 3,3V y que conecte los pines para SDA y SCL correctamente en la Raspberry Pi. De nuevo, un vistazo a las especificaciones le ayudará si no está seguro.

Figura 12: Conecte la pantalla a la PI

Figura 12: Conexión de la pantalla a la Pi

Para probar si la pantalla y la biblioteca funcionan, cambie al directorio de "Ejemplos" del repositorio previamente clonado Adafruit_CircuitPython_SSD1306 y ejecute el ejemplo shapes.py. La forma más fácil de hacerlo es utilizar el código 4.

  cd Adafruit_CircuitPython_SSD1306
cd examples
python3 ssd1306_pillow_demo.py

Código 4: Utilización del código de ejemplo ssd1306_pillow_demo.py

Ahora debería leer un mensaje de "Hola Mundo" en la pantalla, véase la Figura 13.

Figura 13: Hola mundo desde el demostrado.

Figura 13: "Hola mundo" del script de demostración

Ahora que los preparativos están completos, me gustaría utilizar una versión modificada del ejemplo "stats.py" para mi visualización. Modificado en el sentido de que, por un lado, uso un disco duro de 750 GB como medio de arranque para mi Pi y, por otro lado, me gustaría tener información parcialmente diferente, como la temperatura de la CPU y las unidades correctamente mostradas para la RAM y la memoria.

Para hacer esto, abra el Administrador de archivos y cree una nueva carpeta llamada Raspystat, véase la Figura 14.

Figura 14: Crear nueva carpeta RaspyStat

Figura 14: Creación de nueva carpeta RaspyStat

En esta nueva carpeta, cree un nuevo archivo llamado stats.py, véase la Figura 15.

Figura 15: Crear nuevos estados de archivo .py

Figura 15: Creación de nuevo archivo stats.py

Abra este archivo, utilizando por ejemplo Thonny Python IDE y pegue el código fuente modificado del código 5:


 # SPDX-FileCopyrightText: 2017 Tony DiCola for Adafruit Industries
 # SPDX-FileCopyrightText: 2017 James DeVito for Adafruit Industries
 # SPDX-License-Identifier: MIT
 
 # This example is for use on (Linux) computers that are using CPython with
 # Adafruit Blinka to support CircuitPython libraries. CircuitPython does
 # not support PIL/pillow (python imaging library)!
 
 # Mod by: Joern Weise
 # Mod date: 20.10.2021
 # Some modifications to show wanted information on display
 
 import time
 import subprocess
 
 from board import SCL, SDA
 import busio
 from PIL import Image, ImageDraw, ImageFont
 import adafruit_ssd1306
 
 
 # Create the I2C interface.
 i2c = busio.I2C(SCL, SDA)
 
 # Create the SSD1306 OLED class.
 # The first two parameters are the pixel width and pixel height. Change these
 # to the right size for your display!
 disp = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)
 
 # Clear display.
 disp.fill(0)
 disp.show()
 
 # Create blank image for drawing.
 # Make sure to create image with mode '1' for 1-bit color.
 width = disp.width
 height = disp.height
 image = Image.new("1", (width, height))
 
 # Get drawing object to draw on image.
 draw = ImageDraw.Draw(image)
 
 # Draw a black filled box to clear the image.
 draw.rectangle((0, 0, width, height), outline=0, fill=0)
 
 # Draw some shapes.
 # First define some constants to allow easy resizing of shapes.
 padding = -2
 top = padding
 bottom = height - padding
 # Move left to right keeping track of the current x position for drawing shapes.
 x = 0
 
 
 # Load default font.
 font = ImageFont.load_default()
 
 # Alternatively load a TTF font. Make sure the .ttf font file is in the
 # same directory as the python script!
 # Some other nice fonts to try: http://www.dafont.com/bitmap.php
 # font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 9)
 
 while True:
 
     # Draw a black filled box to clear the image.
     draw.rectangle((0,0,width,height), outline=0, fill=0)
 
     # Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load
     cmd = "hostname -I | cut -d\' \' -f1"
  # cmd = "hostname -I |cut -f 2 -d ' '"
     IP = subprocess.check_output(cmd, shell = True )
  # cmd = "top -bn1 | grep load | awk '{printf \"CPU: %.2f\", $(NF-2)}'"
  # CPU = subprocess.check_output(cmd, shell = True )
     cmd = "free -m -h| awk 'NR==2{printf \"Mem: %s / %s\", $3,$2}'"
     MemUsage = subprocess.check_output(cmd, shell = True )
     MemUsage = str(MemUsage,'utf-8')
     MemUsage = MemUsage.replace("Mi","MB")
     MemUsage = MemUsage.replace("Gi","GB")
     cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'"
     Disk = subprocess.check_output(cmd, shell = True )
     cmd = "vcgencmd measure_temp |cut -f 2 -d '='"
     temp = subprocess.check_output(cmd, shell = True )
 
     # Write two lines of text.
 
     draw.text((x, top + 0),       "IP: " + str(IP,'utf-8'),  font=font, fill=255)
     draw.text((x, top + 8),     "Temp: " + str(temp,'utf-8'), font=font, fill=255)
     draw.text((x, top + 16),    MemUsage,  font=font, fill=255)
     draw.text((x, top + 25),    str(Disk,'utf-8'),  font=font, fill=255)
 
     # Display image.
     disp.image(image)
     disp.show()
     time.sleep(2)
 
Código 5: Código ssd1306_stat.py modificado


Después de ejecutar a través del botón de inicio resaltado en verde, la pantalla debe ser como en la figura 16.

Figura 16: Pantalla de estado en la pantalla OLED

Figura 16: Visualización del estado en la pantalla OLED

Como no me gustaba la fuente, descargué el Pixeloperator.ttf de http://www.dafont.com y lo puse en el mismo directorio que mi código fuente. Al mismo tiempo hice las siguientes modificaciones en el código, consulte el Código 6, de lo contrario el texto no hubiera sido legible.

 # SPDX-FileCopyrightText: 2017 Tony DiCola for Adafruit Industries
 # SPDX-FileCopyrightText: 2017 James DeVito for Adafruit Industries
 # SPDX-License-Identifier: MIT
 
 # This example is for use on (Linux) computers that are using CPython with
 # Adafruit Blinka to support CircuitPython libraries. CircuitPython does
 # not support PIL/pillow (python imaging library)!
 
 
 # Mod by: Joern Weise
 # Mod date: 20.10.2021
 # Some modifications to show wanted information on display
 # Use font ‚PixelOperator.ttf‘ for better reading
 
 import time
 import subprocess
 
 from board import SCL, SDA
 import busio
 from PIL import Image, ImageDraw, ImageFont
 import adafruit_ssd1306
 
 
 # Create the I2C interface.
 i2c = busio.I2C(SCL, SDA)
 
 # Create the SSD1306 OLED class.
 # The first two parameters are the pixel width and pixel height. Change these
 # to the right size for your display!
 disp = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)
 
 # Clear display.
 disp.fill(0)
 disp.show()
 
 # Create blank image for drawing.
 # Make sure to create image with mode '1' for 1-bit color.
 width = disp.width
 height = disp.height
 image = Image.new("1", (width, height))
 
 # Get drawing object to draw on image.
 draw = ImageDraw.Draw(image)
 
 # Draw a black filled box to clear the image.
 draw.rectangle((0, 0, width, height), outline=0, fill=0)
 
 # Draw some shapes.
 # First define some constants to allow easy resizing of shapes.
 padding = -2
 top = padding
 bottom = height - padding
 # Move left to right keeping track of the current x position for drawing shapes.
 x = 0
 
 
 # Load default font.
 # font = ImageFont.load_default()
 
 # Alternatively load a TTF font. Make sure the .ttf font file is in the
 # same directory as the python script!
 # Some other nice fonts to try: http://www.dafont.com/bitmap.php
 font = ImageFont.truetype('PixelOperator.ttf',16)
 
 while True:
 
     # Draw a black filled box to clear the image.
     draw.rectangle((0,0,width,height), outline=0, fill=0)
 
     # Shell scripts for system monitoring from here : https://unix.stackexchange.com/questions/119126/command-to-display-memory-usage-disk-usage-and-cpu-load
     cmd = "hostname -I | cut -d\' \' -f1"
     # cmd = "hostname -I |cut -f 2 -d ' '"
     IP = subprocess.check_output(cmd, shell = True )
  # cmd = "top -bn1 | grep load | awk '{printf \"CPU: %.2f\", $(NF-2)}'"
  # CPU = subprocess.check_output(cmd, shell = True )
     cmd = "free -m -h| awk 'NR==2{printf \"Mem: %s / %s\", $3,$2}'"
     MemUsage = subprocess.check_output(cmd, shell = True )
     MemUsage = str(MemUsage,'utf-8')
     MemUsage = MemUsage.replace("Mi","MB")
     MemUsage = MemUsage.replace("Gi","GB")
     cmd = "df -h | awk '$NF==\"/\"{printf \"Disk: %d/%dGB %s\", $3,$2,$5}'"
     Disk = subprocess.check_output(cmd, shell = True )
     cmd = "vcgencmd measure_temp |cut -f 2 -d '='"
     temp = subprocess.check_output(cmd, shell = True )
 
     # Write two lines of text.
 
     draw.text((x, top + 2),       "IP: " + str(IP,'utf-8'),  font=font, fill=255)
     draw.text((x, top + 18),     "Temp: " + str(temp,'utf-8'), font=font, fill=255)
     draw.text((x, top + 34),    MemUsage,  font=font, fill=255)
     draw.text((x, top + 50),    str(Disk,'utf-8'),  font=font, fill=255)
 
     # Display image.
     disp.image(image)
     disp.show()
     time.sleep(2)
 
Código 6: Escritura de estadísticas modificadas con fuente

Figura 17: Nueva fuente en el directorio de script.

Figura 17: Nueva fuente en el directorio de scripts

Por último, este script se debe ejecutar tan pronto como la Pi se encienda y Raspbian se inicie. Para que esto funcione, abro un terminal e introduzco el Código 7.

sudo nano /etc/rc.local

Código 7: Abrir RC.Local

Luego añado el Código 8 al final, pero antes de la salida 0, y cierro el editor con la combinación de teclas Ctrl + X.

  cd /home/pi/RaspyStat
sudo python3 stats.py &

Código 8: Ejecutar stats.py al inicio

Confirme con J o Y, según la configuración del idioma, la consulta sobre si se debe "Guardar la memoria intermedia modificada", véase la Figura 18.

Figura 18: Ajuste de RC.Local Guardar

Figura 18: Guardar el ajuste de rc.local

Para probar si el script funciona, reinicie la Raspberry Pi una vez a través del menú de inicio. Por favor, tenga en cuenta que las rutas pueden diferir de mis especificaciones, así que ajuste los comandos según su ruta y nombre de archivo. Podrá comprobar que todo funciona corectamente si su pantalla tiene un aspecto similar al de la Figura 19.

Figura 19: Infos del sistema en la pantalla después de reiniciar

Figura 19: Información del sistema en la pantalla tras el reinicio

Resumen

Ha aprendido mucho sobre la Raspberry Pi junto conmigo. Ahora ya conoce los antecedentes de la Raspberry Pi, qué sistema operativo se utiliza normalmente y cómo se introduce en la tarjeta MicroSD. Además, ahora conoce un poco sobre la interfaz gráfica de Raspbian y ha implementado un proyecto simple utilizando Python3. Hasta este momento, ha habido muchas aportaciones y la curva de aprendizaje ha sido probablemente muy pronunciada. En este punto, al igual que con la programación de microcontroladores, es necesario leer más sobre el tema o leer artículos en Internet. La siguiente parte explicará cómo está estructurado el sistema (de archivos), que qué se trata la palabra "sudo", cómo usar la línea de comandos con comandos importantes y cómo puede proteger su Raspberry Pi hasta cierto punto. Al mismo tiempo, me gustaría concluir presentando proyectos apasionantes que, con las instrucciones adecuadas y el tiempo necesario, podrían ser realizados por usted.

Puede encontrar los códigos fuente y otros proyectos para AZ-Delivery de mi parte en https://github.com/M3taKn1ght/Blog-Repo.


Proyectos para principiantesRaspberry pi

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas