Índice:

MAX7219 Matriz de LED MQTT usando Esp8266: 6 etapas
MAX7219 Matriz de LED MQTT usando Esp8266: 6 etapas

Vídeo: MAX7219 Matriz de LED MQTT usando Esp8266: 6 etapas

Vídeo: MAX7219 Matriz de LED MQTT usando Esp8266: 6 etapas
Vídeo: Display Your Name With Arduino | MAX7219 LED Matrix Display 2024, Novembro
Anonim
MAX7219 LED Matrix MQTT usando Esp8266
MAX7219 LED Matrix MQTT usando Esp8266

Eu estava tentando conectar minha tela de LED MAX7219 a um servidor MQTT e receber um texto da assinatura MQTT para exibir.

mas não obtive nenhum código adequado na internet, então comecei a construir o meu próprio …

e o resultado vem muito bem …

  • você pode exibir qualquer texto no display de led
  • você pode ajustar a intensidade da tela
  • você pode definir a velocidade de rolagem

Suprimentos

  1. Uma placa de desenvolvimento esp8266. (meu caso é NODE MCU v1.0)
  2. MAX7219 Display de matriz de LED.

Software necessário:

  1. Arduino IDE.
  2. Um servidor MQTT. (meu caso Mosquitto)

Biblioteca necessária:

  1. ESP8266WiFi.h
  2. MD_MAX72xx.h
  3. EspMQTTClient.h

Etapa 1: configurar o IDE do Arduino para o desenvolvimento Esp8266

Configure o IDE do Arduino para o desenvolvimento Esp8266
Configure o IDE do Arduino para o desenvolvimento Esp8266

abra as preferências do Arduino e cole a URL abaixo nas URLs do Gerenciador de placas adicionais:

arduino.esp8266.com/stable/package_esp8266com_index.json

em seguida, Ferramentas> Placas> Gerenciador de placas, pesquise esp8266 e instale-o.

agora seu ide Arduino está pronto para o desenvolvimento esp8266.

Etapa 2: Baixar bibliotecas externas

agora precisamos de algumas bibliotecas para MAX7219 e MQTT Client.

vamos baixar e configurar as bibliotecas

navegue até Sketch> Incluir Biblioteca> Gerenciar Bibliotecas no Arduino IDE

e pesquise EspMQTTClient e clique em Instalar

NB: Instale todas as bibliotecas dependentes, é importante

Pesquise novamente por MD_MAX72xx e clique em Instalar

Etapa 3: escreva algum código agora

Agora cole o código abaixo

#incluir

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // sua contagem de dispositivos #define CLK_PIN D5 // ou SCK #define DATA_PIN D7 // ou MOSI #define CS_PIN D4 // ou SS // você pode defini-lo para qualquer pino #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // mude de acordo com seu tipo de exibição MD_MAX72XX mx = MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); const uint8_t MESG_SIZE = 255; const uint8_t CHAR_SPACING = 1; uint8_t SCROLL_DELAY = 75; // atraso de rolagem padrão uint8_t INTENSITY = 5; // intensidade padrão char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = false; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: transformType_t t) {enum estático {S_IDLE, S_NEXT_CHAR, S_SHOW_CHAR, S_SHOW_CHAR, S_NEXLET_CHAR, S_SHOW_CHAR, estado S_SHOW_ static char * p; static uint16_t curLen, showLen; estático uint8_t cBuf [8]; uint8_t colData = 0; switch (estado) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } estado = S_NEXT_CHAR; pausa; case S_NEXT_CHAR: if (* p == '\ 0') estado = S_IDLE; else {showLen = mx.getChar (* p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; estado = S_SHOW_CHAR; } pausa; case S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // rolar - o callback carregará todos os dados prevTime = millis (); // ponto de partida para a próxima vez}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSIDADE, INTENSIDADE); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Smart Display"); } void onConnectionEstablished () {// Tópico de assinatura MQTT para texto de exibição client.subscribe ("leddisplay / text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Tópico de assinatura MQTT para controle de intensidade de exibição

client.subscribe ("leddisplay / intensidade", (const String e carga útil) {mx.control (MD_MAX72XX:: INTENSITY, carga útil.toInt ());}); // Tópico de assinatura MQTT para controle de velocidade de rolagem de exibição client.subscribe ("leddisplay / scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Para obter informações detalhadas, consulte este repositório

github.com/souravj96/max7219-mqtt-esp8266

Etapa 4: Diagrama de Circuito

Diagrama de circuito
Diagrama de circuito

conecte o display MAX7219 com NODE MCU

Etapa 5: Envie o código para Esp8266

Carregar código para Esp8266
Carregar código para Esp8266

agora escolha o tipo de placa e a porta serial corretos e clique em upload.

Etapa 6: teste tudo

se tudo correr bem, o esp8266 será conectado ao servidor MQTT.

agora, se alguma coisa será publicada no leddisplay / tópico de texto que será exibido.

{

tópico: "leddisplay / text", carga útil: "sua mensagem aqui"}

se você deseja definir a intensidade da exibição

{

tópico: "leddisplay / intensidade", carga útil: "2" // max é 15 e min 0}

se você deseja definir a velocidade de rolagem da tela

{

tópico: "leddisplay / scroll", carga útil: "100" // max é 255 e min 0}

Boa codificação

Recomendado: