Sadržaj:

MAX7219 LED Matrix MQTT pomoću Esp8266: 6 koraka
MAX7219 LED Matrix MQTT pomoću Esp8266: 6 koraka

Video: MAX7219 LED Matrix MQTT pomoću Esp8266: 6 koraka

Video: MAX7219 LED Matrix MQTT pomoću Esp8266: 6 koraka
Video: Openhab + Wemos + MQTT + MAX7219 LED Dot Matrix 2024, Novembar
Anonim
MAX7219 LED matrica MQTT pomoću Esp8266
MAX7219 LED matrica MQTT pomoću Esp8266

Pokušavao sam spojiti svoj MAX7219 LED ekran na MQTT server i primiti tekst od MQTT pretplate za prikaz.

ali nisam dobio odgovarajući kod na internetu, pa sam počeo graditi vlastiti …

a rezultat je sasvim dobar …

  • možete prikazati bilo koji tekst na LED ekranu
  • možete podesiti intenzitet prikaza
  • možete postaviti brzinu pomicanja

Supplies

  1. Razvojna ploča esp8266. (u mom slučaju to je NODE MCU v1.0)
  2. MAX7219 LED matrični ekran.

Potreban softver:

  1. Arduino IDE.
  2. MQTT server. (moj slučaj komarac)

Potrebna biblioteka:

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

Korak 1: Postavite Arduino IDE za razvoj Esp8266

Postavite Arduino IDE za razvoj Esp8266
Postavite Arduino IDE za razvoj Esp8266

otvorite postavke Arduina, a zatim zalijepite donji URL u URL -ove upravitelja dodatnih ploča:

arduino.esp8266.com/stable/package_esp8266com_index.json

zatim Alati> Ploče> Upravitelj ploča i potražite esp8266 te ga instalirajte.

sada je vaš Arduino ide spreman za razvoj esp8266.

Korak 2: Preuzmite vanjske biblioteke

sada nam trebaju neke biblioteke za MAX7219 i MQTT Client.

preuzmimo i postavimo biblioteke

idite na Sketch> Include Library> Manage Libraries na Arduino IDE

i potražite EspMQTTClient i kliknite Instaliraj

Napomena: Instalirajte sve zavisne biblioteke, važno je

Ponovo potražite MD_MAX72xx i kliknite Instaliraj

Korak 3: Odmah napišite neki kod

Sada zalijepite donji kod

#include

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // broj vaših uređaja #define CLK_PIN D5 // ili SCK #define DATA_PIN D7 // ili MOSI #define CS_PIN D4 // ili SS // možete postaviti na bilo koji pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // promijeni prema tipu 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; // zadano kašnjenje pomicanja uint8_t INTENSITY = 5; // zadani intenzitet 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čko nabrojanje {S_IDLE statički char *p; static uint16_t curLen, showLen; statički 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; break; slučaj 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; } break; slučaj S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // pomerajte se - povratni poziv će učitati sve podatke prevTime = millis (); // polazište za sljedeći put}} 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, "Smart Display"); } void onConnectionEstablished () {// Tema pretplate na MQTT za prikaz teksta client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// Tema pretplate na MQTT za kontrolu intenziteta prikaza

client.subscribe ("leddisplay/intenzitet", (const niz i korisni teret) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Tema pretplate na MQTT za kontrolu brzine pomicanja ekrana client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Za detaljne informacije, pogledajte ovo spremište

github.com/souravj96/max7219-mqtt-esp8266

Korak 4: Dijagram kola

Dijagram kola
Dijagram kola

povežite zaslon MAX7219 s NODE MCU

Korak 5: Otpremite kôd na Esp8266

Otpremite kôd na Esp8266
Otpremite kôd na Esp8266

sada odaberite ispravnu vrstu ploče i serijski port, a zatim pritisnite upload.

Korak 6: Sve testirajte

ako sve prođe kako treba, vaš esp8266 će biti spojen na vaš MQTT server.

sada, ako će nešto biti objavljeno na leddisplay/tekstualnoj temi koja će biti prikazana.

{

tema: "leddisplay/text", korisni teret: "vaša poruka ovdje"}

ako želite postaviti intenzitet prikaza

{

tema: "leddisplay/intenzitet", korisni teret: "2" // max je 15 i min 0}

ako želite postaviti brzinu pomicanja zaslona

{

tema: "leddisplay/scroll", korisni teret: "100" // max je 255 i min 0}

Sretno kodiranje

Preporučuje se: