Display Nokia 5110 é um display LCD com excelente relação custo/benefício, pois é um display gráfico com resolução de 84 x 48 pixels onde você pode mostrar imagens e textos, além de ser muito fácil de utilizar com Arduino. Neste post, vamos mostrar como você pode usar o display Nokia 5110 com Raspberry Pi.

Raspberry Pi 3 com Display Nokia 5110

O display LCD Nokia 5110

O display que vamos usar é este mostrado na imagem abaixo, na cor vermelha, e que funciona com tensão de 3.3V. Os pinos de sinal podem ser usados tanto em dispositivos como Arduino (nível de sinal de 5V) como com Raspberry Pi, onde o nível de sinal é de 3.3V.

Pinagem Display Nokia 5110

Veremos logo a seguir que a conexão do display Nokia 5110 com Raspberry Pi é feita por meio da interface SPI, que vamos habilitar no passo abaixo.

Habilitando a interface SPI no Raspberry Pi

Para habilitar a interface SPI no Raspberry Pi, vamos usar o raspi-config:

sudo raspi-config

Será apresentada a tela abaixo, onde você deve navegar até a opção 5 – Interface Options:

Raspi-config Interfacing Options

Na tela de configuração de interface, selecione a opção P4 – SPI, habilitando a interface.

Raspi-config Interface SPI

Reinicie a Raspberry Pi.

Conectando o display Nokia 5110 com Raspberry Pi

Conecte o display na placa Raspberry Pi (estou usando uma placa Raspberry Pi 3, mas você pode usar outras placas da linha Raspberry) seguindo o esquema abaixo, que mostra a relação entre os pinos do display e a interface SPI do Raspberry:

Pinos Display Nokia 5110Pinos RPi
#Função#GPIO
1RST18GPIO24
2CE24GPIO8 – SPI_CE0
3DC16GPIO23
4DIN19GPIO10 – SPI_MOSI
5CLK23GPIO11 – SPI_SCLK
6VCC13.3V
7LIGHT6GND
8GND6GND

Nosso circuito fica assim:

Repare no pino LIGHT do display Nokia 5110, que deve ser conectado ao negativo para funcionar, ok?

Biblioteca Adafruit display Nokia 5110

Para utilizar a biblioteca da Adafruit, vamos primeiro instalar alguns pacotes para o seu correto funcionamento. Abra uma janela de terminal e digite os comandos abaixo:

sudo apt-get install python-pip python-dev build-essential
sudo pip install RPi.GPIO

Instale também a Python Imaging Library usando o comando a seguir:

sudo apt-get install python-imaging

Finalmente, instale a biblioteca:

sudo apt-get install git
git clone https://github.com/adafruit/Adafruit_Nokia_LCD.git
cd Adafruit_Nokia_LCD
sudo python setup.py install

Pronto. Para testar o display Nokia 5110 com Raspberry Pi, entre na pasta EXAMPLES e você encontrará arquivos de exemplo como o animate.py, image.py e shapes.py.  Para rodar esses programas, utilize o comando de exemplo abaixo:

sudo python shapes.py

Utilize o mesmo comando para os outros programas existentes na pasta.

Dica extra

A imagem de capa deste post foi feita utilizando a fonte baby blocks.ttf, que eu baixei deste site aqui

Detalhe Display Nokia com Raspberry Pi

Coloque o arquivo em formato ttf na mesma pasta do programa abaixo:

#Programa: Teste Display Nokia 5110 com Raspberry Pi
#Autor: Arduino e Cia
#
#Baseado no exemplo da biblioteca Adafruit Nokia LCD

import time

import Adafruit_Nokia_LCD as LCD
import Adafruit_GPIO.SPI as SPI

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

#Configuracao SPI Raspberry Pi
DC = 23
RST = 24
SPI_PORT = 0
SPI_DEVICE = 0

# Hardware SPI usage:
disp = LCD.PCD8544(DC, RST, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=4000000))

#Inicializa a biblioteca e define o contraste
disp.begin(contrast=40)

#Apaga o display
disp.clear()
disp.display()

image = Image.new('1', (LCD.LCDWIDTH, LCD.LCDHEIGHT))

draw = ImageDraw.Draw(image)

#Desenha um quadrado branco para apagar a tela
draw.rectangle((0,0,LCD.LCDWIDTH,LCD.LCDHEIGHT), outline=255, fill=255)

#Linhas superior e inferior
draw.line((0,0,83,0), fill=0)
draw.line((0,47,83,47), fill=0)

#Define a fonte do texto
font = ImageFont.truetype('baby blocks.ttf', 11)

#Mostra o texto na tela na coordenada especificada
draw.text((0,2), 'ARDUINO', font=font)
draw.text((36,17), 'E', font=font)
draw.text((24,32), 'CIA', font=font)

#Display image.
disp.image(image)
disp.display()

print('Press Ctrl-C to quit.')
while True:
    time.sleep(1.0)

Defina a fonte do texto na linha 43, colocando o nome do arquivo (no caso, baby blocks.ttf), e em seguida o tamanho desejado (no programa, utilizamos o tamanho 11).

Avalie este post!