MAX7219 LED Matrix MQTT Gebruik Esp8266: 6 stappe
MAX7219 LED Matrix MQTT Gebruik Esp8266: 6 stappe
Anonim
MAX7219 LED Matrix MQTT met behulp van Esp8266
MAX7219 LED Matrix MQTT met behulp van Esp8266

Ek het probeer om my MAX7219 LED -skerm aan te sluit op 'n MQTT -bediener en 'n teks van die MQTT -intekening te ontvang om te vertoon.

maar ek het nie 'n geskikte kode op die internet gekry nie, so ek het my eie begin bou …

en die resultaat kom baie goed …

  • u kan enige teks op LED -skerm vertoon
  • u kan die intensiteit van die skerm aanpas
  • u kan die blaassnelheid instel

Voorrade

  1. 'N Ontwikkelingsbord van esp8266. (my saak is NODE MCU v1.0)
  2. MAX7219 LED Matrix Display.

Sagteware benodig:

  1. Arduino IDE.
  2. 'N MQTT -bediener. (my geval Mosquitto)

Biblioteek benodig:

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

Stap 1: Stel Arduino IDE op vir Esp8266 -ontwikkeling

Stel Arduino IDE op vir Esp8266 -ontwikkeling
Stel Arduino IDE op vir Esp8266 -ontwikkeling

maak die voorkeure van Arduino oop en plak dan die onderstaande URL in die URL's van die Aditional Boards Manager:

arduino.esp8266.com/stable/package_esp8266com_index.json

dan Tools> Boards> Boards Manager en soek esp8266 en installeer dit.

nou is u Arduino -idee gereed vir esp8266 -ontwikkeling.

Stap 2: Laai eksterne biblioteke af

nou benodig ons 'n paar biblioteke vir MAX7219 en MQTT Client.

laat ons die biblioteke aflaai en opstel

navigeer na Skets> Sluit biblioteek in> Bestuur biblioteke op Arduino IDE

en soek na EspMQTTClient en klik op Installeer

NB: installeer alle afhanklike biblioteke, dit is belangrik

Soek weer na MD_MAX72xx en klik op Installeer

Stap 3: Skryf nou 'n paar kode

Plak nou die onderstaande kode

#insluit

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // your device count #define CLK_PIN D5 // or SCK #define DATA_PIN D7 // or MOSI #define CS_PIN D4 // or SS // you can set it na enige pen #definieer HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // verander volgens u tipe skerm 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; // standaardrolvertraging uint8_t INTENSITEIT = 5; // standaard intensiteit 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) {static enum {S_IDLE, S_NEXT_CHAR, S_SHOW_; statiese char *p; statiese uint16_t curLen, showLen; statiese uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } staat = S_NEXT_CHAR; breek; saak S_NEXT_CHAR: as (*p == '\ 0') toestand = S_IDLE; anders {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; staat = S_SHOW_CHAR; } breek; geval S_SHOW_CHAR: colData = cBuf [curLen ++]; as (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // blaai saam - die terugbel laai al die data prevTime = millis (); // beginpunt vir die volgende keer}} leemte -opstelling () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITEIT, INTENSITEIT); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Smart Display"); } void onConnectionEstablished () {// MQTT -intekeningonderwerp vir vertoningstekst client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT -intekeningonderwerp vir die beheer van die vertoningintensiteit

client.subscribe ("leddisplay/intensiteit", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT -intekeningonderwerp vir vertoonrolspoedbeheer client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } leemte -lus () {client.loop (); scrollText (); }

Raadpleeg hierdie bewaarplek vir meer inligting

github.com/souravj96/max7219-mqtt-esp8266

Stap 4: Kringdiagram

Stroombaandiagram
Stroombaandiagram

verbind MAX7219 -skerm met NODE MCU

Stap 5: Laai kode op na Esp8266

Laai kode op na Esp8266
Laai kode op na Esp8266

kies nou u korrekte bordtipe en seriële poort en druk dan oplaai.

Stap 6: Toets alles

as alles reg is, word u esp8266 aan u MQTT -bediener gekoppel.

nou, as daar iets gepubliseer sal word oor leddisplay/teksonderwerp wat vertoon sal word.

{

onderwerp: "leddisplay/text", laai: "u boodskap hier"}

as u die intensiteit van die vertoning wil instel

{

onderwerp: "leddisplay/intensiteit", loonvrag: "2" // maksimum is 15 en min 0}

as u die bladsnelheid van die vertoning wil stel

{

onderwerp: "leddisplay/scroll", loonvrag: "100" // maksimum is 255 en min 0}

Gelukkige kodering