Innehållsförteckning:

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

Video: MAX7219 LED Matrix MQTT med Esp8266: 6 steg

Video: MAX7219 LED Matrix MQTT med Esp8266: 6 steg
Video: Using HT16K33 4 digit seven segment display with ESP8266 NodeMCU and D1 Mini 2024, November
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

Rekommenderad: