Inhaltsverzeichnis:

MAX7219 LED-Matrix-MQTT mit Esp8266 - Gunook
MAX7219 LED-Matrix-MQTT mit Esp8266 - Gunook

Video: MAX7219 LED-Matrix-MQTT mit Esp8266 - Gunook

Video: MAX7219 LED-Matrix-MQTT mit Esp8266 - Gunook
Video: Openhab + Wemos + MQTT + MAX7219 LED Dot Matrix 2024, November
Anonim
MAX7219 LED-Matrix-MQTT mit Esp8266
MAX7219 LED-Matrix-MQTT mit Esp8266

Ich habe versucht, mein MAX7219 LED-Display mit einem MQTT-Server zu verbinden und einen Text vom MQTT-Abonnement zum Anzeigen zu erhalten.

Aber ich habe im Internet keinen passenden Code bekommen, also habe ich angefangen, meinen eigenen zu bauen…

und das Ergebnis kommt ganz gut…

  • Sie können jeden Text auf dem LED-Display anzeigen
  • Sie können die Intensität des Displays einstellen
  • Sie können die Scroll-Geschwindigkeit einstellen

Lieferungen

  1. Ein esp8266-Entwicklungsboard. (in meinem Fall ist es NODE MCU v1.0)
  2. MAX7219 LED-Matrix-Anzeige.

Benötigte Software:

  1. Arduino-IDE.
  2. Ein MQTT-Server. (mein Fall Mosquitto)

Bibliothek erforderlich:

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

Schritt 1: Einrichten der Arduino-IDE für die ESP8266-Entwicklung

Einrichten der Arduino-IDE für die ESP8266-Entwicklung
Einrichten der Arduino-IDE für die ESP8266-Entwicklung

Öffnen Sie die Einstellungen von Arduino und fügen Sie dann die folgende URL in die URLs des zusätzlichen Boards-Managers ein:

arduino.esp8266.com/stable/package_esp8266com_index.json

dann Tools > Boards > Boards Manager und suchen Sie nach esp8266 und installieren Sie es.

Jetzt ist Ihre Arduino-IDE bereit für die ESP8266-Entwicklung.

Schritt 2: Externe Bibliotheken herunterladen

jetzt brauchen wir einige Bibliotheken für MAX7219 und MQTT Client.

Lassen Sie uns die Bibliotheken herunterladen und einrichten

Navigieren Sie zu Skizze> Bibliothek einschließen> Bibliotheken auf Arduino IDE verwalten

und suchen Sie nach EspMQTTClient und klicken Sie auf Installieren

Hinweis: Installieren Sie alle abhängigen Bibliotheken, es ist wichtig

Suchen Sie erneut nach MD_MAX72xx und klicken Sie auf Installieren

Schritt 3: Schreiben Sie jetzt etwas Code

Fügen Sie nun den folgenden Code ein

#enthalten

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // Ihre Geräteanzahl #define CLK_PIN D5 // oder SCK #define DATA_PIN D7 // oder MOSI #define CS_PIN D4 // oder SS // Sie können es einstellen an einen beliebigen Pin #define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // entsprechend Ihrem Anzeigetyp ändern 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-Scrollverzögerung uint8_t INTENSITY = 5; // Standardintensitätszeichen 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_WLE_CHAR, S_SHOW_state =_SP_SHOW_state = statisches Zeichen *p; static uint16_t curLen, showLen; statisch uint8_t cBuf[8]; uint8_t colData = 0; switch (state) { case S_IDLE: p = curMessage; if (newMessageAvailable) { strcpy (curMessage, newMessage); newMessageAvailable = false; } Zustand = S_NEXT_CHAR; brechen; case S_NEXT_CHAR: if (*p == '\0') state = S_IDLE; else { showLen = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf); curLen = 0; Zustand = S_SHOW_CHAR; } brechen; Fall S_SHOW_CHAR: colData = cBuf[curLen++]; if (curLen = SCROLL_DELAY) { mx.transform (MD_MAX72XX::TSL); // Scrollen Sie entlang - der Callback lädt alle Daten prevTime = millis (); // Startpunkt für das nächste Mal aufrechtzuerhalten. aufrechtzuerhalten. Void setup () { Serial.begin (115200); mx.begin(); mx.control(MD_MAX72XX::INTENSITÄT, INTENSITÄT); mx.setShiftDataInCallback(scrollDataSource); mx.setShiftDataOutCallback(scrollDataSink); curMessage[0] = newMessage[0] = '\0'; sprintf(curMessage, "Smart Display"); } void onConnectionEstablished() { // MQTT-Abonnementthema für Anzeigetext client.subscribe("leddisplay/text", (const String & payload) { sprintf(curMessage, payload.c_str()); });

// MQTT-Abonnement-Thema für die Anzeigeintensitätssteuerung

client.subscribe("leddisplay/intensity", (const String & payload) { mx.control(MD_MAX72XX::INTENSITY, payload.toInt()); }); // MQTT-Abonnement-Thema für die Steuerung der Bildlaufgeschwindigkeit client.subscribe("leddisplay/scroll", (const String & payload) { SCROLL_DELAY = payload.toInt(); }); aufrechtzuerhalten. Void Schleife () {client.loop (); scrollText(); }

Ausführliche Informationen finden Sie in diesem Repository

github.com/souravj96/max7219-mqtt-esp8266

Schritt 4: Schaltplan

Schaltplan
Schaltplan

MAX7219-Display mit NODE-MCU verbinden

Schritt 5: Code auf Esp8266 hochladen

Code auf ESP8266 hochladen
Code auf ESP8266 hochladen

Wählen Sie nun Ihren richtigen Board-Typ und den richtigen seriellen Port aus und klicken Sie dann auf Upload.

Schritt 6: Alles testen

Wenn alles richtig läuft, wird Ihr esp8266 mit Ihrem MQTT-Server verbunden.

jetzt, wenn etwas auf leddisplay/text thema veröffentlicht wird, das angezeigt wird.

{

Thema: "leddisplay/text", payload: "Ihre Nachricht hier" }

wenn Sie die Intensität der Anzeige einstellen möchten

{

Thema: "leddisplay/intensity", Payload: "2" // max ist 15 und min 0 }

wenn Sie die Scroll-Geschwindigkeit des Displays einstellen möchten

{

Thema: "leddisplay/scroll", Nutzlast: "100" // max ist 255 und min 0 }

Viel Spaß beim Codieren

Empfohlen: