Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Pokoušel jsem se připojit svůj LED displej MAX7219 k serveru MQTT a obdržet text z předplatného MQTT k zobrazení.
ale na internetu jsem nedostal žádný vhodný kód, a tak jsem začal budovat vlastní…
a výsledek se dostaví docela dobře …
- na LED displeji můžete zobrazit libovolný text
- můžete upravit intenzitu zobrazení
- můžete nastavit rychlost posouvání
Zásoby
- Vývojová deska esp8266. (můj případ je NODE MCU v1.0)
- Maticový displej MAX7219 LED.
Potřebný software:
- Arduino IDE.
- Server MQTT. (můj případ Mosquitto)
Požadovaná knihovna:
- ESP8266WiFi.h
- MD_MAX72xx.h
- EspMQTTClient.h
Krok 1: Nastavení Arduino IDE pro vývoj Esp8266
otevřete předvolby Arduina a poté vložte níže uvedenou adresu URL do adres URL dalších správců desek:
arduino.esp8266.com/stable/package_esp8266com_index.json
poté Nástroje> Desky> Správce desek a vyhledejte esp8266 a nainstalujte jej.
nyní je váš Arduino ide připraven k vývoji esp8266.
Krok 2: Stažení externích knihoven
nyní potřebujeme nějaké knihovny pro MAX7219 a klienta MQTT.
stáhneme a nastavíme knihovny
přejděte na Sketch> Include Library> Manage Libraries on Arduino IDE
a vyhledejte EspMQTTClient a klikněte na Instalovat
Poznámka: Nainstalujte si všechny závislé knihovny, je to důležité
Znovu vyhledejte MD_MAX72xx a klikněte na Instalovat
Krok 3: Napište nějaký kód hned
Nyní vložte níže uvedený kód
#zahrnout
#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // počet vašich zařízení #define CLK_PIN D5 // nebo SCK #define DATA_PIN D7 // nebo MOSI #define CS_PIN D4 // nebo SS // můžete nastavit na jakýkoli pin #define HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // změna podle typu zobrazení MD_MAX72XX mx = MD_MAX72XX (HARDWARE_TYPE, CS_PIN, MAX_DEVICES); konst uint8_t MESG_SIZE = 255; konst uint8_t CHAR_SPACING = 1; uint8_t SCROLL_DELAY = 75; // výchozí zpoždění posouvání uint8_t INTENSITY = 5; // výchozí intenzita 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_SHSP_, S_SHOW_ statický znak *p; statický uint16_t curLen, showLen; statický uint8_t cBuf [8]; uint8_t colData = 0; switch (state) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } stav = S_NEXT_CHAR; přestávka; případ S_NEXT_CHAR: if (*p == '\ 0') state = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; stav = S_SHOW_CHAR; } přestávka; případ S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // posouvání podél - zpětné volání načte všechna data prevTime = millis (); // výchozí bod pro příště}} 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 () {// téma předplatného MQTT pro textový text client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});
// Téma předplatného MQTT pro ovládání intenzity zobrazení
client.subscribe ("leddisplay/intenzita", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Téma předplatného MQTT pro zobrazení rychlosti posouvání klienta client.subscribe ("leddisplay/scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }
Podrobné informace najdete v tomto úložišti
github.com/souravj96/max7219-mqtt-esp8266
Krok 4: Schéma zapojení
propojte displej MAX7219 s NODE MCU
Krok 5: Nahrajte kód na Esp8266
nyní vyberte správný typ desky a sériový port a poté klikněte na nahrát.
Krok 6: Vše otestujte
pokud je vše v pořádku, bude váš esp8266 připojen k vašemu serveru MQTT.
nyní, pokud bude něco publikováno na leddisplay/textové téma, které se zobrazí.
{
téma: "leddisplay/text", užitečné zatížení: "vaše zpráva zde"}
pokud chcete nastavit intenzitu zobrazení
{
téma: "leddisplay/intenzita", užitečné zatížení: "2" // max je 15 a min 0}
pokud chcete nastavit rychlost posouvání displeje
{
téma: "leddisplay/scroll", užitečné zatížení: "100" // max je 255 a min 0}
Šťastné kódování