Բովանդակություն:

MAX7219 LED մատրից MQTT, օգտագործելով Esp8266: 6 քայլ
MAX7219 LED մատրից MQTT, օգտագործելով Esp8266: 6 քայլ

Video: MAX7219 LED մատրից MQTT, օգտագործելով Esp8266: 6 քայլ

Video: MAX7219 LED մատրից MQTT, օգտագործելով Esp8266: 6 քայլ
Video: The Eyes test - Led Matrix 32x8 MAX7219 with Arduino 2024, Նոյեմբեր
Anonim
MAX7219 LED մատրից MQTT, օգտագործելով Esp8266
MAX7219 LED մատրից MQTT, օգտագործելով Esp8266

Ես փորձում էի իմ MAX7219 LED էկրանը միացնել MQTT սերվերին և ցուցադրել տեքստ MQTT բաժանորդագրությունից:

բայց ես ինտերնետում ոչ մի համապատասխան կոդ չեմ ստացել, ուստի սկսեցի կառուցել իմ սեփականը…

և արդյունքը բավականին լավ է ստացվում…

  • կարող եք ցանկացած տեքստ ցուցադրել led էկրանին
  • կարող եք կարգավորել էկրանի ինտենսիվությունը
  • կարող եք սահմանել ոլորման արագությունը

Պարագաներ

  1. Esp8266 զարգացման տախտակ: (իմ դեպքում դա NODE MCU v1.0 է)
  2. MAX7219 LED մատրիցային էկրան:

Պահանջվող ծրագրակազմ

  1. Arduino IDE:
  2. MQTT սերվեր: (իմ գործը Mosquitto)

Պահանջվում է գրադարան

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

Քայլ 1: Կարգավորեք Arduino IDE- ն Esp8266 զարգացման համար

Կարգավորեք Arduino IDE- ն Esp8266 զարգացման համար
Կարգավորեք Arduino IDE- ն Esp8266 զարգացման համար

բացեք Arduino- ի նախապատվությունները, այնուհետև տեղադրեք ստորև նշված URL- ը Լրացուցիչ խորհուրդների մենեջերի URL- ներում.

arduino.esp8266.com/stable/package_esp8266com_index.json

ապա Գործիքներ> Տախտակներ> Տախտակների կառավարիչ և որոնեք esp8266 և տեղադրեք այն:

այժմ ձեր Arduino գաղափարն արդեն պատրաստ է esp8266 զարգացման համար:

Քայլ 2: Ներբեռնեք արտաքին գրադարաններ

այժմ մեզ անհրաժեշտ են գրադարաններ MAX7219- ի և MQTT Client- ի համար:

եկեք ներբեռնենք և ստեղծենք գրադարանները

նավարկեք ուրվագիծ> Ներառել գրադարանը> Կառավարեք գրադարանները Arduino IDE- ում

և որոնեք EspMQTTClient և կտտացրեք Տեղադրեք

Նշում. Տեղադրեք բոլոր կախված գրադարանները, դա կարևոր է

Կրկին որոնեք MD_MAX72xx և կտտացրեք Տեղադրեք

Քայլ 3: Այժմ գրեք մի քանի կոդ

Այժմ տեղադրեք ստորև նշված կոդը

#ներառում

#ներառել #ներառել #ներառել «EspMQTTClient.h» #սահմանել MAX_DEVICES 4 // ձեր սարքի քանակը #սահմանել CLK_PIN D5 // կամ SCK #սահմանել DATA_PIN D7 // կամ MOSI #սահմանել CS_PIN D4 // կամ SS // կարող եք սահմանել այն ցանկացած քորոց #սահմանել HARDWARE_TYPE MD_MAX72XX:: PAROLA_HW // փոխել ըստ ձեր ցուցադրման տիպի 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; // լռելյայն ոլորման հետաձգում uint8_t INTENSITY = 5; // լռելյայն ինտենսիվության char curMessage [MESG_SIZE]; char newMessage [MESG_SIZE]; bool newMessageAvailable = կեղծ; void scrollDataSink (uint8_t dev, MD_MAX72XX:: transformType_t t, uint8_t col) {} uint8_t scrollDataSource (uint8_t dev, MD_MAX72XX:: transformType_t t) {ստատիկ enum {S_IDLE, S_NEXT_CHAR, S = SPE, CHAR = SAR, SIDER, CHAR = SACH, CHAR =, ստատիկ նշան *p; ստատիկ uint16_t curLen, showLen; ստատիկ uint8_t cBuf [8]; uint8_t colData = 0; անջատիչ (վիճակ) {case S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = կեղծ; } վիճակ = S_NEXT_CHAR; ընդմիջում; գործ S_NEXT_CHAR: եթե (*p == '\ 0') վիճակ = S_IDLE; else {showLen = mx.getChar (*p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; վիճակ = S_SHOW_CHAR; } ընդմիջում; գործ S_SHOW_CHAR: colData = cBuf [curLen ++]; if (curLen = SCROLL_DELAY) {mx.transform (MD_MAX72XX:: TSL); // ոլորել երկայնքով - հետադարձ զանգը կբեռնի բոլոր տվյալները prevTime = millis (); // հաջորդ կետի ելակետ}} void setup () {Serial.begin (115200); mx. սկսել (); mx.control (MD_MAX72XX:: ՄԻENՈՈԹՅՈ,Ն, ԻՆՏԵՆITYԻՈԹՅՈՆ); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, «Smart Display»); } void onConnectionEstablished () {// MQTT բաժանորդագրման թեման ցուցադրման տեքստային հաճախորդի համար: բաժանորդագրվեք ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT բաժանորդագրման թեմա ցուցադրման ինտենսիվության վերահսկման համար

client.subscribe ("leddisplay/intensity", (const String & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // MQTT բաժանորդագրման թեմա ցուցադրման ոլորման արագության կառավարման հաճախորդի համար: բաժանորդագրվեք ("leddisplay/ոլորել", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } void loop () {client.loop (); scrollText (); }

Մանրամասն տեղեկությունների համար տե՛ս այս շտեմարանը

github.com/souravj96/max7219-mqtt-esp8266

Քայլ 4: Շղթայի դիագրամ

Շղթայի դիագրամ
Շղթայի դիագրամ

միացրեք MAX7219 էկրանը NODE MCU- ով

Քայլ 5: Վերբեռնեք կոդը Esp8266- ում

Վերբեռնեք կոդը Esp8266- ում
Վերբեռնեք կոդը Esp8266- ում

այժմ ընտրեք ձեր տախտակի ճիշտ տեսակը և սերիայի նավահանգիստը, այնուհետև կտտացրեք վերբեռնումը:

Քայլ 6: Փորձեք ամեն ինչ

եթե ամեն ինչ ճիշտ է ընթանում, ապա ձեր esp8266- ը միացված կլինի ձեր MQTT սերվերին:

այժմ, եթե որևէ բան կհրապարակվի leddisplay/տեքստային թեմայով, որը կցուցադրվի:

{

թեմա ՝ «leddisplay/text», բեռնվածություն ՝ «քո հաղորդագրությունն այստեղ է»}

եթե ցանկանում եք սահմանել ցուցադրման ինտենսիվությունը

{

թեմա ՝ «leddisplay/ինտենսիվություն», բեռնվածություն ՝ «2» // առավելագույնը 15 և րոպե 0}

եթե ցանկանում եք սահմանել ոլորման արագությունը

{

թեմա ՝ «leddisplay/ոլորել», բեռնվածություն ՝ «100» // max 255 և min 0}

Երջանիկ կոդավորում

Խորհուրդ ենք տալիս: