MAX7219 LED մատրից MQTT, օգտագործելով Esp8266: 6 քայլ
MAX7219 LED մատրից MQTT, օգտագործելով Esp8266: 6 քայլ
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}

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

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