Indholdsfortegnelse:

MAX7219 LED Matrix MQTT Brug Esp8266: 6 trin
MAX7219 LED Matrix MQTT Brug Esp8266: 6 trin

Video: MAX7219 LED Matrix MQTT Brug Esp8266: 6 trin

Video: MAX7219 LED Matrix MQTT Brug Esp8266: 6 trin
Video: Openhab + Wemos + MQTT + MAX7219 LED Dot Matrix 2024, November
Anonim
MAX7219 LED Matrix MQTT Brug Esp8266
MAX7219 LED Matrix MQTT Brug Esp8266

Jeg forsøgte at forbinde min MAX7219 LED -skærm til en MQTT -server og modtage en tekst fra MQTT -abonnementet til visning.

men jeg fik ikke nogen passende kode på internettet, så jeg begyndte at bygge min egen …

og resultatet kommer ganske godt …

  • du kan vise enhver tekst på LED -display
  • du kan justere skærmens intensitet
  • du kan indstille rullehastigheden

Forbrugsvarer

  1. Et udviklingsbræt esp8266. (min sag er NODE MCU v1.0)
  2. MAX7219 LED Matrix Display.

Software nødvendig:

  1. Arduino IDE.
  2. En MQTT -server. (min sag Mosquitto)

Bibliotek påkrævet:

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

Trin 1: Konfigurer Arduino IDE til Esp8266 Development

Opsæt Arduino IDE til Esp8266 Development
Opsæt Arduino IDE til Esp8266 Development

åbne Arduinos præferencer, og indsæt derefter nedenstående URL i Aditional Boards Manager URL'er:

arduino.esp8266.com/stable/package_esp8266com_index.json

derefter Tools> Boards> Boards Manager og søg efter esp8266 og installer det.

nu er din Arduino ide klar til udvikling af esp8266.

Trin 2: Download eksterne biblioteker

nu har vi brug for nogle biblioteker til MAX7219 og MQTT Client.

lad os downloade og oprette bibliotekerne

naviger til Skitse> Inkluder bibliotek> Administrer biblioteker på Arduino IDE

og søg efter EspMQTTClient og klik på Installer

NB: Installer alle afhængige biblioteker, det er vigtigt

Søg igen efter MD_MAX72xx og klik på Installer

Trin 3: Skriv noget kode nu

Indsæt nu nedenstående kode

#omfatte

#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 til en hvilken som helst pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // ændring i henhold til din displaytype 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 rulleforsinkelse 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 char *p; statisk uint16_t curLen, showLen; statisk uint8_t cBuf [8]; uint8_t colData = 0; switch (tilstand) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } tilstand = S_NEXT_CHAR; pause; sag S_NEXT_CHAR: hvis (*p == '\ 0') tilstand = S_IDLE; ellers {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; tilstand = S_SHOW_CHAR; } pause; case S_SHOW_CHAR: colData = cBuf [curLen ++]; hvis (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // rul med - tilbagekaldet indlæser alle data prevTime = millis (); // startpunkt for næste gang}} ugyldig opsætning () {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 -abonnementsemne til displaytekst client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT -abonnementsemne til styring af skærmintensitet

client.subscribe ("leddisplay/intensitet", (const String & nyttelast) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT -abonnementsemne til displayrullehastighedsstyring client.subscribe ("leddisplay/scroll", (const String & nyttelast) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

For detaljerede oplysninger henvises til dette lager

github.com/souravj96/max7219-mqtt-esp8266

Trin 4: Kredsløbsdiagram

Kredsløbsdiagram
Kredsløbsdiagram

tilslut MAX7219 skærm med NODE MCU

Trin 5: Upload kode til Esp8266

Upload kode til Esp8266
Upload kode til Esp8266

vælg nu din korrekte korttype og serielle port, og tryk derefter på upload.

Trin 6: Test alt

hvis alt går korrekt, vil din esp8266 blive forbundet til din MQTT -server.

nu, hvis der vil blive offentliggjort noget om leddisplay/tekstemne, der vil blive vist.

{

emne: "leddisplay/tekst", nyttelast: "din besked her"}

hvis du vil indstille skærmens intensitet

{

emne: "leddisplay/intensitet", nyttelast: "2" // maks. er 15 og min 0}

hvis du vil indstille displayets rullehastighed

{

emne: "leddisplay/scroll", nyttelast: "100" // max er 255 og min 0}

Glad kodning

Anbefalede: