domingo, 5 de noviembre de 2023

Raspberry pi 2 con Oled 128x64 I2C

 Raspberry Pi ese pequeño ordenador de "bajo coste" que poca presentación necesita. Todos sabemos de su versatilidad y potencia. Raspberry Pi se usa en muchisimos proyectos de robotica, mini PCs, servidores y un largo etcétera. Por su puesto gracias a su puerto GPIO donde podremos conectar otra gran cantidad de sensores y accesorios.

En mi caso tengo un Raspberry Pi 2 Model B. A día de escribir esta entrada ya tiene unos añitos pero sigue dando guerra. La tengo para hacer mis cosillas de programación, también alguna vez como emulador de juegos retro o como es este caso, para cacharrear.

En este caso he añadido una pequeña pantalla Oled de 128x64 y comunicación I2C. Es la que uso generalmente con Arduino y en tiendas de internet lo podemos encontrar por unos 2 o 3 euros.
Si bien es una pantalla pequeña es lo suficiente para poder mostrar cierta información en ella así como imágenes o animaciones.


Lo primero es actualizar el sistema con:

sudo apt update && sudo apt upgrade


Y habilitamos el módulo de comunicación I2C con el siguiente comando:

sudo raspi-config


Y nos aparece la siguiente pantalla donde seleccionamos la opción número 3: 

Raspberry_Raspi-config_i2c_03

Una vez estamos dentro pulsamos sobre "P5 I2C

Raspberry_Raspi-config_i2c_03

Nos pregunta si queremos habilitar la interfaz I2C y pulsamos "Yes"

Raspberry_Raspi-config_i2c_03

Librería Adafruit SSD1306 para Python:

Una vez tenemos configurada la comunicación pasamos a la librería, en este caso la de Adafruit circuitpython ssd1603. Para instalarla desde la terminal:


  sudo pip3 install adafruit-circuitpython-ssd1306
  

Cuando ya tenemos la librería instalada podemos hacer nuestro primer testeo. Para esto podemos crear un programa donde nos represente en la pantalla 3 puntos representando las posiciones inicio, medio y final.


from board import SCL, SDA
import busio
import adafruit_ssd1306
i2c = busio.I2C(SCL, SDA)


# Crea la clase oled y define el ancho, alto y el bus de comunicacion I2c
oled = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)

# Borra toda la pantalla
oled.fill(0)
oled.show()

# Muestra un pixel en la posición inicial
oled.pixel(0, 0, 1)

# Muestra un pixel en el centro de la pantalla
oled.pixel(64, 32, 1)

#Muestra un pixel en la diagonal contraria
oled.pixel(127, 65, 1)

# Muestra la información en la pantalla
oled.show()

Raspberry_Pi_Oled_128x64_07


Para sacarle mas provecho a la pantalla de 128x64, desde Github, tenemos una serie de programas/ejemplos de donde podremos ver como funciona la librería o simplemente usarlos directamente si alguno te cuadra con tus necesidades. 

Este repositorio se llama "luma.examples" y es muy completo tienes desde animaciones 




a información del sistema como el uso de CPU, RAM o temperatura.




Instalando repositorio luma.examples:

Para tener los ejemplos disponibles necesitamos hacer varios pasos. Primero instamos la librería para python llamada "luma.oled" con el siguiente comando:


sudo -H pip3 install --upgrade luma.oled  

Después clonaremos el repositorio, para esto nos situamos en la carpeta donde queramos tener los archivos y clonamos con:


git clone https://github.com/rm-hull/luma.examples.git

Una vez tenemos los archivos descargados accedemos a la carpeta "luma.examples" y ejecutamos el último comando: 


sudo -H pip3 install -e .

Ahora si lo tenemos todo para hacer andar esta pantalla en nuestra Raspberry Pi. Ahora si accedemos a la carpeta "examples/" y con un ls nos muestra todos los programas disponibles.

Los he probado casi todos y funcionan muy bien, sobre todo los de información de sistema

Vídeo del funcionamiento de la pantalla:



Saludos!!!


No hay comentarios :

Publicar un comentario