Kazalo:

MAX7219 LED Matrix MQTT z uporabo Esp8266: 6 korakov
MAX7219 LED Matrix MQTT z uporabo Esp8266: 6 korakov

Video: MAX7219 LED Matrix MQTT z uporabo Esp8266: 6 korakov

Video: MAX7219 LED Matrix MQTT z uporabo Esp8266: 6 korakov
Video: Светодиодные матрицы на max7219 2024, November
Anonim
MAX7219 LED Matrix MQTT z uporabo Esp8266
MAX7219 LED Matrix MQTT z uporabo Esp8266

Poskušal sem povezati svoj LED zaslon MAX7219 s strežnikom MQTT in prejeti besedilo iz naročnine na MQTT za prikaz.

vendar na internetu nisem dobil ustrezne kode, zato sem začel graditi svojo …

in rezultat je zelo dober …

  • na LED zaslonu lahko prikažete poljubno besedilo
  • lahko prilagodite intenzivnost prikaza
  • lahko nastavite hitrost drsenja

Zaloge

  1. Razvojna plošča esp8266. (v mojem primeru je to NODE MCU v1.0)
  2. MAX7219 LED matrični zaslon.

Potrebna programska oprema:

  1. Arduino IDE.
  2. Strežnik MQTT. (moj primer Mosquitto)

Potrebna knjižnica:

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

1. korak: Namestite Arduino IDE za razvoj Esp8266

Namestite Arduino IDE za razvoj Esp8266
Namestite Arduino IDE za razvoj Esp8266

odprite nastavitve Arduina in nato prilepite spodnji URL v URL -je upravitelja dodatnih plošč:

arduino.esp8266.com/stable/package_esp8266com_index.json

nato Orodja> Plošče> Upravitelj plošč in poiščite esp8266 ter ga namestite.

zdaj je vaš Arduino ide pripravljen za razvoj esp8266.

2. korak: Prenesite zunanje knjižnice

zdaj potrebujemo nekaj knjižnic za odjemalca MAX7219 in MQTT.

naložimo in nastavimo knjižnice

pojdite na Sketch> Include Library> Manage Libraries v Arduino IDE

in poiščite EspMQTTClient in kliknite Namesti

Opomba: Namestite vse odvisne knjižnice, pomembno je

Ponovno poiščite MD_MAX72xx in kliknite Namesti

3. korak: Napišite kodo zdaj

Zdaj prilepite spodnjo kodo

#vključi

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // število vaših naprav #define CLK_PIN D5 // ali SCK #define DATA_PIN D7 // ali MOSI #define CS_PIN D4 // ali SS // lahko nastavite na kateri koli pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // spremenite glede na vrsto prikaza 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; // privzeta zakasnitev drsenja uint8_t INTENSITY = 5; // privzeta intenzivnost 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) {statično naštevanje {S_IDLE statični char *p; static uint16_t curLen, showLen; statični uint8_t cBuf [8]; uint8_t colData = 0; switch (stanje) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } stanje = S_NEXT_CHAR; zlom; primer S_NEXT_CHAR: if (*p == '\ 0') stanje = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; stanje = S_SHOW_CHAR; } prelom; primer S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // pomikanje po - povratni klic bo naložil vse podatke prevTime = millis (); // izhodišče za naslednjič}} void setup () {Serial.begin (115200); mx.begin (); mx.control (MD_MAX72XX:: INTENZITET, INTENZITET); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Pametni zaslon"); } void onConnectionEstablished () {// Tema naročnine na MQTT za odjemalca prikaznega besedila.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Naročninska tema MQTT za nadzor intenzivnosti prikaza

client.subscribe ("leddisplay/intenzivnost", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Tema naročnine na MQTT za odjemalca za nadzor hitrosti drsenja zaslona.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Podrobne informacije najdete v tem skladišču

github.com/souravj96/max7219-mqtt-esp8266

4. korak: Shema vezja

Shema vezja
Shema vezja

povežite zaslon MAX7219 z NODE MCU

5. korak: Naložite kodo na Esp8266

Naloži kodo v Esp8266
Naloži kodo v Esp8266

zdaj izberite pravo vrsto plošče in serijska vrata, nato pritisnite nalaganje.

6. korak: Preizkusite vse

če bo vse v redu, bo vaš esp8266 povezan s strežnikom MQTT.

zdaj, če bo kaj objavljeno o temi leddisplay/text, ki bo prikazana.

{

topic: "leddisplay/text", koristna obremenitev: "your message here"}

če želite nastaviti intenzivnost prikaza

{

tema: "leddisplay/intenzivnost", koristna obremenitev: "2" // max je 15 in min 0}

če želite nastaviti hitrost drsenja zaslona

{

topic: "leddisplay/scroll", koristna obremenitev: "100" // max je 255 in min 0}

Veselo kodiranje

Priporočena: