Sisällysluettelo:

MAX7219 LED -matriisi MQTT Esp8266: 6 askeleen avulla
MAX7219 LED -matriisi MQTT Esp8266: 6 askeleen avulla

Video: MAX7219 LED -matriisi MQTT Esp8266: 6 askeleen avulla

Video: MAX7219 LED -matriisi MQTT Esp8266: 6 askeleen avulla
Video: MQTT информер на ESP8266 и MAX7219 | JeeUI Framework 2024, Marraskuu
Anonim
MAX7219 LED -matriisi MQTT Esp8266: n avulla
MAX7219 LED -matriisi MQTT Esp8266: n avulla

Yritin yhdistää MAX7219 LED -näyttöni MQTT -palvelimeen ja vastaanottaa näytettävää tekstiä MQTT -tilauksesta.

mutta en löytänyt sopivaa koodia Internetistä, joten aloin rakentaa omaa…

ja lopputulos on hyvä …

  • voit näyttää minkä tahansa tekstin led -näytöllä
  • voit säätää näytön voimakkuutta
  • voit asettaa vieritysnopeuden

Tarvikkeet

  1. Esp8266 -kehityskortti. (oma tapaukseni on NODE MCU v1.0)
  2. MAX7219 LED -matriisinäyttö.

Tarvittavat ohjelmistot:

  1. Arduino IDE.
  2. MQTT -palvelin. (minun tapaukseni Mosquitto)

Kirjasto vaaditaan:

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

Vaihe 1: Asenna Arduino IDE Esp8266 -kehitykseen

Asenna Arduino IDE Esp8266 -kehitykseen
Asenna Arduino IDE Esp8266 -kehitykseen

avaa Arduinon asetukset ja liitä alla oleva URL -osoite Aditional Boards Managerin URL -osoitteisiin:

arduino.esp8266.com/stable/package_esp8266com_index.json

valitse sitten Työkalut> Taulut> Taulujen hallinta ja etsi esp8266 ja asenna se.

nyt Arduino ideasi on valmis esp8266 -kehitykseen.

Vaihe 2: Lataa ulkoiset kirjastot

nyt tarvitsemme joitakin kirjastoja MAX7219- ja MQTT -asiakkaille.

ladataan ja asennetaan kirjastot

siirry kohtaan Luonnos> Sisällytä kirjasto> Hallinnoi kirjastoja Arduino IDE: ssä

ja etsi EspMQTTClient ja napsauta Asenna

HUOM: Asenna kaikki riippuvaiset kirjastot, se on tärkeää

Etsi uudelleen MD_MAX72xx ja napsauta Asenna

Vaihe 3: Kirjoita koodi nyt

Liitä nyt alla oleva koodi

#sisältää

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // laitteesi määrä #define CLK_PIN D5 // tai SCK #define DATA_PIN D7 // tai MOSI #define CS_PIN D4 // tai SS // voit määrittää sen mihin tahansa nastaan #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // vaihda näyttötyypin mukaan 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; // oletus vieritysviive uint8_t INTENSITY = 5; // oletusintensiteetti char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = epätosi; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: transformType_t t) {staattinen enum {S_IDLE, S_NEXSCH_ SAR_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_SCH_FI staattinen char *p; staattinen uint16_t curLen, showLen; staattinen uint8_t cBuf [8]; uint8_t colData = 0; kytkin (tila) {tapaus S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = epätosi; } tila = S_NEXT_CHAR; tauko; tapaus S_NEXT_CHAR: jos (*p == '\ 0') tila = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; tila = S_SHOW_CHAR; } tauko; tapaus S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // vieritä eteenpäin - takaisinsoitto lataa kaikki tiedot prevTime = millis (); // seuraavan kerran lähtökohta}} 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 () {// MQTT -tilausteema näyttötekstille client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT -tilauksen aihe näytön voimakkuuden hallintaan

client.subscribe ("leddisplay/intensiteetti", (const String & hyötykuorma) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT -tilauksen aihe näytön vieritysnopeuden hallinnan asiakasohjelmalle.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Katso lisätietoja tästä arkistosta

github.com/souravj96/max7219-mqtt-esp8266

Vaihe 4: Piirikaavio

Piirikaavio
Piirikaavio

liitä MAX7219 -näyttö NODE MCU -laitteeseen

Vaihe 5: Lähetä koodi Esp8266 -tiedostoon

Lähetä koodi kohteeseen Esp8266
Lähetä koodi kohteeseen Esp8266

valitse nyt oikea levyn tyyppi ja sarjaportti ja paina sitten lataa.

Vaihe 6: Testaa kaikki

jos kaikki menee oikein, esp8266 yhdistetään MQTT -palvelimeen.

jos nyt julkaistaan jotain LED -näyttö/teksti -aiheessa, joka näytetään.

{

topic: "leddisplay/text", hyötykuorma: "viestisi täällä"}

jos haluat asettaa näytön voimakkuuden

{

topic: "led -näyttö/intensiteetti", hyötykuorma: "2" // max on 15 ja min 0}

jos haluat asettaa näytön vieritysnopeuden

{

topic: "leddisplay/scroll", hyötykuorma: "100" // max on 255 ja min 0}

Hyvää koodausta

Suositeltava: