Utilizando um display OLED na Raspberry Pi - MakerHero
Utilizando um display OLED na Raspberry Pi

Utilizando um display OLED na Raspberry Pi

Deixe um comentário

Nesta aula, vamos explorar como utilizar um display OLED com a Raspberry Pi, uma prática essencial para quem deseja adicionar uma interface de saída visual aos seus projetos. Você aprenderá a escolher e conectar o display OLED, habilitar a interface I2C, instalar as bibliotecas necessárias e desenvolver um código em Python para exibir informações no display.

Como utilizar um display OLED na Raspberry Pi?

Os displays OLED (Organic Light-Emitting Diode) são componentes ideais para projetos com a Raspberry Pi, oferecendo telas de alta qualidade, baixo consumo de energia e excelente contraste. Eles são utilizados em diversos projetos para exibir informações, como dados de sensores, notificações ou criar interfaces de usuário. 

Para utilizar um display OLED com a Raspberry Pi, você precisará seguir algumas etapas principais:

  • Escolha do Display OLED e Conexão Física: O primeiro passo é escolher um display OLED adequado ao seu projeto. Existem diferentes tipos, tamanhos e interfaces de conexão disponíveis. A interface mais comum é a I2C, que permite uma comunicação eficiente usando apenas dois pinos da Raspberry Pi (SDA e SCL). Após a escolha, conecte o display à Raspberry Pi usando fios jumper, garantindo que os pinos correspondentes de alimentação (VCC e GND) e dados (SDA e SCL) estejam conectados corretamente.
  • Habilitação da Interface I2C na Raspberry Pi: Para comunicar com o display OLED, você deve habilitar a interface I2C na Raspberry Pi. Isso pode ser feito acessando o “Raspberry Pi Configuration” no sistema operacional Raspberry Pi OS. Vá até a aba “Interfaces” e ative o I2C.
  • Instalação de Bibliotecas Necessárias: Para controlar o display OLED, você precisará de bibliotecas específicas que auxiliam na comunicação I2C e na manipulação da tela. A biblioteca Adafruit_Python_SSD1306 é amplamente utilizada para displays OLED que utilizam o controlador SSD1306. Além disso, instale a biblioteca Pillow para manipulação de imagens e texto:
  • Código Python para Exibir Informações no Display: Com o hardware conectado e as bibliotecas instaladas, o próximo passo é escrever um código Python para exibir informações no display OLED. Comece importando as bibliotecas necessárias e inicializando o display. Em seguida, defina o que deseja exibir (texto, imagens, etc.) e envie os dados para a tela.
  • Testes e Ajustes Finais: Após executar o código, o display OLED deverá exibir o texto ou imagem configurado. Caso não funcione, verifique as conexões e o endereço I2C do display (pode ser necessário ajustar o endereço I2C no código). Utilize o comando i2cdetect para descobrir o endereço correto.

Ao seguir essas etapas, você conseguirá utilizar um display OLED com a Raspberry Pi para uma ampla gama de aplicações, permitindo que o seu projeto ganhe uma interface de saída visual atraente e informativa.

Introdução a comunicação I2C

I2C (Inter-Integrated Circuit) é um protocolo de comunicação serial amplamente utilizado para conectar microcontroladores, sensores, displays e outros periféricos em projetos eletrônicos. Na placa Raspberry Pi, a interface I2C é comumente usada para se comunicar com componentes externos, como displays OLED, sensores de temperatura, acelerômetros, entre outros.

O protocolo I2C foi desenvolvido pela Philips Semiconductor (agora NXP Semiconductors) na década de 1980 e é projetado para permitir a comunicação entre dispositivos em um barramento compartilhado. Este protocolo utiliza apenas dois fios para comunicação:

  • SDA (Serial Data): linha de dados que transporta informações entre dispositivos.
  • SCL (Serial Clock): linha de relógio que sincroniza a transferência de dados.

No protocolo I2C, cada dispositivo conectado ao barramento possui um endereço único, que pode ser de 7 ou 10 bits. Este endereço é usado para identificar o dispositivo durante a comunicação. A Raspberry Pi, por exemplo, envia comandos e dados para o endereço específico de um display OLED conectado ao barramento. 

Algumas das características da comunicação I2C incluem:

  • Controller (master) e Target (slave): O protocolo I2C é baseado em uma arquitetura mestre-escravo. A Raspberry Pi atua como o dispositivo “Controlador” que controla o barramento, enquanto o display OLED ou outros dispositivos são “Alvos”. O Controlador inicia e controla todas as comunicações, enquanto os Alvos respondem aos comandos.
  • Velocidades de Comunicação: O I2C suporta diferentes velocidades de comunicação, como: Standard Mode (até 100 kHz), Fast Mode (até 400 kHz) e High-Speed Mode (até 3,4 MHz). A escolha da velocidade depende dos requisitos do projeto e das especificações dos dispositivos conectados.
  • Simplicidade e Eficiência: O I2C é projetado para ser simples e eficiente em distâncias curtas, tornando-o ideal para comunicação entre componentes em uma placa de circuito ou em protótipos de projetos eletrônicos.
  • Economia de Pinos GPIO: Como o I2C utiliza apenas dois pinos (SDA e SCL), você pode conectar vários dispositivos sem ocupar muitos pinos GPIO, deixando-os livres para outras funções.
  • Suporte Amplo: Muitos dispositivos e sensores, como displays OLED, módulos de RTC (Relógio de Tempo Real), sensores de temperatura, entre outros, suportam a comunicação I2C.
  • Flexibilidade: A comunicação I2C permite a fácil adição ou remoção de dispositivos no barramento, apenas conectando-os aos mesmos fios SDA e SCL.

Materiais Necessários

Para montar o circuito para utilizar um display OLED com a Raspberry Pi, vamos precisar dos seguintes materiais:

Circuito para utilizar um display OLED com a Raspberry Pi

Na placa Raspberry Pi, os pinos dedicados para a comunicação I2C são o GPIO 2 (pino físico 3) para o sinal de dados SDA (Serial Data) e o GPIO 3 (pino físico 5) para o sinal de relógio SCL (Serial Clock):

display OLED

Abaixo está representado o circuito de montagem para utilizar o display OLED com a Raspberry Pi:

circuito montado display OLED

O circuito montado conforme o esquema ficará como mostrado na figura abaixo:

circuito montado

Instalação das bibliotecas para o display OLED na Raspberry Pi

Para utilizar um display OLED com a Raspberry Pi, é necessário instalar algumas bibliotecas que permitirão a comunicação entre o microcontrolador e o display via protocolo I2C, além de bibliotecas que facilitam a manipulação de gráficos, textos e imagens na tela.

Antes de instalar qualquer biblioteca, é recomendável atualizar o sistema operacional para garantir que todas as dependências estejam atualizadas. Execute os seguintes comandos no terminal:

Para testar a comunicação I2C e verificar se o display OLED está corretamente conectado, instale as ferramentas I2C:

A biblioteca SMBus  é necessária para que o Python se comunique com dispositivos conectados ao barramento I2C:

A biblioteca Pillow é necessária para manipulação de imagens e textos para exibição no display OLED:

A biblioteca NumPy é utilizada para cálculos e manipulações matemáticas necessárias em diversas bibliotecas:

Para gerenciar as bibliotecas Python de forma isolada, é recomendável criar um ambiente virtual. Primeiro, instale o pacote python3-venv (caso ainda não esteja instalado):

Escolha um diretório para o ambiente virtual (por exemplo, myenv) e crie o ambiente com o comando:

Ative o ambiente virtual:

Após ativar o ambiente virtual, o nome do ambiente aparecerá no prompt do terminal, indicando que o ambiente está ativo.

Com o ambiente virtual ativado, instale as seguintes bibliotecas necessárias para o projeto:

Para melhorar o desempenho do display OLED, especialmente em animações rápidas, ajuste a velocidade do barramento I2C para 1 MHz (padrão pode estar configurado para 100 kHz ou 400 kHz). Edite o arquivo de configuração com o comando:

Adicione a seguinte linha ao final do arquivo:

Instalação das bibliotecas

Use as teclas CTRL+O para salvar e CTRL+X para sair.

Depois de instalar todas as bibliotecas e fazer as configurações necessárias, você pode desativar o ambiente virtual com o comando:

Código Python para utilizar um display OLED com a Raspberry Pi

Agora você pode criar um script Python para utilizar o display OLED com a Raspberry Pi. Crie um arquivo Python com um nome como oled-raspberry-pi.py.

Use o seguinte código:

Depois de colar o código no nano, pressione Ctrl+O para salvar e Enter para confirmar. Finalmente, saia do editor com Ctrl+X.

Agora ative novamente o ambiente virtual com o seguinte comando:

Por fim, use o seguinte comando para executar o programa Python:

Quando o código for executado, ele irá interagir com o display OLED conectado aos pinos I2C da placa Raspberry Pi para exibir a mensagem “Ola mundo”.

Display OLED conectado aos pinos I2C da placa

Utilizando display OLED com a Raspberry Pi: Possíveis Erros

Ao trabalhar com um display OLED na placa Raspberry Pi, alguns erros comuns podem ocorrer, como:

  • Endereço I2C Incorreto: O display OLED pode ter um endereço I2C diferente do que está configurado no código. Use o comando i2cdetect -y 1 no terminal da Raspberry Pi para verificar o endereço correto do dispositivo I2C. Certifique-se de usar o mesmo endereço no seu script Python.
  • Interface I2C Desativada: A interface I2C pode estar desativada na Raspberry Pi. Certifique-se de que a interface I2C está habilitada através da ferramenta raspi-config. Para habilitá-la, execute sudo raspi-config, vá para “Interfacing Options” e ative a opção I2C.
  • Conexões Físicas Incorretas: Verifique se os pinos SDA (GPIO 2) e SCL (GPIO 3) da Raspberry Pi estão corretamente conectados aos pinos correspondentes do display OLED. Um erro comum é conectar os pinos aos terminais errados ou não fazer as conexões corretamente.
  • Bibliotecas Não Instaladas Corretamente: Se as bibliotecas necessárias, como luma.oled ou Pillow, não estiverem instaladas corretamente, o script não funcionará. Verifique se todas as bibliotecas foram instaladas no ambiente virtual correto e sem erros.
  • Problemas de Fonte de Alimentação: O display OLED pode não estar recebendo energia suficiente da Raspberry Pi. Verifique se o display está corretamente alimentado e se a fonte de alimentação da Raspberry Pi fornece potência suficiente para todos os periféricos conectados.
  • Códigos Python com Erros de Sintaxe ou Execução: Revise o código Python para garantir que não haja erros de sintaxe ou lógica que possam impedir o funcionamento correto do display. Verifique também se o código está configurado para a resolução e o tipo corretos de display.
  • Ambiente Virtual Não Ativado: Certifique-se de que o ambiente virtual Python foi ativado corretamente antes de executar o script. Caso contrário, as bibliotecas instaladas no ambiente virtual não estarão disponíveis para o script.
  • Incompatibilidade com o Display OLED: Certifique-se de que o display OLED utilizado é compatível com a Raspberry Pi e que o controlador (como SSD1306) é suportado pela biblioteca que você está utilizando.

Faça seu comentário

Acesse sua conta e participe