Armando una mini-PC basada en Raspberry Pi 4 con una pantalla que muestra el modo de procesador



Hoy te mostraré cómo armar una carcasa para la Raspberry Pi 4, que convierte una frambuesa en una verdadera mini computadora.



La carcasa está parcialmente impresa en 3D y parcialmente hecha de acrílico transparente, por lo que puede ver el "interior" de nuestro mini-PC. Para enfriar el procesador, usé un enfriador Ice Tower, pero no conecté el ventilador al radiador, sino a la pared de la caja.



También construí una pantalla OLED en la parte frontal de la carcasa, que muestra la dirección IP y los datos de la Raspberry, como el rendimiento y la temperatura de la CPU, el almacenamiento y el uso de la memoria.



Aquí hay un video del ensamblaje, la carcasa y la pantalla:





Lo que necesita para crear su propia mini computadora de escritorio Raspberry Pi 4







  • Raspberry Pi 4 (cualquier modelo servirá)
  • Tarjeta micro SD;
  • Fuente de alimentación Raspberry Pi;
  • Torre de hielo más fría;
  • Pantalla OLED I2C;
  • Cable plano;
  • Conector macho hembra;
  • Tornillos de montaje;
  • Acrílico 2 mm;
  • Plástico negro para impresora 3D (PLA).


También necesitará una impresora 3D para imprimir la parte de plástico de la carcasa. Estoy usando la Creality Ender 3 Pro, que creo que combina asequibilidad y calidad.



No se requiere un grabador láser para el montaje, aunque facilita mucho la fabricación de las partes del cuerpo. Siempre puede simplemente cortarlos a mano con las herramientas que tiene o utilizar un servicio de corte por láser. Usé un grabador láser de escritorio K40.



Armemos nuestro estuche Raspberry Pi 4



Imprimimos el cuerpo en una impresora 3D



Empecé creando un modelo 3D del boxeo futuro en Tinkercad .





Descarga el modelo


Se desarrolló un modelo de caja teniendo en cuenta la ubicación prevista de la Raspberry Pi dentro de la caja. Según el plan, los puertos USB y Ethernet están disponibles en la parte frontal, mientras que los puertos de alimentación, HDMI y audio están en la parte posterior.



La pantalla OLED se encuentra en la parte frontal de la carcasa, encima de los puertos. En la parte superior lo arreglaremos con dos clips pequeños, en la parte inferior, con un clip de plástico con un tornillo. Ya utilicé este método anteriormente al crear un temporizador de reacción basado en Arduino .





Instalaré la "frambuesa" en las rejillas de latón que vienen con la torre de hielo. Acabo de agregar algunos agujeros M2.5.



No suelo sacar mi tarjeta SD de la frambuesa, así que no agregué un recorte para que sea más fácil de quitar. Si planea hacer esto, simplemente agregue un recorte redondo en la parte posterior de la caja. Reemplazar la tarjeta SD sin este corte será un poco más difícil, ya que primero deberá quitar su computadora de placa única de la caja.





Imprimí en 3D la carcasa de nuestra mini computadora hecha de plástico negro con una altura de capa de 0,2 mm y una cobertura del 15%. Al mismo tiempo, tomé en cuenta los recortes para la pantalla y los puertos del panel frontal al imprimir. Esto se puede hacer fácilmente en un programa de modelado 3D. También necesitará imprimir un pequeño clip de exhibición de plástico.





Incorporación de Raspberry Pi y enfriador



Ahora que el cuerpo principal de la carcasa está listo, instalemos la Raspberry Pi en él. Primero, atornille los postes de latón en los orificios de la base.





Tenga en cuenta que he cambiado la orientación de los tornillos y las patas que vienen con la torre de hielo para que se atornillen directamente en la parte inferior de la caja y no requieran agujeros pasantes. Si estudia el manual de la torre de hielo, notará que los soportes y los tornillos están invertidos.





Necesitamos quitar el ventilador del enfriador para que podamos fijarlo al panel lateral transparente. Ponemos el ventilador aquí para asegurarnos de que el aire frío ingrese desde el exterior de la carcasa y luego salga por las rejillas de ventilación del lado opuesto.





Instale los soportes de soporte en la parte inferior del radiador de la torre de hielo de acuerdo con las instrucciones. Asegúrese de hacer todo bien.





Coloque la frambuesa en su lugar y luego use el segundo juego de puntales de latón atornillados en la parte inferior de la caja para asegurar todo.





Pegue la almohadilla del disipador de calor al procesador y retire la película protectora superior. Coloque el disipador de calor de la torre de hielo en la almohadilla térmica del procesador y asegúrelo con cuatro tornillos en los soportes de latón.



Instalación de la pantalla OLED



Ahora necesitamos instalar la pantalla OLED. Si los pines de la pantalla no están soldados, suéltelos a la parte posterior de la pantalla.





Deslice el borde superior de la pantalla debajo de los clips de plástico y luego empújelo suavemente en su lugar.





Utilice el clip que imprimimos en 3D y fíjelo con un tornillo pequeño. Puede ser necesario un destornillador de eje flexible o de ángulo de 90 grados para apretar el tornillo.





Ahora debemos llevar los cables a la pantalla OLED. Deberá realizar 4 conexiones a los pines de la interfaz de entrada / salida de uso general (GPIO): dos para alimentación y dos para comunicaciones. Hice un cable de puente corto con los pines del conector DuPont y el cable plano. También puede utilizar varios pines o puentes de tablero para conectar la pantalla a su Malinka.





Una vez que el cable esté ensamblado, conecte un lado del cable a la parte posterior de la pantalla y el otro a los pines GPIO de la siguiente manera:



  • VCC → Pin1 3.3V de potencia;
  • GND → Pin14 Tierra;
  • SCL → Pin3 SCL;
  • SDA → Pin2 SDA.




Noté que hay dos versiones de estas pantallas OLED, el orden de colocación de los contactos en ellas es ligeramente diferente. Así que asegúrese de conectar la alimentación a los pines correctos.



Hacemos paredes acrílicas



En general, hemos terminado con las partes internas de nuestro estuche. Ahora hagamos unas paredes acrílicas para completarlo.





Reabrí Tinkercad (software gratuito de modelado 3D - ed.) Y averigüé aproximadamente dónde debería estar el radiador Ice Tower, de modo que los orificios de montaje del ventilador estuvieran en el lugar correcto en los paneles laterales. Luego exporté una imagen de las paredes de la caja para abrirla en Inkscape y dibujar un diseño de grabado láser.



Hacemos dos paredes acrílicas: una con ventilador para entrada de aire y otra con aberturas para salida de aire.





Puedes quitar el contorno de la pieza, ya que solo necesitamos cortar el contorno de la pared y los agujeros en ella. En general, el modelo debe incluir un orificio para ventilador y cuatro orificios para tornillos. También es importante agregar agujeros para asegurar la pared acrílica a la carcasa previamente impresa.





Luego dupliqué la forma de la pared donde se instalará el ventilador y dibujé una serie de hexágonos en lugar del agujero. La lógica es simple: los hexágonos son para el flujo de aire de escape.





Descargar un modelo de paredes acrílicas

Descargar un modelo de una parte de la carcasa para impresión 3D


Si no dispone de una máquina láser para un corte tan preciso y complejo, simplemente taladre agujeros redondos (de unos 8 mm de diámetro) en el mismo lugar.





¡Cortamos! Para los paneles laterales utilicé acrílico transparente de 2 mm.





Puede usar cualquier acrílico que desee, teñido translúcido u opaco. El plexiglás más disponible tiene 3 mm de espesor. En general, el grosor no importa realmente, solo tienes bordes un poco más gruesos.





Para montar el ventilador en el panel lateral, presione varias tuercas M3 en las ranuras correspondientes. La forma más sencilla es colocar la tuerca sobre una superficie plana, colocar el orificio deseado sobre ella para asegurar el ventilador y presionar hasta que encaje en su lugar. Las tuercas se mantendrán apretadas, por lo que no tendrá que usar una llave para sujetarlas mientras aprieta los tornillos.



Si desea utilizar tornillos de ventilador, le diré de inmediato que serán demasiado cortos para pasar por el acrílico, el ventilador y la tuerca. Tampoco es la mejor manera de colocar un ventilador.





Atornille el vidrio lateral a la carcasa impresa en 3D con cuatro tornillos de cabeza hexagonal M3 x 8 mm.





Esto será complicado porque no hay hilos dentro de los agujeros en la caja impresa.





Ahora conecte el ventilador a una fuente de alimentación de 5 V e instale el segundo panel acrílico (con orificios de escape). Cable rojo al Pin4 (5V) y cable negro al Pin6 (Tierra).





Esto completa el montaje. Nuestro mini escritorio Raspberry Pi 4 está listo. Ahora necesitamos que la pantalla funcione.



Programación de la pantalla OLED



Para que la pantalla funcione, debe ejecutar una secuencia de comandos de Python. Para hacer esto, necesita ejecutar la "frambuesa".



La Raspberry Pi se comunica con la pantalla mediante el protocolo I2C, así que asegúrese de tener esto en cuenta en su configuración. También verifique si tiene instaladas las bibliotecas python-smbus e i2c-tools. Deberían estar por defecto, pero aquí es mejor anular y aún verificar.



El siguiente script se basa en uno de los scripts de la biblioteca Python Adafruit para módulos de pantalla OLED con algunas modificaciones realizadas por Shahizat Nurgaliev para agregar la temperatura de la CPU a los datos mostrados y cambiar el formato de visualización.



# Copyright (c) 2017 Adafruit Industries
# Author: Tony DiCola & James DeVito
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
import time

import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306

from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont

import subprocess

# Raspberry Pi pin configuration:
RST = None     # on the PiOLED this pin isnt used
# Note the following are only used with SPI:
DC = 23
SPI_PORT = 0
SPI_DEVICE = 0

# Beaglebone Black pin configuration:
# RST = 'P9_12'
# Note the following are only used with SPI:
# DC = 'P9_15'
# SPI_PORT = 1
# SPI_DEVICE = 0

# 128x32 display with hardware I2C:
disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)

# 128x64 display with hardware I2C:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

# Note you can change the I2C address by passing an i2c_address parameter like:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, i2c_address=0x3C)

# Alternatively you can specify an explicit I2C bus number, for example
# with the 128x32 display you would use:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, i2c_bus=2)

# 128x32 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))

# 128x64 display with hardware SPI:
# disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST, dc=DC, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=8000000))

# Alternatively you can specify a software SPI implementation by providing
# digital GPIO pin numbers for all the required display pins.  For example
# on a Raspberry Pi with the 128x32 display you might use:
# disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST, dc=DC, sclk=18, din=25, cs=22)

# Initialize library.
disp.begin()

# Clear display.
disp.clear()
disp.display()

# 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('Minecraftia.ttf', 8)

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 -f 2 -d ' '"
    IP = subprocess.check_output(cmd, shell = True )
    cmd = "top -bn1 | grep load | awk '{printf \"CPU Load: %.2f\", $(NF-2)}'"
    CPU = subprocess.check_output(cmd, shell = True )
    cmd = "free -m | awk 'NR==2{printf \"Mem: %s/%sMB %.2f%%\", $3,$2,$3*100/$2 }'"
    MemUsage = subprocess.check_output(cmd, shell = True )
    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), "IP: " + str(IP,'utf-8'), font=font, fill=255)
    draw.text((x, top+8), str(CPU,'utf-8') + " " + str(temp,'utf-8') , font=font, fill=255)
    draw.text((x, top+16), str(MemUsage,'utf-8'), font=font, fill=255)
    draw.text((x, top+25), str(Disk,'utf-8'), font=font, fill=255)

    # Display image.
    disp.image(image)
    disp.display()
    time.sleep(.1)


Descargar script para pantalla OLED


Deberá descargar la biblioteca Adafruit original de Github para completar la configuración siguiendo estos pasos.



Abra una nueva ventana de terminal, luego cambie al directorio de la biblioteca:



cd Adafruit_Python_SSD1306


Instale la biblioteca para Python 3:



sudo python3 setup.py install


Luego puede ejecutar el archivo stats.py anterior o el archivo stats.py de muestra en el directorio Adafruit, en cuyo caso terminará con un diseño de pantalla ligeramente diferente.



Cambie al directorio que contiene el script stats.py:



cd examples


Ejecute el script:



python3 stats.py


Recomiendo probar el script para asegurarse de que la pantalla esté funcionando sin errores antes de configurarlo para que se inicie automáticamente.



Para configurar el inicio automático del script, debe buscar el directorio del script, luego abrir crontab y agregar una línea para iniciarlo:



@reboot python3 /home/pi/stats.py &


Obviamente, necesitará cambiar el nombre del directorio / home / pi / para resaltar aquel donde guardó el script deseado.



No olvide agregar & al final, esto le dirá a Malinka que continúe ejecutándose y ejecute el script en segundo plano.





Reinicie su Raspberry Pi para ejecutar el script automáticamente. Después de eso, debería ver las estadísticas indicadas en la pantalla OLED cuando encienda su mini PC.














All Articles