Tartalomjegyzék:

MAX7219 LED Mátrix MQTT Esp8266 használatával: 6 lépés
MAX7219 LED Mátrix MQTT Esp8266 használatával: 6 lépés

Videó: MAX7219 LED Mátrix MQTT Esp8266 használatával: 6 lépés

Videó: MAX7219 LED Mátrix MQTT Esp8266 használatával: 6 lépés
Videó: Интернет часы на ESP8266/ESP32 + MAX7219 2024, November
Anonim
MAX7219 LED Mátrix MQTT Esp8266 használatával
MAX7219 LED Mátrix MQTT Esp8266 használatával

Próbáltam csatlakoztatni a MAX7219 LED kijelzőmet egy MQTT szerverhez, és szöveget fogadni az MQTT előfizetésből.

de nem találtam megfelelő kódot az interneten, ezért elkezdtem építeni a sajátomat…

és az eredmény nagyon jól jön …

  • bármilyen szöveget megjeleníthet a LED kijelzőn
  • beállíthatja a kijelző intenzitását
  • beállíthatja a görgetési sebességet

Kellékek

  1. Esp8266 fejlesztő tábla. (az én esetem a NODE MCU v1.0)
  2. MAX7219 LED mátrix kijelző.

Szükséges szoftver:

  1. Arduino IDE.
  2. MQTT szerver. (az én esetem Mosquitto)

Könyvtár szükséges:

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

1. lépés: Az Arduino IDE beállítása az Esp8266 fejlesztéshez

Az Arduino IDE beállítása az Esp8266 fejlesztéshez
Az Arduino IDE beállítása az Esp8266 fejlesztéshez

nyissa meg az Arduino beállításait, majd illessze be az alábbi URL -t az Aditional Boards Manager URL -címeibe:

arduino.esp8266.com/stable/package_esp8266com_index.json

majd az Eszközök> Táblák> Táblakezelő parancsot, és keresse meg az esp8266 kifejezést, és telepítse azt.

most az Arduino ide készen áll az esp8266 fejlesztésre.

2. lépés: Töltse le a külső könyvtárakat

most szükségünk van néhány könyvtárra a MAX7219 és az MQTT ügyfél számára.

töltsük le és állítsuk be a könyvtárakat

navigáljon a Vázlat> Könyvtár bevonása> Könyvtárak kezelése Arduino IDE -hez

és keresse meg az EspMQTTClient kifejezést, majd kattintson a Telepítés gombra

Megjegyzés: Telepítse az összes függő könyvtárat, ez fontos

Keresse meg ismét az MD_MAX72xx kifejezést, majd kattintson a Telepítés gombra

3. lépés: Írjon néhány kódot most

Most illessze be az alábbi kódot

#befoglalni

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // az eszközök száma #define CLK_PIN D5 // vagy SCK #define DATA_PIN D7 // vagy MOSI #define CS_PIN D4 // vagy SS // beállíthatja bármelyik tűre #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // módosítsa a megjelenítési típusának megfelelően 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; // alapértelmezett görgetési késleltetés uint8_t INTENZITÁS = 5; // alapértelmezett intenzitás char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = hamis; 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_CHAR, S_SHOW_SPACE} állapot = S_IDLE; statikus char *p; statikus uint16_t curLen, showLen; statikus uint8_t cBuf [8]; uint8_t colData = 0; switch (állapot) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = hamis; } állapot = S_NEXT_CHAR; szünet; S_NEXT_CHAR eset: if (*p == '\ 0') állapot = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; állapot = S_SHOW_CHAR; } szünet; eset S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // görgessen végig - a visszahívás betölti az összes adatot prevTime = millis (); // kiindulópont a következő alkalommal}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENZITÁS, INTENZITÁS); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Intelligens kijelző"); } void onConnectionEstablished () {// MQTT előfizetés témája a megjelenített szöveges ügyfélhez.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT előfizetési téma a kijelző intenzitásának szabályozásához

client.subscribe ("leddisplay/intensity", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT előfizetés témája a kijelző görgetési sebességének vezérléséhez client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Részletes információkért tekintse meg ezt az adattárat

github.com/souravj96/max7219-mqtt-esp8266

4. lépés: Áramköri diagram

Kördiagramm
Kördiagramm

csatlakoztassa a MAX7219 kijelzőt a NODE MCU -val

5. lépés: Töltse fel a kódot az Esp8266 fájlba

Töltse fel a kódot az Esp8266 -ra
Töltse fel a kódot az Esp8266 -ra

most válassza ki a megfelelő tábla típusát és soros portját, majd nyomja meg a feltöltést.

6. lépés: Teszteljen mindent

ha minden jól megy, akkor az esp8266 csatlakoztatva lesz az MQTT szerveréhez.

most, ha bármi megjelenik a megjelenített leddisplay/text témában.

{

topic: "leddisplay/text", payload: "az üzenete itt"}

ha be szeretné állítani a kijelző intenzitását

{

topic: "leddisplay/intensitás", hasznos teher: "2" // max 15 és min 0}

ha be szeretné állítani a kijelző görgetési sebességét

{

topic: "leddisplay/scroll", hasznos terhelés: "100" // max 255 és min 0}

Boldog kódolást

Ajánlott: