MAX7219 LED Matrix MQTT med Esp8266: 6 steg
MAX7219 LED Matrix MQTT med Esp8266: 6 steg
Anonim
MAX7219 LED Matrix MQTT med Esp8266
MAX7219 LED Matrix MQTT med Esp8266

Jag försökte ansluta min MAX7219 LED -skärm till en MQTT -server och få en text från MQTT -prenumerationen för visning.

men jag fick ingen lämplig kod på internet, så jag började bygga min egen …

och resultatet kommer ganska bra …

  • du kan visa vilken text som helst på LED -displayen
  • Du kan justera skärmens intensitet
  • du kan ställa in rullningshastigheten

Tillbehör

  1. En utvecklingsbräda esp8266. (mitt fall är att NODE MCU v1.0)
  2. MAX7219 LED Matrix Display.

Programvara som behövs:

  1. Arduino IDE.
  2. En MQTT -server. (mitt fall Mosquitto)

Bibliotek krävs:

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

Steg 1: Konfigurera Arduino IDE för Esp8266 -utveckling

Konfigurera Arduino IDE för Esp8266 Development
Konfigurera Arduino IDE för Esp8266 Development

öppna Arduinos inställningar och klistra sedan in nedanstående URL i Aditional Boards Manager URL: er:

arduino.esp8266.com/stable/package_esp8266com_index.json

sedan Tools> Boards> Boards Manager och sök efter esp8266 och installera den.

nu är din Arduino ide redo för esp8266 -utveckling.

Steg 2: Ladda ner externa bibliotek

nu behöver vi några bibliotek för MAX7219 och MQTT Client.

låt oss ladda ner och konfigurera biblioteken

navigera till Skiss> Inkludera bibliotek> Hantera bibliotek på Arduino IDE

och sök efter EspMQTTClient och klicka på Installera

OBS: Installera alla beroende bibliotek, det är viktigt

Sök igen efter MD_MAX72xx och klicka på Installera

Steg 3: Skriv lite kod nu

Klistra nu in koden nedan

#omfatta

#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 till valfri pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // ändra beroende på din visningstyp 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; // standard rullningsfördröjning uint8_t INTENSITY = 5; // standardintensitet 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_ statisk karaktär *p; statisk uint16_t curLen, showLen; statisk uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } tillstånd = S_NEXT_CHAR; ha sönder; fall S_NEXT_CHAR: om (*p == '\ 0') tillstånd = S_IDLE; annars {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; tillstånd = S_SHOW_CHAR; } ha sönder; fall S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // bläddra längs - återuppringningen laddar alla data prevTime = millis (); // startpunkt för nästa gång}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENSITY, INTENSITY); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Smart Display"); } void onConnectionEstablished () {// MQTT -prenumerationsämne för displaytext client.subscribe ("leddisplay/text", (const String & nyttolast) {sprintf (curMessage, payload.c_str ());});

// MQTT -prenumerationsämne för displayintensitetskontroll

client.subscribe ("leddisplay/intensitet", (const String & nyttolast) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT -prenumerationsämne för displayrullningshastighetskontrollklient. Prenumeration ("leddisplay/scroll", (const String & nyttolast) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Mer information finns i det här förvaret

github.com/souravj96/max7219-mqtt-esp8266

Steg 4: Kretsdiagram

Kretsdiagram
Kretsdiagram

anslut MAX7219 -skärmen med NODE MCU

Steg 5: Ladda upp kod till Esp8266

Ladda upp koden till Esp8266
Ladda upp koden till Esp8266

välj nu rätt korttyp och seriell port och tryck sedan på uppladdning.

Steg 6: Testa allt

om allt går rätt så kommer din esp8266 att anslutas till din MQTT -server.

nu, om något kommer att publiceras om leddisplay/textämne som kommer att visas.

{

ämne: "leddisplay/text", nyttolast: "ditt meddelande här"}

om du vill ställa in skärmens intensitet

{

ämne: "leddisplay/intensitet", nyttolast: "2" // max är 15 och min 0}

om du vill ställa in skärmens rullningshastighet

{

ämne: "leddisplay/scroll", nyttolast: "100" // max är 255 och min 0}

Glad kodning