Estaba tentado de intercambiar la carcasa de mi Raspberry Pi 4 a la Pi 5, pero mírala…

  • 16×2 pantalla LCD de un Arduino Starter Kit
  • Programa en C++ con la librería WiringPi
  • Carcasa casera

Estaba realmente orgulloso de ella en su momento y fue un buen aprendizaje allá por 2020, pero seguro que lo podía hacer mejor. Seguro que me podía currar un pedazo panel de estado!!

Componentes

  • Raspberry Pi (probablemente sirva en cualquiera de ellas)
  • Pantalla OLED (RGB de 1.5 pulgadas es ideal)
  • PCB placa de prototipos
  • Cables
  • Material de soldadura
(cortesía del modelo epiCRealism en ComfyUI)
  • Carcasa (impresa en 3D o elaborada a mano)

Configuración de software

Configuraré la Raspberry para interactuar con la pantalla usando python, mediante la librería de Adafruit Circuitpython para el controlador SSD1351 de la pantalla:
https://learn.adafruit.com/adafruit-1-5-color-oled-breakout-board/python-wiring-and-setup#setup-3042417

Es tan simple como instalar Circuitpython con el siguiente comando:

sudo pip3 install --upgrade click setuptools adafruit-python-shell build adafruit-circuitpython-rgb-display

Si tienes problemas con tu versión de python para encontrar Circuitpython, incluye --break-system-packages al final. (No romperá nada hoy, pero no te acostumbres a ello...)

sudo pip3 install --upgrade click setuptools adafruit-python-shell build adafruit-circuitpython-rgb-display --break-system-packages

Cableado

Ahora conectaremos la pantalla según las indicaciones del fabricante. La mía es esta de BuyDisplay:

https://www.buydisplay.com/full-color-1-5-inch-arduino-raspberry-pi-oled-display-module-128x128

OLED DisplayRaspberry Pi (pin #)
GNDGND (20)
VCC3V3 (17)
SCLSPI0 SCLK (23)
SDASPI0 MOSI (19)
RESGPIO25 (22)
DCGPIO 24 (18)
CSSPI0 CE0 (24)

Usa un sitio como pinout.xyz para encontrar una configuración adecuada para tu cableado.

Estás listo para hacer algunos tests antes de mover tu diseño a la PCB.

Configuración de script

Puedes probar el script demo de Adafruit. Solo asegúrate de escoger la pantalla adecuada y actualiza los cambios en la asignación de pines (usa los números/nombres IO en lugar de los números físicos del pin):

# Configuration for CS and DC pins (adjust to your wiring):
cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D24)
reset_pin = digitalio.DigitalInOut(board.D25)

# Setup SPI bus using hardware SPI:
spi = board.SPI()

disp = ssd1351.SSD1351(spi, rotation=270,                         # 1.5" SSD1351
    cs=cs_pin,
    dc=dc_pin,
    rst=reset_pin,
    baudrate=BAUDRATE
)

Ensamblaje

Aquí están los archivos STL en 3D para este diseño de carcasa:

Ahora pongámoslo todo junto:

  1. Atornilla el marco a la pantalla
  2. Suelda los 7 pines de la pantalla a los 7 cables a través de la PCB
  3. Cablea todas las conexiones a la Raspberry Pi
  4. Atornilla las partes superiores e inferiores de la carcasa entre sí
  5. Coloca la pantalla sobre el soporte

Resultado final

He compartido el script que se ve en las imágenes a través de github:

https://github.com/TheRoam/RaspberryPi-SSD1351-OLED

Actualmente muestra:

  • Fecha y hora
  • Estadísticas del sistema (SO, uso del disco y temperatura de CPU)
  • Tiempo local de la World Meteorological Organization (actualizado cada hora)

Y así es como acaba quedando. Mucho mejor verdad?

Como siempre, disfruta cacharreando, y hazme llegar tus comentarios o dudas a través de Twitter!

🐦 @RoamingWorkshop