Innholdsfortegnelse:

MAX7219 LED Matrix MQTT Bruke Esp8266: 6 trinn
MAX7219 LED Matrix MQTT Bruke Esp8266: 6 trinn

Video: MAX7219 LED Matrix MQTT Bruke Esp8266: 6 trinn

Video: MAX7219 LED Matrix MQTT Bruke Esp8266: 6 trinn
Video: Program Raspberry Pi With Particle IoT Platform [BM] 2024, November
Anonim
MAX7219 LED Matrix MQTT Bruke Esp8266
MAX7219 LED Matrix MQTT Bruke Esp8266

Jeg prøvde å koble min MAX7219 LED -skjerm til en MQTT -server og motta en tekst fra MQTT -abonnementet for å vise.

men jeg fikk ingen passende kode på internett, så jeg begynte å bygge min egen …

og resultatet kommer ganske bra …

  • du kan vise hvilken som helst tekst på LED -skjermen
  • du kan justere intensiteten på displayet
  • du kan stille inn rullehastigheten

Rekvisita

  1. Et utviklingsbrett esp8266. (mitt tilfelle er NODE MCU v1.0)
  2. MAX7219 LED Matrix Display.

Programvare som trengs:

  1. Arduino IDE.
  2. En MQTT -server. (min sak Mosquitto)

Bibliotek nødvendig:

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

Trinn 1: Konfigurer Arduino IDE for Esp8266 Development

Oppsett Arduino IDE for Esp8266 Development
Oppsett Arduino IDE for Esp8266 Development

åpne Arduinos preferanser, og lim deretter inn URL -adressen nedenfor i Aditional Boards Manager -nettadresser:

arduino.esp8266.com/stable/package_esp8266com_index.json

deretter Tools> Boards> Boards Manager og søk etter esp8266 og installer den.

nå er din Arduino ide klar for esp8266 utvikling.

Trinn 2: Last ned eksterne biblioteker

nå trenger vi noen biblioteker for MAX7219 og MQTT Client.

la oss laste ned og sette opp bibliotekene

naviger til Skisse> Inkluder bibliotek> Administrer biblioteker på Arduino IDE

og søk etter EspMQTTClient og klikk Installer

NB: Installer alle avhengige biblioteker, det er viktig

Søk igjen etter MD_MAX72xx og klikk Installer

Trinn 3: Skriv litt kode nå

Lim nå inn koden nedenfor

#inkludere

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // device count #define CLK_PIN D5 // or SCK #define DATA_PIN D7 // or MOSI #define CS_PIN D4 // or SS // you can set it til en hvilken som helst pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // endre i henhold til skjermtypen 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; // standard rulleforsinkelse uint8_t INTENSITY = 5; // standard intensitet 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_ statisk røyke *p; statisk uint16_t curLen, showLen; statisk uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } tilstand = S_NEXT_CHAR; gå i stykker; case S_NEXT_CHAR: if (*p == '\ 0') state = S_IDLE; annet {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; tilstand = S_SHOW_CHAR; } gå i stykker; case S_SHOW_CHAR: colData = cBuf [curLen ++]; hvis (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // bla med - tilbakeringingen vil laste alle data prevTime = millis (); // utgangspunkt for neste gang}} ugyldig oppsett () {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 () {// MQTT -abonnementstema for visningstekst client.subscribe ("leddisplay/text", (const String & nyttelast) {sprintf (curMessage, payload.c_str ());});

// MQTT -abonnementstema for skjermintensitetskontroll

client.subscribe ("leddisplay/intensitet", (const String & nyttelast) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT -abonnementstema for skjermrullehastighetskontroll client.subscribe ("leddisplay/scroll", (const String & nyttelast) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

For detaljert informasjon, se dette depotet

github.com/souravj96/max7219-mqtt-esp8266

Trinn 4: Kretsdiagram

Kretsdiagram
Kretsdiagram

koble til MAX7219 -skjermen med NODE MCU

Trinn 5: Last opp kode til Esp8266

Last opp kode til Esp8266
Last opp kode til Esp8266

nå velger du riktig brettype og seriell port og klikker deretter på Last opp.

Trinn 6: Test alt

hvis alt går riktig, blir esp8266 koblet til MQTT -serveren.

nå, hvis noe vil bli publisert om leddisplay/tekstemne som vil bli vist.

{

emne: "leddisplay/text", nyttelast: "meldingen din her"}

hvis du vil angi intensiteten på displayet

{

emne: "leddisplay/intensitet", nyttelast: "2" // maks er 15 og min 0}

hvis du vil angi rullehastigheten på displayet

{

emne: "leddisplay/scroll", nyttelast: "100" // maks er 255 og min 0}

Glad koding

Anbefalt: