A Raspberry Pi é uma placa que conta com uma gama de funcionalidades interessantes. Muitas são as vezes em que desejamos trazer informações como avisos, letreiros ou até mesmo placas de fachada em nossos projetos. Uma das opções para executar este tipo de projeto é utilização de um Módulo Matriz de LED junto com uma Raspberry Pi. Além de ser um modo fácil, versátil e comumente difundido de fazer esses tipos de projetos, as matrizes de LEDs trazem uma aparência retrô para os amantes da era 8-bits 🙂
No mercado, existem diversos modelos de matrizes de LEDs que podem ser utilizadas para aplicações e projetos, entretanto, elas são comumente vendidas sozinhas. Mas para facilitar as nossas vidas, temos os módulos! Estes são placas montadas com circuitos integrados (CI), as matrizes em si e alguma espécie de controlador para elas. Neste post, iremos conhecer o Módulo Matriz de LED 8×16 com MAX7219, entender seu funcionamento e suas facilidades.
Portanto, ao utilizar um módulo, a facilidade de uso é ainda mais abrangente; e na hora de codificar (a hora do vamos ver!), temos muito menos trabalho de fazer tudo funcionar do jeito que a gente quer.
Então pegue sua Raspberry Pi, seu módulo e sua determinação e vamos nessa!
Materiais necessários
Para poder controlar e criar mensagens e desenhos com seu Módulo de Matriz de LED, vamos precisar de:
- Raspberry Pi 3 B+ (usaremos esta, mas você pode usar outros modelos, como por exemplo a Raspberry Pi Zero W sem problema algum!);
- Fonte 5V/3A Micro USB
- Cartão microSD (Mínimo 8 GB)
- Módulo Matriz de LED 8×16 com MAX7219 para Raspberry Pi.
Lembrando que o cartão microSD deve ter o Sistema Operacional Raspbian instalado! Confira aqui como deixar seu sistema prontinho!
Montando o circuito do Módulo Matriz de LED e Raspberry Pi
Para montar o circuito, basta encaixar o módulo nos pinos GPIO. Como é feito exatamente como um Hat (os shields da Raspberry Pi), você verá que ele encaixará perfeitamente e estará pronto para uso.
Configurações na Raspberry Pi para o Módulo Matriz de LED
Depois de ter encaixado seu módulo na placa, vamos às configurações necessárias no sistema operacional Raspbian para o funcionamento do projeto. Para garantir, vamos executar uma verificação de atualização:
sudo apt-get update
Em seguida, aplicamos as atualizações:
sudo apt-get upgrade
Após este processo, vamos ativar a interface SPI na placa, afim de habilitar o controle da matriz de LEDs. Para isso, abra o terminal e digite o seguinte comando:
sudo raspi-config
Agora, vá até a opção Interfacing Options:
Em seguida, vá em SPI, e ative a opção quando perguntado.
Tudo certo? Vamos verificar então, só para garantir:
lsmod | grep -i spi
Caso tenha dado tudo certinho, irá aparecer alguns comandos como esse:
Agora sim! Com tudo isso feito, vamos instalar o que precisamos para fazer funcionar 😀 Primeiramente, instalemos as dependências da biblioteca:
sudo usermod -a -G spi,gpio pi sudo apt-get install build-essential python3-dev python3-pip libfreetype6-dev libjpeg-dev
Em seguida, vamos instalar a biblioteca através do PyPi:
sudo -H pip install --upgrade luma.led_matrix
E finalmente, clone o repositório do GitHub, para que possamos acessar exemplos e afins:
git clone https://github.com/rm-hull/luma.led_matrix
Escrevendo mensagens no Módulo Matriz de LED com Raspberry Pi
Com tudo pronto (UFA!!) vamos poder enfim testar as mensagens. O código já está preparado para utilização de dois módulos 8×8 (que é o nosso caso, tendo em vista que nosso módulo nada mais é que dois módulos 8×8 “unidos”). Além disso, alteramos o código para que ele faça um vertical scroll (assim ele cruza de um módulo a outro, em vez de duas frases iguais uma abaixo da outra).
Agora vamos abrir um editor de código. Para isso, vá em Menu Raspberry > Programming > Geany Programmer’s Editor. Em seguida, cole o código abaixo:
#!/usr/bin/env python # -*- coding: utf-8 -*- # #Programa: Teste modulo MAX7219 com Raspberry Pi #Autor: MakerHero #baseado no programa exemplo da biblioteca MAX7219 & Arduino e Cia # # 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("Testando HAT 8x16 LEDs") msg = " MakerHero - 2019 " print("Teste FF2019") 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=2, help='Numero de modulos MAX7219 interligados') parser.add_argument('--block-orientation', type=int, default=90, 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
Caso você deseje alterar a mensagem, basta que escreva o que desejar na string msg (linha 27), no exemplo está escrito “MakerHero – 2019”. E se quiser um horizontal scroll, modifique o parâmetro default=90 (linha 36).
O legal é sempre brincar com o código e descobrir novas coisas!
Salve o código e então execute ele no terminal:
python testemax7219.py
O nome do nosso arquivo era testemax7219. Então se você for abrir o seu, coloque o nome que você salvou 😉
Agora, o que você pode fazer é continuar explorando a biblioteca e novas funções! Para ter uma demonstração completa, desde troca de fonte, brilho e várias outras opções, execute o arquivo de demonstração da biblioteca:
python luma.led_matrix/examples/matrix_demo.py
Curtiu? Deixa um comentário para gente saber!