Inhoudsopgave:

MAX7219 LED Matrix MQTT met behulp van Esp8266 - Ajarnpa
MAX7219 LED Matrix MQTT met behulp van Esp8266 - Ajarnpa

Video: MAX7219 LED Matrix MQTT met behulp van Esp8266 - Ajarnpa

Video: MAX7219 LED Matrix MQTT met behulp van Esp8266 - Ajarnpa
Video: The cheapest and most powerful matrix display for your entities in home assistant 😍 2024, November
Anonim
MAX7219 LED Matrix MQTT met Esp8266
MAX7219 LED Matrix MQTT met Esp8266

Ik probeerde mijn MAX7219 LED-display te verbinden met een MQTT-server en ontving een tekst van het MQTT-abonnement om weer te geven.

maar ik vond geen geschikte code op internet, dus begon ik mijn eigen code te bouwen …

en het resultaat mag er zijn…

  • u kunt elke tekst op een led-display weergeven;
  • u kunt de intensiteit van het display aanpassen
  • u kunt de scrollsnelheid instellen

Benodigdheden

  1. Een esp8266 ontwikkelbord. (mijn geval is het NODE MCU v1.0)
  2. MAX7219 LED-matrixdisplay.

Benodigde software:

  1. Arduino-IDE.
  2. Een MQTT-server. (mijn geval Mosquito)

Bibliotheek vereist:

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

Stap 1: Setup Arduino IDE voor Esp8266 Development

Arduino IDE instellen voor Esp8266-ontwikkeling
Arduino IDE instellen voor Esp8266-ontwikkeling

open de voorkeuren van Arduino en plak de onderstaande URL in Aditional Boards Manager-URL's:

arduino.esp8266.com/stable/package_esp8266com_index.json

dan Tools > Boards > Boards Manager en zoek naar esp8266 en installeer het.

nu is je Arduino ide klaar voor esp8266-ontwikkeling.

Stap 2: Externe bibliotheken downloaden

nu hebben we enkele bibliotheken nodig voor MAX7219 en MQTT Client.

laten we de bibliotheken downloaden en instellen

navigeer naar Sketch > Bibliotheek opnemen > Bibliotheken beheren op Arduino IDE

en zoek naar EspMQTTClient en klik op Installeren

NB: Installeer alle afhankelijke bibliotheken, het is belangrijk

Zoek opnieuw naar MD_MAX72xx en klik op Installeren

Stap 3: Schrijf nu wat code

Plak nu de onderstaande code

#erbij betrekken

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // uw aantal apparaten #define CLK_PIN D5 // of SCK #define DATA_PIN D7 // of MOSI #define CS_PIN D4 // of SS // u kunt het instellen naar elke pin #define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // wijzigen volgens uw weergavetype 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; // standaard scrollvertraging uint8_t INTENSITEIT = 5; // standaard intensiteit char curMessage [MESG_SIZE]; char nieuw bericht [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_IDSHLE statisch teken *p; statisch uint16_t curLen, showLen; statisch uint8_t cBuf[8]; uint8_t colData = 0; switch (status) { case S_IDLE: p = curMessage; if (newMessageAvailable) { strcpy(curMessage, newMessage); newMessageAvailable = false; } staat = S_NEXT_CHAR; pauze; geval S_NEXT_CHAR: als (*p == '\0') staat = S_IDLE; else { showLen = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf); krulLen = 0; staat = S_SHOW_CHAR; } pauze; geval S_SHOW_CHAR: colData = cBuf[curLen++]; if (curLen = SCROLL_DELAY) { mx.transform (MD_MAX72XX::TSL); // scroll mee - de callback laadt alle gegevens prevTime = millis(); // startpunt voor de volgende keer}} void setup() {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-abonnementsonderwerp voor display-tekst client.subscribe ("leddisplay/text", (const String & payload) { sprintf (curMessage, payload.c_str ()); });

// MQTT-abonnementsonderwerp voor weergave-intensiteitsregeling

client.subscribe("leddisplay/intensity", (const String & payload) { mx.control(MD_MAX72XX::INTENSITY, payload.toInt());}); // MQTT abonnement onderwerp voor display scroll speed controll client.subscribe("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt(); }); } void loop() { client.loop(); scrollText(); }

Raadpleeg deze repository voor gedetailleerde informatie:

github.com/souravj96/max7219-mqtt-esp8266

Stap 4: Schakelschema

Schakelschema
Schakelschema

verbind MAX7219-display met NODE MCU

Stap 5: Upload code naar Esp8266

Upload code naar Esp8266
Upload code naar Esp8266

kies nu het juiste bordtype en seriële poort en klik vervolgens op uploaden.

Stap 6: Test alles

als alles goed gaat, wordt je esp8266 verbonden met je MQTT-server.

nu, als er iets zal worden gepubliceerd op leddisplay/tekst zal het onderwerp worden weergegeven.

{

topic: "leddisplay/text", payload: "uw bericht hier" }

als u de intensiteit van de weergave wilt instellen:

{

topic: "leddisplay/intensity", payload: "2" // max is 15 en min 0 }

als u de scrollsnelheid van de weergave wilt instellen:

{

topic: "leddisplay/scroll", payload: "100" // max is 255 en min 0 }

Gelukkig coderen

Aanbevolen: