Obsah:

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

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

Video: MAX7219 LED Matrix MQTT pomocí Esp8266: 6 kroků
Video: Программирование МК ESP8266. Урок 12. SPI. Драйвер индикатора MAX7219 2024, Listopad
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í

Doporučuje: