28 outubro 2018

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.

Max7219 com ESP8266 NodeMCU

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 8x8, 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.

Driver de display MAX7219

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:

Módulo matriz de led 8x8 MAX7219 FC-16

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 8x8 é 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) ao CLK e D7 (GPIO13) ao DIN:

Circuito ESP8266 NodeMCU com Módulo Max7219

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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
//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! :)

2 comentários:

  1. 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...

    ResponderExcluir
    Respostas
    1. 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

      Excluir