Cuprins:

MAX7219 LED Matrix MQTT folosind Esp8266: 6 pași
MAX7219 LED Matrix MQTT folosind Esp8266: 6 pași
Anonim
MAX7219 LED Matrix MQTT folosind Esp8266
MAX7219 LED Matrix MQTT folosind Esp8266

Încercam să îmi conectez afișajul cu LED MAX7219 la un server MQTT și să primesc un text de la abonamentul MQTT pentru afișare.

dar nu am primit niciun cod potrivit pe internet, așa că am început să-mi construiesc propriul meu …

iar rezultatul vine destul de bine …

  • puteți afișa orice text pe ecranul led
  • puteți regla intensitatea afișajului
  • puteți seta viteza de derulare

Provizii

  1. O placă de dezvoltare esp8266. (cazul meu este NODE MCU v1.0)
  2. Afișaj cu matrice LED MAX7219.

Software necesar:

  1. IDE Arduino.
  2. Un server MQTT. (cazul meu Mosquitto)

Biblioteca necesară:

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

Pasul 1: Configurați Arduino IDE pentru dezvoltarea Esp8266

Configurați Arduino IDE pentru dezvoltarea Esp8266
Configurați Arduino IDE pentru dezvoltarea Esp8266

deschideți preferințele Arduino, apoi lipiți URL-ul de mai jos în adresele URL Aditional Boards Manager:

arduino.esp8266.com/stable/package_esp8266com_index.json

apoi Instrumente> Panouri> Manager panouri și căutați esp8266 și instalați-l.

acum ideea dvs. Arduino este pregătită pentru dezvoltarea esp8266.

Pasul 2: Descărcați biblioteci externe

acum avem nevoie de câteva biblioteci pentru MAX7219 și MQTT Client.

să descărcăm și să configurăm bibliotecile

navigați la Sketch> Include Library> Gestionați bibliotecile pe Arduino IDE

și căutați EspMQTTClient și faceți clic pe Instalare

NB: Instalați toate bibliotecile dependente, este important

Căutați din nou MD_MAX72xx și faceți clic pe Instalare

Pasul 3: scrieți câteva coduri acum

Acum lipiți codul de mai jos

#include

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // numărul dispozitivului dvs. #define CLK_PIN D5 // sau SCK #define DATA_PIN D7 // sau MOSI #define CS_PIN D4 // sau SS // îl puteți seta la orice pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // modificați în funcție de tipul de afișare 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; // întârziere defilare implicită uint8_t INTENSITATE = 5; // intensitate implicită 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_, S_SHOW_ caracter static * p; static uint16_t curLen, showLen; static uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } state = S_NEXT_CHAR; pauză; cazul S_NEXT_CHAR: if (* p == '\ 0') state = S_IDLE; else {showLen = mx.getChar (* p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; state = S_SHOW_CHAR; } pauză; caz S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // derulați de-a lungul - apelarea va încărca toate datele prevTime = millis (); // punctul de plecare pentru data viitoare}} 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 () {// Subiect de abonament MQTT pentru text afișat client.subscribe ("leddisplay / text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Subiect de abonament MQTT pentru controlul intensității afișajului

client.subscribe ("leddisplay / intensitate", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Subiect de abonament MQTT pentru afișarea controlului vitezei de derulare client.subscribe ("leddisplay / scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Pentru informații detaliate, consultați acest depozit

github.com/souravj96/max7219-mqtt-esp8266

Pasul 4: Diagrama circuitului

Diagrama circuitului
Diagrama circuitului

conectați afișajul MAX7219 cu NODE MCU

Pasul 5: Încărcați codul în Esp8266

Încărcați codul în Esp8266
Încărcați codul în Esp8266

acum alegeți tipul corect de placă și portul serial, apoi apăsați încărcare.

Pasul 6: Testează totul

dacă totul merge corect, atunci esp8266 va fi conectat la serverul dvs. MQTT.

acum, dacă se va publica ceva pe leddisplay / subiect text care va fi afișat.

{

topic: "leddisplay / text", payload: "mesajul tău aici"}

dacă doriți să setați intensitatea afișajului

{

subiect: „leddisplay / intensitate”, sarcină utilă: „2” // max este 15 și min 0}

dacă doriți să setați viteza de derulare a afișajului

{

topic: "leddisplay / scroll", sarcină utilă: "100" // max este 255 și min 0}

Codificare fericită

Recomandat: