Obsah:

MAX7219 LED Matrix MQTT pomocou Esp8266: 6 krokov
MAX7219 LED Matrix MQTT pomocou Esp8266: 6 krokov

Video: MAX7219 LED Matrix MQTT pomocou Esp8266: 6 krokov

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

Pokúšal som sa pripojiť svoj LED displej MAX7219 k serveru MQTT a dostať text z predplatného MQTT na zobrazenie.

ale na internete som nedostal žiadny vhodný kód, a tak som si začal budovať vlastný…

a výsledok sa dostaví celkom dobre …

  • na LED displeji môžete zobraziť ľubovoľný text
  • môžete nastaviť intenzitu zobrazenia
  • môžete nastaviť rýchlosť posúvania

Zásoby

  1. Vývojová doska esp8266. (v mojom prípade je to NODE MCU v1.0)
  2. Maticový displej MAX7219 LED.

Potrebný softvér:

  1. Arduino IDE.
  2. Server MQTT. (môj prípad Mosquitto)

Potrebná knižnica:

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

Krok 1: Nastavte Arduino IDE pre vývoj Esp8266

Nastavte Arduino IDE pre vývoj Esp8266
Nastavte Arduino IDE pre vývoj Esp8266

otvorte predvoľby Arduina a potom prilepte nižšie uvedenú adresu URL do adries URL dodatočného správcu dosiek:

arduino.esp8266.com/stable/package_esp8266com_index.json

potom Nástroje> Dosky> Správca dosiek a vyhľadajte esp8266 a nainštalujte ho.

teraz je váš Arduino ide pripravený na vývoj esp8266.

Krok 2: Stiahnite si externé knižnice

teraz potrebujeme nejaké knižnice pre klienta MAX7219 a MQTT.

stiahneme a nastavíme knižnice

prejdite na Sketch> Include Library> Manage Libraries on Arduino IDE

a vyhľadajte EspMQTTClient a kliknite na Inštalovať

Poznámka: Nainštalujte všetky závislé knižnice, je to dôležité

Znova vyhľadajte MD_MAX72xx a kliknite na Inštalovať

Krok 3: Napíšte kód teraz

Teraz prilepte nižšie uvedený kód

#zahrnúť

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // počet vašich zariadení #define CLK_PIN D5 // alebo SCK #define DATA_PIN D7 // alebo MOSI #define CS_PIN D4 // alebo SS // môžete ho nastaviť na ľubovoľný pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // zmena podľa typu zobrazenia 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; // predvolené oneskorenie posúvania uint8_t INTENSITY = 5; // predvolená 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_SHOW_; 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; prestávka; prí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; } prestávka; prípad S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // posúvajte sa - pri spätnom volaní sa načítajú všetky údaje prevTime = millis (); // východiskový bod nabudúce}} 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, „inteligentný displej“); } void onConnectionEstablished () {// Téma predplatného MQTT pre textový text client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Téma predplatného MQTT pre ovládač intenzity zobrazenia

client.subscribe ("leddisplay/intenzita", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Téma predplatného MQTT pre ovládanie rýchlosti posuvu displeja client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Podrobné informácie nájdete v tomto úložisku

github.com/souravj96/max7219-mqtt-esp8266

Krok 4: Schéma zapojenia

Schéma zapojenia
Schéma zapojenia

prepojte displej MAX7219 s NODE MCU

Krok 5: Nahrajte kód do Esp8266

Nahrajte kód do Esp8266
Nahrajte kód do Esp8266

teraz vyberte správny typ dosky a sériový port a potom kliknite na tlačidlo Nahrať.

Krok 6: Všetko vyskúšajte

ak je všetko v poriadku, váš esp8266 bude pripojený k vášmu serveru MQTT.

teraz, ak bude niečo publikované na LED displeji/textovej téme, ktorá sa zobrazí.

{

téma: "leddisplay/text", užitočné zaťaženie: "vaša správa tu"}

ak chcete nastaviť intenzitu zobrazenia

{

téma: "leddisplej/intenzita", užitočné zaťaženie: "2" // max je 15 a min 0}

ak chcete nastaviť rýchlosť posúvania displeja

{

téma: "leddisplay/scroll", užitočné zaťaženie: "100" // max je 255 a min 0}

Veselé kódovanie

Odporúča: