Оглавление:

Светодиодная матрица MAX7219 MQTT с использованием Esp8266: 6 шагов
Светодиодная матрица MAX7219 MQTT с использованием Esp8266: 6 шагов

Видео: Светодиодная матрица MAX7219 MQTT с использованием Esp8266: 6 шагов

Видео: Светодиодная матрица MAX7219 MQTT с использованием Esp8266: 6 шагов
Видео: DIY WiFi Clock Informer on MAX7219 and ESP8266 / WiFi часы информер на MAX7219 и ESP8266 2024, Ноябрь
Anonim
Светодиодная матрица MAX7219 MQTT с использованием Esp8266
Светодиодная матрица MAX7219 MQTT с использованием Esp8266

Я пытался подключить свой светодиодный дисплей MAX7219 к серверу MQTT и получить текст из подписки MQTT для отображения.

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

и результат получается неплохой …

  • вы можете отображать любой текст на светодиодном дисплее
  • вы можете настроить яркость дисплея
  • вы можете установить скорость прокрутки

Запасы

  1. Плата разработки esp8266. (в моем случае это NODE MCU v1.0)
  2. Светодиодный матричный дисплей MAX7219.

Необходимое программное обеспечение:

  1. Arduino IDE.
  2. Сервер MQTT. (мой случай Москитто)

Требуется библиотека:

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

Шаг 1. Настройте IDE Arduino для разработки Esp8266

Настройка Arduino IDE для разработки Esp8266
Настройка Arduino IDE для разработки Esp8266

откройте настройки Arduino, затем вставьте приведенный ниже URL-адрес в URL-адреса диспетчера дополнительных плат:

arduino.esp8266.com/stable/package_esp8266com_index.json

затем Инструменты> Платы> Диспетчер плат, найдите esp8266 и установите его.

Теперь ваш Arduino ide готов к разработке esp8266.

Шаг 2. Загрузите внешние библиотеки

теперь нам нужны библиотеки для MAX7219 и MQTT Client.

давайте скачаем и настроим библиотеки

перейдите в Sketch> Включить библиотеку> Управление библиотеками в 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 // вы можете установить к любому выводу #define 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_IDLE, S_NEXT_ACE_CHAR_CH, S_SHLE_CHAR_CH, S_SHLE_CH, состояние static char * p; static uint16_t curLen, showLen; статический uint8_t cBuf [8]; uint8_t colData = 0; переключатель (состояние) {case S_IDLE: p = curMessage; если (newMessageAvailable) {strcpy (curMessage, newMessage); newMessageAvailable = false; } состояние = S_NEXT_CHAR; перерыв; case S_NEXT_CHAR: if (* p == '\ 0') state = S_IDLE; иначе {showLen = mx.getChar (* p ++, sizeof (cBuf) / sizeof (cBuf [0]), cBuf); curLen = 0; состояние = S_SHOW_CHAR; } перерыв; case S_SHOW_CHAR: colData = cBuf [curLen ++]; если (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] = новое сообщение [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 & payload) {mx.control (MD_MAX72XX:: INTENSITY, payload.toInt ());}); // Тема подписки MQTT для управления скоростью прокрутки дисплея client.subscribe ("leddisplay / scroll", (const String & payload) {SCROLL_DELAY = payload.toInt ();}); } недействительный цикл () {client.loop (); scrollText (); }

Для получения подробной информации обратитесь к этому репозиторию

github.com/souravj96/max7219-mqtt-esp8266

Шаг 4: Принципиальная схема

Принципиальная электрическая схема
Принципиальная электрическая схема

подключить дисплей MAX7219 к NODE MCU

Шаг 5. Загрузите код в Esp8266

Загрузить код в Esp8266
Загрузить код в Esp8266

Теперь выберите правильный тип платы и последовательный порт, затем нажмите «Загрузить».

Шаг 6. Протестируйте все

если все пойдет правильно, ваш esp8266 будет подключен к вашему серверу MQTT.

теперь, если что-нибудь будет опубликовано на leddisplay / text теме, которая будет отображаться.

{

topic: "leddisplay / text", payload: "ваше сообщение здесь"}

если вы хотите установить интенсивность отображения

{

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

если вы хотите установить скорость прокрутки дисплея

{

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

Удачного кодирования

Рекомендуемые: