- Бегущая строка на NodeMCU с управлением через WiFi
- Подключение светодиодной матрицы к NodeMCU
- Программа для управления MAX7219 на NodeMCU
- Веб-сервер на NodeMCU для управления светодиодной матрицей
- Бегущая строка на русском языке
- Управление бегущей строкой с телефона Wi-Fi
- Бегущая строка на NodeMCU с управлением через WiFi
- Подключение светодиодной матрицы к NodeMCU
- Программа для управления MAX7219 на NodeMCU
- Веб-сервер на NodeMCU для управления светодиодной матрицей
- Бегущая строка на русском языке
- Модуль WiFi для бегущей строки и экрана
- Похожие товары
- Светодиодная бегущая строка 165 на 37 см., белая
- Светодиодная бегущая строка 325 на 53 см., белая
- Светодиодная бегущая строка 260 на 40 см., красная
Бегущая строка на NodeMCU с управлением через WiFi
Еще один интересный и даже полезный проект на NodeMCU — бегущая строка с WiFi управлением. Наверняка, все из нас каждый день видят подобные устройства на улицах города. К примеру, бегущая строка широко применяется на транспорте для вывода номера маршрута, следующей остановки и навязчивой рекламы всякой всячины.
Типичная бегущая строка представляет собой светодиодную матрицу со схемой управления разверткой и микроконтроллером на борту. Текст, ползущий по этой матрице, может храниться локально, либо обновляться динамически через WiFi или GSM.
Разумеется, имея такую мощную платформу как NodeMCU (или любой другой ESP8266), бегущую строку можно сделать в домашних условиях. Установить её рационально где-нибудь в публичном месте, например в школе. Через такое информационное табло будет удобно сообщать внутренние школьные новости, температуру за окном, или даже фамилии отличников!
В нашей лаборатории мы установили бегущую строку в окне на первом этаже. С помощью этого IoT устройства мы поздравляли всех прохожих с Новым Годом и рождеством 🙂
Подключение светодиодной матрицы к NodeMCU
Будем работать с готовыми модулями матрицы под управлением микросхемы MAX7219. Подробно о работе таких модулей мы уже писали в одном из уроков для платформы Ардуино — Ардуино: светодиодная матрица с драйвером max7219.
Вкратце, у каждого такого модуля есть 10 контактов. Пять с одной стороны и столько же с другой. Это сделано для того, чтобы модули можно было соединять друг за другом в цепочку. На входе имеем:
Допустим, мы хотим сделать бегущую строку из четырёх таких модулей. Берем первый модуль и подключаем его к NodeMCU согласно схеме:
Светодиодная матрица 8×8 с MAX7219 | VCC | GND | DIN | CS | CLK |
NodeMCU | +5V | GND | D7 | D8 | D5 |
Затем, к первому модулю подключаем остальные три:
Внешний вид стенда:
Вместо четырех отдельных модулей имеет смысл использовать готовую сборку, например, такую:
Программа для управления MAX7219 на NodeMCU
Попробуем запустить бегущую строку на матрицах, пока без возможности удаленно подключаться к NodeMCU. То есть бегущая строка будет крутить какой-то статичный текст.
По сути, это код из урока про матрицу на Ардуино. Единственное, что изменилось — это размер цепочки. Здесь мы используем не шесть матриц, а только четыре.
#include #include #include Max72xxPanel matrix = Max72xxPanel(D8, 4, 1); unsigned long ticker_next; String tape = "Hello from RobotClass!"; int spacer = 1; int width = 5 + spacer; void setup(void) < matrix.setIntensity(7); >void handleTicker()< for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) < matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; while ( x + width - spacer >= 0 && letter >= 0 ) < if ( letter < tape.length() ) < matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); >letter--; x -= width; > matrix.write(); delay(50); > > void loop(void)
Подаем питание и на матрице начинает двигаться бегущая строка с текстом «Hello from RobotClass!»
Веб-сервер на NodeMCU для управления светодиодной матрицей
Теперь добавим в программу веб-сервер, который будет показывать одну единственную HTML страницу с полем для ввода текста бегущей строки и с кнопкой.
#include #include #include #include #include #include const char* ssid = "ESP"; // запускаем WiFi точку ESP ESP8266WebServer server(80); // запускаем сервер на порту 80 Max72xxPanel matrix = Max72xxPanel(D8, 4, 1); unsigned long ticker_next; String tape = "RobotClass"; int spacer = 1; int width = 5 + spacer; // HTML страница index.html const char page[] = "" "" "" "" "" ""; // функция вызывается, когда клиент жмет кнопку void handleSubmit() < tape = server.arg("text"); server.send(200, "text/html", page); >void handleRoot() < if (server.hasArg("text")) < handleSubmit(); >else < server.send(200, "text/html", page); >> void setup(void) < delay(1000); WiFi.softAP(ssid); server.on("/", handleRoot); server.begin(); matrix.setIntensity(7); >void handleTicker()< for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) < matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; // центровка по вертикали while ( x + width - spacer >= 0 && letter >= 0 ) < if ( letter < tape.length() ) < matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); server.handleClient(); >letter--; x -= width; > matrix.write(); delay(50); > > void loop(void)
Загружаем программу на Node MCU и подаем питание. По-умолчанию, бегущая строка будет крутить текст «RobotClass». Чтобы его изменить, необходимо подключиться к WiFi точке «ESP» и зайти через браузер по адресу: 192.168.4.1
В ответ появится страница с полем для ввода текста бегущей строки и кнопкой «Set text». Вводим в поле новый текст, жмем кнопку и смотрим на бегущую строку!
Your browser does not support the video tag.
Бегущая строка на русском языке
В текущем виде наш аппарат не поддерживает русский язык. Если попытаться ввести текст на русском, на матрице вместо букв появятся utf8 коды.
Чтобы это исправить, нам потребуется дополнительная функция utf2rus. Кроме этого, добавим в программу пароль для WiFi точки.
#include #include #include #include #include #include const char* ssid = "ESP"; const char* pwd = "makemyday"; // пароль для WiFi точки ESP8266WebServer server(80); Max72xxPanel matrix = Max72xxPanel(D8, 4, 1); unsigned long ticker_next; String tape = "RobotClass.ru"; int spacer = 1; int width = 5 + spacer; const char page[] = "" "" "" "" "" "" "" ""; String utf8rus(String source)< int i,k; String target; unsigned char n; char m[2] = < '0', '\0' >; k = source.length(); i = 0; while (i < k) < n = source[i]; i++; if (n >= 0xC0) < switch (n) < case 0xD0: < n = source[i]; i++; if (n == 0x81) < n = 0xA8; break; >if (n >= 0x90 && n case 0xD1: < n = source[i]; i++; if (n == 0x91) < n = 0xB7; break; >if (n >= 0x80 && n > > // switch m[0] = n; target = target + String(m); > return target; > void handleSubmit() < tape = utf8rus(server.arg("text")); server.send(200, "text/html", page); >void handleRoot() < if (server.hasArg("text")) < handleSubmit(); >else < server.send(200, "text/html", page); >> void setup(void) < tape = utf8rus("Учим электронику на RobotClass.ru"); delay(1000); WiFi.softAP(ssid, pwd); server.on("/", handleRoot); server.begin(); matrix.setIntensity(7); >void handleTicker()< for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) < matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; while ( x + width - spacer >= 0 && letter >= 0 ) < if ( letter < tape.length() ) < matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); server.handleClient(); >letter--; x -= width; > matrix.write(); delay(50); > > void loop(void)
Управление бегущей строкой с телефона Wi-Fi
После установки можно не заходить в приложение, так как сначала необходимо настроить Wi-Fi соединение.
подтверждаем изменения нажимая зеленую галку. В предварительном окне наша фраза должна побежать справа налево. Теперь можно нажать на синюю кнопку внизу Отправить. Изменения должны произойти на самой бегущей строке.
Еще будет полезно зайти в настройки (но не обязательно!). Если же ваша бегущая строка уже начала вас слушаться, то лучше сюда не заходить — значит у вас всё настроилось автоматически, как и полагается. Но если вам все же необходимо или любопытно зайти в настройки экрана — для этого нажимаем в правом верхнем углу шестеренку (Настройки). Затем нажимаем на верхнюю строчку — Настройки параметров
в появившемся окне мы можем ввести вручную ширину и высоту бегущей строки в пикселях (количество светодиодов), а также иногда здесь выставляют вручную параметры светодиодных модулей — Лучше это сделать по рекомендации мастера, хотя не переживайте, пробуйте, строку вы таким образом не испортите, а если и собьёте настройки, всегда можно сбросить их на По умолчанию и начать всё сначала. После изменений подтвердите кнопкой внизу Ручное подтверждение.
Для самых начинающих этого вполне достаточно. Предлагаю еще потратить 5 минут на подкрепление новых знаний и посмотреть видеоинструкцию. После чего у вас отпадут все вопросы.
Бегущая строка на NodeMCU с управлением через WiFi
Еще один интересный и даже полезный проект на NodeMCU — бегущая строка с WiFi управлением. Наверняка, все из нас каждый день видят подобные устройства на улицах города. К примеру, бегущая строка широко применяется на транспорте для вывода номера маршрута, следующей остановки и навязчивой рекламы всякой всячины.
Типичная бегущая строка представляет собой светодиодную матрицу со схемой управления разверткой и микроконтроллером на борту. Текст, ползущий по этой матрице, может храниться локально, либо обновляться динамически через WiFi или GSM.
Разумеется, имея такую мощную платформу как NodeMCU (или любой другой ESP8266), бегущую строку можно сделать в домашних условиях. Установить её рационально где-нибудь в публичном месте, например в школе. Через такое информационное табло будет удобно сообщать внутренние школьные новости, температуру за окном, или даже фамилии отличников!
В нашей лаборатории мы установили бегущую строку в окне на первом этаже. С помощью этого IoT устройства мы поздравляли всех прохожих с Новым Годом и рождеством 🙂
Подключение светодиодной матрицы к NodeMCU
Будем работать с готовыми модулями матрицы под управлением микросхемы MAX7219. Подробно о работе таких модулей мы уже писали в одном из уроков для платформы Ардуино — Ардуино: светодиодная матрица с драйвером max7219.
Вкратце, у каждого такого модуля есть 10 контактов. Пять с одной стороны и столько же с другой. Это сделано для того, чтобы модули можно было соединять друг за другом в цепочку. На входе имеем:
Допустим, мы хотим сделать бегущую строку из четырёх таких модулей. Берем первый модуль и подключаем его к NodeMCU согласно схеме:
Светодиодная матрица 8×8 с MAX7219 | VCC | GND | DIN | CS | CLK |
NodeMCU | +5V | GND | D7 | D8 | D5 |
Затем, к первому модулю подключаем остальные три:
Внешний вид стенда:
Вместо четырех отдельных модулей имеет смысл использовать готовую сборку, например, такую:
Программа для управления MAX7219 на NodeMCU
Попробуем запустить бегущую строку на матрицах, пока без возможности удаленно подключаться к NodeMCU. То есть бегущая строка будет крутить какой-то статичный текст.
По сути, это код из урока про матрицу на Ардуино. Единственное, что изменилось — это размер цепочки. Здесь мы используем не шесть матриц, а только четыре.
#include #include #include Max72xxPanel matrix = Max72xxPanel(D8, 4, 1); unsigned long ticker_next; String tape = "Hello from RobotClass!"; int spacer = 1; int width = 5 + spacer; void setup(void) < matrix.setIntensity(7); >void handleTicker()< for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) < matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; while ( x + width - spacer >= 0 && letter >= 0 ) < if ( letter < tape.length() ) < matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); >letter--; x -= width; > matrix.write(); delay(50); > > void loop(void)
Подаем питание и на матрице начинает двигаться бегущая строка с текстом «Hello from RobotClass!»
Веб-сервер на NodeMCU для управления светодиодной матрицей
Теперь добавим в программу веб-сервер, который будет показывать одну единственную HTML страницу с полем для ввода текста бегущей строки и с кнопкой.
#include #include #include #include #include #include const char* ssid = "ESP"; // запускаем WiFi точку ESP ESP8266WebServer server(80); // запускаем сервер на порту 80 Max72xxPanel matrix = Max72xxPanel(D8, 4, 1); unsigned long ticker_next; String tape = "RobotClass"; int spacer = 1; int width = 5 + spacer; // HTML страница index.html const char page[] = "" "" "" "" "" ""; // функция вызывается, когда клиент жмет кнопку void handleSubmit() < tape = server.arg("text"); server.send(200, "text/html", page); >void handleRoot() < if (server.hasArg("text")) < handleSubmit(); >else < server.send(200, "text/html", page); >> void setup(void) < delay(1000); WiFi.softAP(ssid); server.on("/", handleRoot); server.begin(); matrix.setIntensity(7); >void handleTicker()< for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) < matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; // центровка по вертикали while ( x + width - spacer >= 0 && letter >= 0 ) < if ( letter < tape.length() ) < matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); server.handleClient(); >letter--; x -= width; > matrix.write(); delay(50); > > void loop(void)
Загружаем программу на Node MCU и подаем питание. По-умолчанию, бегущая строка будет крутить текст «RobotClass». Чтобы его изменить, необходимо подключиться к WiFi точке «ESP» и зайти через браузер по адресу: 192.168.4.1
В ответ появится страница с полем для ввода текста бегущей строки и кнопкой «Set text». Вводим в поле новый текст, жмем кнопку и смотрим на бегущую строку!
Your browser does not support the video tag.
Бегущая строка на русском языке
В текущем виде наш аппарат не поддерживает русский язык. Если попытаться ввести текст на русском, на матрице вместо букв появятся utf8 коды.
Чтобы это исправить, нам потребуется дополнительная функция utf2rus. Кроме этого, добавим в программу пароль для WiFi точки.
#include #include #include #include #include #include const char* ssid = "ESP"; const char* pwd = "makemyday"; // пароль для WiFi точки ESP8266WebServer server(80); Max72xxPanel matrix = Max72xxPanel(D8, 4, 1); unsigned long ticker_next; String tape = "RobotClass.ru"; int spacer = 1; int width = 5 + spacer; const char page[] = "" "" "" "" "" "" "" ""; String utf8rus(String source)< int i,k; String target; unsigned char n; char m[2] = < '0', '\0' >; k = source.length(); i = 0; while (i < k) < n = source[i]; i++; if (n >= 0xC0) < switch (n) < case 0xD0: < n = source[i]; i++; if (n == 0x81) < n = 0xA8; break; >if (n >= 0x90 && n case 0xD1: < n = source[i]; i++; if (n == 0x91) < n = 0xB7; break; >if (n >= 0x80 && n > > // switch m[0] = n; target = target + String(m); > return target; > void handleSubmit() < tape = utf8rus(server.arg("text")); server.send(200, "text/html", page); >void handleRoot() < if (server.hasArg("text")) < handleSubmit(); >else < server.send(200, "text/html", page); >> void setup(void) < tape = utf8rus("Учим электронику на RobotClass.ru"); delay(1000); WiFi.softAP(ssid, pwd); server.on("/", handleRoot); server.begin(); matrix.setIntensity(7); >void handleTicker()< for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) < matrix.fillScreen(LOW); int letter = i / width; int x = (matrix.width() - 1) - i % width; int y = (matrix.height() - 8) / 2; while ( x + width - spacer >= 0 && letter >= 0 ) < if ( letter < tape.length() ) < matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1); server.handleClient(); >letter--; x -= width; > matrix.write(); delay(50); > > void loop(void)
Модуль WiFi для бегущей строки и экрана
Модуль WiFi позволяет оперативно передавать данные с компьютера на экран или бегущую строку.
Беспроводная передача осуществляется на расстоянии от 20 метров (если есть помеха в виде стены) до 40-50 метров при прямой видимости.
Устройство обнаруживается как сеть WiFi, подключившись к которой выполняется передача данных.
WiFi для бегущей строки и экрана необходимо приобретать дополнительно, так как в стандартную комплектацию данный элемент не входит. В базовой версии для переноса данных с компьютера на табло необходимо использовать USB флешку. Всю дополнительную информацию можно получить у наших консультантов.
Обращаем Ваше внимание, что для RGB экранов высотой от 85 см., цена модуля от 4800 руб.
Похожие товары
Распродажа!
Светодиодная бегущая строка 165 на 37 см., белая
Распродажа!
Светодиодная бегущая строка 325 на 53 см., белая
Распродажа!
Светодиодная бегущая строка 260 на 40 см., красная
«Светодиодные-Строки.рф»
Телефон: +7(499)-677-21-47
Фактический адрес:
Москва, ул. Складочная, д. 1, стр. 7 (производство)