Съдържание:

MAX7219 LED Matrix MQTT Използване на Esp8266: 6 стъпки
MAX7219 LED Matrix MQTT Използване на Esp8266: 6 стъпки

Видео: MAX7219 LED Matrix MQTT Използване на Esp8266: 6 стъпки

Видео: MAX7219 LED Matrix MQTT Използване на Esp8266: 6 стъпки
Видео: # 132 Мне нужна ваша помощь! 2024, Ноември
Anonim
MAX7219 LED Matrix MQTT Използвайки Esp8266
MAX7219 LED Matrix MQTT Използвайки Esp8266

Опитвах се да свържа моя MAX7219 LED дисплей към MQTT сървър и да получа текст от абонамента за MQTT за показване.

но не получих подходящ код в интернет, затова започнах да изграждам свой собствен …

и резултатът идва доста добре …

  • можете да показвате всеки текст на светодиоден дисплей
  • можете да регулирате интензивността на дисплея
  • можете да зададете скоростта на превъртане

Консумативи

  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 адресите на Ad Manager Boards:

arduino.esp8266.com/stable/package_esp8266com_index.json

след това Инструменти> Табла> Boards Manager и потърсете esp8266 и го инсталирайте.

сега вашият Arduino ide е готов за разработка на esp8266.

Стъпка 2: Изтеглете външни библиотеки

сега имаме нужда от някои библиотеки за MAX7219 и MQTT клиент.

нека изтеглим и настроим библиотеките

отворете Sketch> Include Library> Manage Libraries на Arduino IDE

и потърсете EspMQTTClient и щракнете върху Инсталиране

NB: Инсталирайте всички зависими библиотеки, това е важно

Отново потърсете MD_MAX72xx и щракнете върху Инсталиране

Стъпка 3: Напишете малко код сега

Сега поставете кода по -долу

#включва

#include #include #include "EspMQTTClient.h" #define MAX_DEVICES 4 // броя на вашето устройство #define CLK_PIN D5 // или SCK #define DATA_PIN D7 // или MOSI #define 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 = 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) {статично изброяване {S_IDLES статичен char *p; статичен uint16_t curLen, showLen; статичен uint8_t cBuf [8]; uint8_t colData = 0; ключ (състояние) {случай S_IDLE: p = curMessage; if (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } състояние = S_NEXT_CHAR; прекъсване; случай S_NEXT_CHAR: if (*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.begin (); mx.control (MD_MAX72XX:: ИНТЕНЗИВНОСТ, ИНТЕНСИВНОСТ); mx.setShiftDataInCallback (scrollDataSource); mx.setShiftDataOutCallback (scrollDataSink); curMessage [0] = newMessage [0] = '\ 0'; sprintf (curMessage, "Интелигентен дисплей"); } void onConnectionEstablished () {// MQTT абонаментна тема за показване на текст client.subscribe ("leddisplay/text", (const String & payload) {sprintf (curMessage, payload.c_str ());});

// MQTT абонаментна тема за контрол на интензитета на дисплея

client.subscribe ("leddisplay/интензивност", (const String & полезен товар) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // тема за абонамент за MQTT за контрол на скоростта на превъртане на дисплея client.subscribe ("leddisplay/scroll", (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/текст", полезен товар: "вашето съобщение тук"}

ако искате да зададете интензитета на дисплея

{

тема: "leddisplay/интензивност", полезен товар: "2" // макс е 15 и мин 0}

ако искате да зададете скоростта на превъртане на дисплея

{

тема: "leddisplay/scroll", полезен товар: "100" // макс е 255 и мин 0}

Честито кодиране

Препоръчано: