Módulo MAX7219 com ESP8266 NodeMCU
No post de hoje confira como conectar o módulo MAX7219 com ESP8266 NodeMCU, circuito que você pode usar como base para montar o seu próprio sistema de avisos por wifi explorando toda a versatilidade do ESP8266.
O circuito que vamos montar é esse da imagem acima, usando uma placa que possui 4 módulos MAX7219 interligados.
O módulo MAX7219
O CI MAX7219 é um driver de display para controle de displays de 7 segmentos ou matriz de leds 8×8, que pode ser utilizado tanto para controle de apenas um display como pode ser ligado em cascata, formando painéis de led bem interessantes para avisos, alarmes e contadores, entre outros.
Neste post vamos usar o módulo Módulo 4 Matrizes de LED 8×8 com MAX7219, que é uma placa pronta já com os 4 módulos conectados entre sim e uma entrada de dados comum. O modelo de módulo que estamos utilizando é o FC-16, e você pode conferir essa informação retirando a matriz do soquete:
Na imagem acima também podemos ver os pinos de saída no lado direito (CLK, CS, DOUT) que podem ser usado para conectar mais módulos como esse, formando painéis maiores.
Conexão do módulo MAX7219 com ESP8266
A comunicação com o módulo matriz de leds 8×8 é feita através da interface SPI. No ESP8266 NodeMCU, usaremos para conexão os pinos D4 (GPIO2) ao CS do módulo MAX7219, D5 (GPIO14) no CLK e D7 (GPIO13) no DIN:
Nos testes o módulo funcionou perfeitamente com alimentação 3.3V, mas você também pode utilizar uma fonte externa de 5V ou se estiver alimentando o NodeMCU por meio de um cabo USB utilizar o pino Vin, que neste caso também será uma saída 5VDC.
Programa MAX7219 com ESP8266 NodeMCU
Para o programa abaixo vamos precisar de duas bibliotecas, que devem ser instaladas manualmente. Uma delas é a Altairis ESP8266 FC16 (download) e a outra é a LedControlSpiESP8266 (download). Faça o download das duas bibliotecas, descompacte e coloque-as na pasta LIBRARIES da sua IDE Arduino.
A Altairis funciona em cima da LedControlSpiESP8266, que na sua versão original é um pouco complicada para usar por uma pessoa sem tantos conhecimentos técnicos.
O resultado é um programa muito mais enxuto e com comandos básicos, como você pode conferir abaixo, onde definimos na linha 7 qual pino usaremos para o CS (você pode usar outros pinos do ESP8266) e na linha 9 o número de displays que vamos comandar:
//Programa: Modulo Max7219 FC-16 com ESP8266 NodeMCU //Autor: Arduino e Cia #include <FC16.h> //Conexao do pino CS const int csPin = D4; //Numero de displays que estamos usando const int numDisp = 4; //Tempo do scroll em milisegundos const int scrollDelay = 250; FC16 display = FC16(csPin, numDisp); void setup() { //Inicializa o display display.begin(); //Intensidade / Brilho display.setIntensity(8); //Apaga o display display.clearDisplay(); //Texto a ser exibido no display display.setText("\x10 Hello!! \x11"); } void loop() { //Chama a rotina de scroll display.update(); //Aguarda o tempo definido delay(scrollDelay); }
Repare que na linha 25 onde setamos o texto que será exibido no display temos um x10 e um x11. Eles são usados para inserir caracteres “especiais” no texto. Vários estão disponíveis e você pode conferir a lista abaixo para usar de acordo com a sua necessidade:
- x01 🙂
- x02 🙁
- x03 Coração
- x04 Diamante
- x05 Naipe de paus
- x06 Naipe de espadas
- x07 Bullet
- x08 Bullet vazio
- x09 Bullet grande
- x0A Bullet grande invertido
- x0B Checkbox vazio
- x0C Checkbox cruz
- x0D Checkbox preenchido
- x0E Checkbox cheio
- x0F Sol
- x10 Triângulo direita
- x11 Triângulo esquerda
- x18 Seta para cima
- x19 Seta para baixo
- x1A Seta para a direita
- x1B Seta para a esquerda
- x7F Espaçamento 8 pixels
Divirta-se! 🙂
Gostou? Use este mesmo projeto para montar um Painel de Avisos acionado por Bot Telegram, um outro post aqui mesmo do Arduino e Cia!
Prezado Arduino e Cia, bom dia! O projeto não funcionou com o código conforme fornecido. Tive que implementar algumas linhas iniciais para o meu NodeMCU 8266 funcionar. Coloquei, também, uma fonte externa de 5V, pois na fase de testes do código o display acendia como um todo, o que aquecia muito os componentes da placa com risco de queima. Seguem as linhas implementadas:
//mapeamento dos pinos
#define D4 2 ;
#define D5 14;
#define D7 13;
//Conexao dos pinos CS, clk e din
const int csPin = D4;
const int clkPin = D5;
const int dinPin = D7;
Abs…
Oi Alfonso!
Muito obrigado pela contribuição. A fonte realmente é uma boa… quanto ao código, no meu funcionou esse que eu postei.
Será que pode ser a versão do NodeMCU? Existem várias diferentes por aí.
Abraço!
Adilson
Teria como mudar o texto por algum aplicativo usando Wi-Fi?
Boa sugestão, vou pensar em algo. 🙂
Abraço!
Adilson
Legal a funcionalidade… Para uso com o ESP32 precisa de alterações no código? seria legar implementar receber texto da Serial ou pelo celular…. Abraços
Boa noite,
Ainda não usei com o ESP32, mas creio que não teriam muitas alterações. Quanto ao envio por serial ou celular, vou pensar em alguma alternativa. 🙂
Abraço!
Adilson
Boa noite pessoal sou esportista . de BMX um esporte de alto rendimento e explosão procuro um equipamento pode ser caseiro tranquilo para medir o tempo de uma distancia, que dispare um cronomento na largada e desative o mesmo em um ponto especifico de chegada. este equipamento e para tomada de tempo que o atleta baixe tempo. tem que ser com sensor infra vermelho pois um trabalho com uma bicicleta. alguem tem um equipamento assim ou semelhante. meu contato e [email protected]
Boa noite pessoal procuro um equipamento com cronometro digital com liga e desliga com sensor de presença. para um trabalho com um esporte de explosão . BMX alguem tem este equipamento ou algu similar
Gostaria de saber das demais funções dessa biblioteca, que recursos mais ela oferece
Oi Teófilo,
A biblioteca tem funções adicionais como scroll horizontal e vertical, animações gráficas, etc. Dê uma olhadinha nos exemplos da biblioteca na IDE do Arduino que você vai encontrar muitas funções interessantes.
Abraço!
Adilson
[…] Módulo MAX7219 com ESP8266 NodeMCU: Neste post mostro como conectar e configurar um módulo display 8×8 no ESP e enviar mensagens simples. […]
Caro Amigo
Primeiramente, parabéns pelo seu trabalho no site.
Gostaria de saber como inserir o c cedilha no arquivo de letras para apresentação no MAX7219 DISPLAY. É possível editar o arquivo FC16_Font.h acrescentando a fonte ç (c cedilha) ?
Agradeço antecipadamente.
Abraço.
Oi Flávio!
Exatamente, do mesmo jeito que é feito com os caracteres especiais no FC16_Font.h.
Abraço e obrigado!
Adilson
Muito top, parabéns pelo post!!!!
Gostaria de saber se é possivel transformar as linhas em colunas e as colunas em linhas, porque estou usando 2 matrizes de 8×8 com o MAX e está fisicamente impossivel de deixar um do lado do outro…rs
Outra coisa que não estou conseguindo concatenar uma variavel ao texto… mesmo convertendo ela para char…
Alguém ja passou por isso?
Olá,
estou tentando alimentar o circuito com uma bateria de 9v…
sendo o positivo no pino vim, e o neutro no G… Mas o comportamento não está correto…
se puder ajudar, como seria o correto…
Olá,
Talvez tenha acontecido alguma mudança na biblioteca FC16_Font.h, mas os caracteres especiais não funcionaram comigo até eu colocar um “/” antes do código, como na linha abaixo:
display.setText(“\x10 Hello!! \x11”);
Oi Matheus,
Obrigado por avisar. Acho que a mudança foi no código mesmo, que por algum motivo saiu alterado no site. Já vou corrigir.
Abraço!
Adilson
Excellent I was searching it
Great! Thanks! 🙂
Best regards.
Adilson