MAX7219 LED Matrix MQTT pomocí Esp8266: 6 kroků
MAX7219 LED Matrix MQTT pomocí Esp8266: 6 kroků
Anonim
MAX7219 LED Matrix MQTT pomocí Esp8266
MAX7219 LED Matrix MQTT pomocí Esp8266

Pokoušel jsem se připojit svůj LED displej MAX7219 k serveru MQTT a obdržet text z předplatného MQTT k zobrazení.

ale na internetu jsem nedostal žádný vhodný kód, a tak jsem začal budovat vlastní…

a výsledek se dostaví docela dobře …

  • na LED displeji můžete zobrazit libovolný text
  • můžete upravit intenzitu zobrazení
  • můžete nastavit rychlost posouvání

Zásoby

  1. Vývojová deska esp8266. (můj případ je NODE MCU v1.0)
  2. Maticový displej MAX7219 LED.

Potřebný software:

  1. Arduino IDE.
  2. Server MQTT. (můj případ Mosquitto)

Požadovaná knihovna:

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

Krok 1: Nastavení Arduino IDE pro vývoj Esp8266

Nastavte Arduino IDE pro vývoj Esp8266
Nastavte Arduino IDE pro vývoj Esp8266

otevřete předvolby Arduina a poté vložte níže uvedenou adresu URL do adres URL dalších správců desek:

arduino.esp8266.com/stable/package_esp8266com_index.json

poté Nástroje> Desky> Správce desek a vyhledejte esp8266 a nainstalujte jej.

nyní je váš Arduino ide připraven k vývoji esp8266.

Krok 2: Stažení externích knihoven

nyní potřebujeme nějaké knihovny pro MAX7219 a klienta MQTT.

stáhneme a nastavíme knihovny

přejděte na Sketch> Include Library> Manage Libraries on Arduino IDE

a vyhledejte EspMQTTClient a klikněte na Instalovat

Poznámka: Nainstalujte si všechny závislé knihovny, je to důležité

Znovu vyhledejte MD_MAX72xx a klikněte na Instalovat

Krok 3: Napište nějaký kód hned

Nyní vložte níže uvedený kód

#zahrnout

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // počet vašich zařízení #define CLK_PIN D5 // nebo SCK #define DATA_PIN D7 // nebo MOSI #define CS_PIN D4 // nebo SS // můžete nastavit na jakýkoli pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // změna podle typu zobrazení MD_MAX72XX mx = MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); konst uint8_t MESG_SIZE = 255; konst uint8_t CHAR_SPACING = 1; uint8_t SCROLL_DELAY = 75; // výchozí zpoždění posouvání uint8_t INTENSITY = 5; // výchozí intenzita 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_SHSP_, S_SHOW_ statický znak *p; statický uint16_t curLen, showLen; statický uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } stav = S_NEXT_CHAR; přestávka; případ S_NEXT_CHAR: if (*p == '\ 0') state = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; stav = S_SHOW_CHAR; } přestávka; případ S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // posouvání podél - zpětné volání načte všechna data prevTime = millis (); // výchozí bod pro příště}} 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 () {// téma předplatného MQTT pro textový text client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Téma předplatného MQTT pro ovládání intenzity zobrazení

client.subscribe ("leddisplay/intenzita", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Téma předplatného MQTT pro zobrazení rychlosti posouvání klienta client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Podrobné informace najdete v tomto úložišti

github.com/souravj96/max7219-mqtt-esp8266

Krok 4: Schéma zapojení

Kruhový diagram
Kruhový diagram

propojte displej MAX7219 s NODE MCU

Krok 5: Nahrajte kód na Esp8266

Nahrajte kód na Esp8266
Nahrajte kód na Esp8266

nyní vyberte správný typ desky a sériový port a poté klikněte na nahrát.

Krok 6: Vše otestujte

pokud je vše v pořádku, bude váš esp8266 připojen k vašemu serveru MQTT.

nyní, pokud bude něco publikováno na leddisplay/textové téma, které se zobrazí.

{

téma: "leddisplay/text", užitečné zatížení: "vaše zpráva zde"}

pokud chcete nastavit intenzitu zobrazení

{

téma: "leddisplay/intenzita", užitečné zatížení: "2" // max je 15 a min 0}

pokud chcete nastavit rychlost posouvání displeje

{

téma: "leddisplay/scroll", užitečné zatížení: "100" // max je 255 a min 0}

Šťastné kódování