Como usar o módulo MAX7219 com Raspberry Pi

Neste post vamos mostrar como usar o módulo matriz de led 8×8 MAX7219 com Raspberry Pi, usando uma biblioteca que suporta muitas opções de configuração e permite que você crie animações, painéis e outros projetos utilizando este módulo.

Raspberry Pi com Módulo MAX7219

Para usar corretamente as informações deste post, certifique-se de que a sua Raspberry Pi está funcionando, com o sistema operacional devidamente configurado e atualizado. Qualquer dúvida, veja como preparar a sua placa no post Raspberry Pi: Instale o Raspbian e crie seu primeiro program em Python.

Conexões do módulo MAX7219

Vamos apenas relembrar as conexões do módulo matriz de led 8×8 MAX7219, várias vezes abordado em posts aqui do Arduino e Cia. O modelo que estamos usando tem 5 pinos de entrada (JP1, na imagem abaixo) e 5 de saída (JP2):

Os pinos de entrada são usados para controlar o(s) módulo(s), e os pinos de saída permitem que você monte um sistema em cascata, onde a saída de um módulo é ligado na entrada do módulo seguinte. Assim, você pode formar por exemplo um painel de leds:

O módulo utiliza para comunicação a interface SPI, presente em praticamente qualquer placa de desenvolvimento como Arduino, Raspberry Pi, Beaglebone, Photon, Linkit, etc.

Ligando o módulo MAX7219 com Raspberry Pi

Para ligação do módulo MAX7219 na Raspberry Pi 3 Model B, vamos usar a alimentação 5V por meio da GPIO, pinos 2 (5V) e 6 (GND), e para controle os pinos 19 (conectado ao DIN do módulo), 23 (conectado ao CS) e 24 (conectado ao CLK):

Apenas relembrando que neste exemplo usamos a Pi 3, mas é possível usar qualquer outro modelo da placa, como a Zero, Zero W, Pi 2, etc.

Configuração Raspian para MAX7219

Para utilizar o módulo MAX7219 com a Raspberry Pi, primeiro vamos habilitar a interface SPI no Raspbian. Faça isso entrando no Raspi-Config com o comando:

sudo raspi-config

Acesse a opção 5 – Interfacing Options:

Em seguida, selecione a opção P4 e habilite a interface SPI:

Verifique se a interface SPI do Raspberry Pi foi inicializada corretamente usando o comando

lsmod | grep -i spi

Esse comando deve retornar uma tela como essa, indicando que a SPI está funcionando corretamente:

Com a interface SPI funcionando, vamos às dependências para a biblioteca:

sudo usermod -a -G spi,gpio pi
sudo apt-get install build-essential python3-dev python3-pip libfreetype6-dev libjpeg-dev

Instalamos agora a biblioteca diretamente do PyPi:

sudo -H pip install --upgrade luma.led_matrix

Finalmente, clone o repositório do github com o comando:

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

Testando o módulo com python

Utilizando o exemplo da biblioteca MAX7219, eu criei um pequeno programa em Python para teste do módulo, que faz um scroll da mensagem colocada na linha 27. 

Esse teste usa apenas um módulo, mas você pode acrescentar mais módulos e criar um painel de leds, alterando o parâmetro default na linha 35 (altere o default=1 para o número de displays que você quer interligar). Se for necessário alterar a rotação do texto no display, altere o parâmetro default na linha 37 (valores: 0=0°, 1=90°, 2=180°, 3=270°).

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#Programa: Teste modulo MAX7219 com Raspberry Pi
#Autor: Arduino e Cia
#baseado no programa exemplo da biblioteca MAX7219
#
# Copyright (c) 2017-18 Richard Hull and contributors
# See LICENSE.rst for details.

import re
import time
import argparse

from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.render import canvas
from luma.core.virtual import viewport
from luma.core.legacy import text, show_message
from luma.core.legacy.font import proportional, CP437_FONT, TINY_FONT, SINCLAIR_FONT, LCD_FONT

def demo(n, block_orientation, rotate):
    # create matrix device
    serial = spi(port=0, device=0, gpio=noop())
    device = max7219(serial, cascaded=n or 1, block_orientation=block_orientation, rotate=rotate or 0)
    print("Arduino e Cia - teste com modulo MAX7219")
    msg = " Arduino e Cia "
    print("Teste slow scroll: Arduino e Cia")
    show_message(device, msg, fill="white", font=proportional(LCD_FONT), scroll_delay=0.2)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='matrix_demo arguments',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    parser.add_argument('--cascaded', '-n', type=int, default=1, help='Numero de modulos MAX7219 interligados')
    parser.add_argument('--block-orientation', type=int, default=0, choices=[0, 90, -90], help='Corrige a orientacao de blocos')
    parser.add_argument('--rotate', type=int, default=2, choices=[0, 1, 2, 3], help='Rotacao display 0=0°, 1=90°, 2=180°, 3=270°')

    args = parser.parse_args()

    try:
        demo(args.cascaded, args.block_orientation, args.rotate)
    except KeyboardInterrupt:
        pass

Salve o programa e execute-o usando o comando “python” seguido do nome do programa. No meu caso, o nome do programa é testemax7219.py, e o comando ficou assim:

python testemax7219.py

Explore a biblioteca e veja outros exemplos de utilização, como scroll vertical, mudança de fonte de texto e geração de caracteres especiais. Execute o comando abaixo para uma demo completa das funcionalidades da biblioteca:

python luma.led_matrix/examples/matrix_demo.py

Em outra oportunidade vamos abordar outros exemplos de uso desta biblioteca, com módulos MAX7219 Display 7 segmentos e led endereçável WS2812. Até lá!

5/5 - (1 voto)

Related posts

Max7219 com display 7 segmentos

by Arduino e Cia
11 anos ago

Relógio com display LCD 128×64 e módulo RTC DS3231

by Arduino e Cia
9 anos ago

Tutorial Raspberry Pi com SSH (Secure Shell)

by Arduino e Cia
9 anos ago
Sair da versão mobile