The Jerusalem PostTrump faces potential bipartisan congressional probe over Nvidia Chinese espionage scandal - reportPunchState police: Senate sets November 17 deadline for four statesDaily MaverickFrom COP31 to COP32 — climate talks cannot ignore the development crisisInquirerAbandoned motorcycle leads cops to judge’s slay suspectsSky TG24Manovra 2027, dal Superbonus alla sanità: i possibili emendamenti alla Legge di BilancioZDF heuteAktuelle Pressemitteilungen des ZDFسكاي نيوز عربيةالجيش الإسرائيلي يعلق على حادثة تسلل شخص للحدود الأردنية20 MinutenWilde Szene bei NFL-Spiel: «Schweizer»-Star bei Jubel verletzt7sur7Marche blanche en hommage à Pengo Bossio Wangi, tué dans l’attaque raciste de TrappesIl Fatto QuotidianoLivorno, il ritorno in campo di Regazzetti dopo il tumore: “La prossima settimana ha una seduta di chemio”RTP DesportoAlexandrina Cruz reeleita presidente do Rio AveХабрКошка-левша и правый усик пчелы. Что такое латеральность и зачем она животным
The Daily Newsstand · Free, Always
Sunday, November 15, 2026

[Перевод] Модули MAX7219 бывают двух ширин: я развёл свои платы, чтобы собрать панель WOPR без щелей

Translate

Готовый проект с MakerWorld выглядел простым: напечатать корпус, вставить двенадцать светодиодных матриц 8×8 на MAX7219, прошить скетч. Напечатанные детали вышли отлично, но для трёх модулей оказались коротковаты: в корпусе остался зазор 12 мм. Дальше выяснилось, что «одинаковые» модули с AliExpress и Amazon бывают двух ширин, что в объявлениях часто указана не та ширина, а у узких модулей, которые нашёл автор, дисплеи впаяны без панелек, и плата не держится в пазах. Закончилось всё собственными платами 32×32 мм и микросхемами, выпаянными из дешёвых модулей.

Светодиодная панель WOPR в стойке с оборудованием

Светодиодная панель WOPR в стойке с оборудованием

Панель WOPR неплохо закрывает пустое место в довольно пыльной стойке с оборудованием.

Прим. пер.: WOPR — суперкомпьютер NORAD из фильма «Военные игры» (WarGames, 1983) с длинными рядами мигающих лампочек на передней панели. Самодельные «панели WOPR» ставят в домашние серверные стойки как декоративную заглушку.

Проект должен был быть простым. У меня уже лежали двенадцать светодиодных матриц 8×8, были программа и микроконтроллер. Оставалось напечатать файл .3mf, вставить модули в детали, затянуть пару винтов и прошить программу. Простым проект не вышел совсем. Ниже — что пошло не так и как я всё-таки довёл дело до конца.

Первые попытки

Страница проекта WOPR на MakerWorld

Страница проекта WOPR на MakerWorld

Страница проекта WOPR на MakerWorld от Bambu Lab.

Я наткнулся на проект светодиодной панели WOPR на MakerWorld и подумал: «У меня есть 3D-принтер! У меня есть куча модулей на MAX7219! Делаем!»

Стол со всеми деталями в Bambu Studio

Стол со всеми деталями в Bambu Studio

Стол со всеми деталями для печати в Bambu Studio.

Я скачал модель и открыл её в Bambu Studio. Печать несложная: много поддержек, весь стол печатается примерно за 3,5 часа. Главная трудность в том, что детали доходят почти до краёв области печати. Возле вентилятора с левой стороны Bambu X1C деталь может плохо держаться на столе, но если это мешает, можно поднять температуру стола и снизить обороты вентилятора.

Напечатанные детали

Напечатанные детали

Готовые напечатанные детали.

Детали на фото выше. Получились отлично!

Щель между модулями в корпусе

Щель между модулями в корпусе

Ой! Что-то здесь не так.

Детали получились отлично, но, когда я вставил в них три модуля MAX7219 по четыре матрицы 8×8, оказалось, что детали коротковаты. Зазор — 12 мм. Что пошло не так? (Самих дисплеев на фото нет: к моменту съёмки я уже снял их для финальной сборки.)

Модуль шириной 128 мм сверху и 132 мм снизу

Модуль шириной 128 мм сверху и 132 мм снизу

Сверху модуль шириной 128 мм, снизу — 132 мм. Обратите внимание на зазоры между дисплеями на нижнем модуле.

Из комментариев к исходному проекту на MakerWorld я узнал, что модули на MAX7219 бывают двух ширин: 128 и 132 мм. У модулей шириной 132 мм между дисплеями зазор по 1 мм. Зазор мне был не нужен, так что не беда, закажу несколько модулей на 128 мм. Но и это пошло не по плану.

Модуль с панельками и модуль без панелек в напечатанном корпусе

Модуль с панельками и модуль без панелек в напечатанном корпусе

Сверху модуль с дисплеями на панельках, снизу — без панелек. Пазы в напечатанной детали удерживают верхний модуль. Нижний просто лежит на детали и выпадет, если поставить её вертикально.

Первая проблема: во многих объявлениях на Amazon и AliExpress ширина модулей указана как 128 мм, а на деле они 132 мм. Вторая: у тех модулей, которые я нашёл и которые действительно были шириной 128 мм, дисплеи впаяны без панелек, и такие модули не входили в пазы для печатной платы в напечатанных деталях.

На фото выше печатная плата модуля шириной 132 мм с панельками (сверху) входит в пазы. У модуля шириной 128 мм без панелек (снизу) плата может лишь лежать над пазом и выпадет, стоит модуль сдвинуть. Правый паз на каждом обведён жёлтым.

Модуль 132 мм с панельками слева и модуль 128 мм без панелек справа

Модуль 132 мм с панельками слева и модуль 128 мм без панелек справа

Слева модуль 132 мм с панельками, справа модуль 128 мм без панелек. Зазор между платой и дисплеем, который даёт панелька, решает всё: только с ним модуль входит в паз и держится в нём.

Оказалось, что зазор между дисплеями и печатной платой необходим, чтобы модуль вошёл в паз напечатанной детали, а есть он только у модулей с панельками. На фото выше белые ножки дисплеев на правом модуле не пускают плату в пазы.

Дисплеи с зазорами и неровно выставленные

Дисплеи с зазорами и неровно выставленные

Мало того что между матрицами 8×8 зазоры, так они ещё и стоят неровно.

Раздосадованный, я отредактировал STL, раздвинул каждую сторону на 6 мм, чтобы влезли модули шириной 132 мм, и перепечатал детали. Это сработало, но зазор в 1 мм между матрицами быстро начал меня раздражать, и я решил, что могу сделать лучше. Или не могу?

Цена MAX7219 на Digikey

Цена MAX7219 на Digikey

Ой. По 20 долларов за штуку. Это Digikey, но у Mouser и остальных цены примерно такие же.

Я рассудил, что схема и разводка платы достаточно простые, и я просто сделаю свои модули: шириной 128 мм и без зазоров между дисплеями. Этот план прожил ровно до того момента, как я увидел цены на MAX7219 у надёжных дистрибьюторов. Эти микросхемы стоят почти 20 долларов за штуку! За меньшие деньги, чем одна новая микросхема у надёжного дистрибьютора, я могу купить на Amazon или AliExpress три платы с четырьмя такими микросхемами на каждой!

План

Я составил новый план:

  • сделать пробную плату 32×32 мм; четыре такие дают модуль шириной 128 мм;

  • ставить на свои платы панельки;

  • снять и дисплеи, и микросхемы MAX7219 с дешёвых модулей, заказанных на Amazon;

  • когда всё заработает, повторить разводку 32 мм четыре раза и получить модуль шириной 128 мм с четырьмя дисплеями и четырьмя MAX7219;

  • наконец, собрать три таких счетверённых модуля и получить бесшовный дисплей 8×96 шириной 384 мм, который встанет в исходные, неизменённые напечатанные детали.

Плата на один дисплей

Схема модуля 32×32 мм на одну матрицу 8×8

Схема модуля 32×32 мм на одну матрицу 8×8

Схема модуля 32×32 мм на одну матрицу 8×8.

Как нет единой спецификации на эти модули, так нет и единой схемы. Я нарисовал свою, она выше. Выводы сегментов MAX7219 подключены к анодам светодиодной матрицы, выводы разрядов — к катодам. Вопрос был только один: ставить SEG_DP слева от SEG_A или справа, после SEG_G. Я решил, что это неважно, потому что любую путаницу в порядке строк и столбцов можно потом исправить программно.

Разводка платы 32×32 мм на одну матрицу

Разводка платы 32×32 мм на одну матрицу

Разводка платы 32×32 мм на одну матрицу 8×8.

Разводка платы на картинке выше. Плата квадратная, 32 мм. По сравнению с готовыми платами я поменял порядок входных и выходных контактов, чтобы упростить разводку. А входной и выходной разъёмы поставил в 1,27 мм от краёв платы в надежде соединять платы цепочкой прямо через перемычки, без проводов.

Пустая плата, запаянная плата, плата с дисплеем и отдельный дисплей

Пустая плата, запаянная плата, плата с дисплеем и отдельный дисплей

По часовой стрелке, начиная слева: пустая плата, запаянная плата, запаянная плата с дисплеем и отдельный дисплей.

На фото выше пустая плата, запаянная плата, запаянная плата с дисплеем в панельках и запасной дисплей. Пора запускать платы и браться за программу.

Запуск и правки в программе

Запуск ESP32-S3 и примеров MD_MAX72xx на модулях с одним дисплеем

Запуск ESP32-S3 и примеров MD_MAX72xx на модулях с одним дисплеем

Запускаю ESP32-S3 и примеры MD_MAX72xx на модулях с одним дисплеем.

Программа для проекта написана в среде Arduino и требует библиотеку MD_MAX72xx. Большинство примеров, как и исходный скетч WOPR, работают на моих дисплеях с минимальными изменениями.

Первое изменение — тип оборудования. В исходном скетче WOPR по умолчанию стоит MD_MAX72XX::FC16_HW; для моих модулей его пришлось поменять на MD_MAX72XX::DR1CR1RR1_HW.

Второе — число устройств. Дисплеев двенадцать, поэтому MAX_DEVICES нужно было поменять с 5 на 12.

Последнее — свои выводы на моей плате контроллера. Я добавил несколько определений с именами выводов и их номерами GPIO:

#define CLK_PIN   1
#define DATA_PIN  2
#define CS_PIN    3

Затем поменял глобальное объявление экземпляра MD_MAX72XX: вместо простого конструктора, которому нужен только вывод выбора микросхемы, взял конструктор со всеми выводами:

MD_MAX72XX mx(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

С этими изменениями на моих модулях должны работать любые примеры библиотеки и скетч WOPR. Полный скетч WOPR со всеми правками под мои модули можно скачать здесь.

Повторить разводку

Разводка платы 32×128 мм на четыре матрицы

Разводка платы 32×128 мм на четыре матрицы

Разводка платы 32×128 мм на четыре матрицы, 8×32 пикселя.

Платы на один дисплей заработали и, что важнее, заработали цепочкой друг за другом. Пора было делать версию на четыре дисплея. Я думал нарисовать схему из четырёх копий схемы одиночного модуля, но в Eagle PCB нельзя перенести разводку одной группы компонентов на другую группу, так что минимум три экземпляра дисплея пришлось бы разводить заново вручную.

Самый простой (единственный?) способ размножить работающую разводку в Eagle — закрыть схему, скопировать и вставить разводку, а потом поправить переименованные цепи, которые должны быть общими: питание и землю, а в этом случае ещё тактовый сигнал и выбор микросхемы. Получилась разводка с картинки выше. Разумеется, теперь у неё нет соответствующей схемы, а построить схему по плате Eagle не умеет.

Запуск счетверённого модуля

Запуск счетверённого модуля

Запускаю свой счетверённый модуль.

Когда платы пришли с производства, я снял дисплеи и микросхемы MAX7219 с пачки дешёвых модулей, купленных на Amazon. Микросхемы выпаивал паяльником и легкоплавким сплавом ChipQuik для демонтажа SMD. Потом очистил их флюсом и оплёткой и припаял к своим платам.

Я впаял микросхемы и новые панельки, вставил в них дисплеи и постарался выставить их как можно ровнее. Собрав одну плату, проверил её: подключил к ESP32-S3 и добился, чтобы дисплеи заработали. Когда одна плата заработала, доделал оставшиеся две.

Готовые панели

Две готовые панели: 128 мм без зазоров и 132 мм с зазорами

Две готовые панели: 128 мм без зазоров и 132 мм с зазорами

Готовые панели для стойки. Сверху вариант без зазоров на платах 128 мм, снизу — с зазорами на платах 132 мм.

На фото выше панель на моих платах шириной 128 мм (сверху) и панель на готовых платах шириной 132 мм (снизу). Без зазоров между матрицами 8×8 выглядит намного лучше!

Бонус: дом для модуля ESP32-S3

Схема платы контроллера

Схема платы контроллера

Схема платы контроллера.

У модуля Seeed Studio XIAO ESP32-S3 нет крепёжных отверстий, поэтому я сделал маленькую плату с отверстиями, которая держит XIAO и выводит контакты SPI. XIAO припаивается прямо к ней. Схема платы контроллера выше.

Разводка платы контроллера

Разводка платы контроллера

Разводка платы контроллера.

Разводка платы контроллера на картинке выше.

Новая задняя деталь с креплениями для платы контроллера

Новая задняя деталь с креплениями для платы контроллера

Новая задняя деталь с креплениями для платы контроллера.

Ещё я добавил стойки и крепёжные отверстия для платы контроллера на большую заднюю напечатанную деталь, которая соединяет две половины панели.

Плата контроллера на задней детали готовой панели

Плата контроллера на задней детали готовой панели

Плата контроллера на задней детали готовой панели.

Теперь плата контроллера закреплена на самой панели и больше не болтается сзади.

Вид готовой панели сзади

Вид готовой панели сзади

Готовая панель сзади.

Аккуратно, опрятно, всё в одном корпусе!

Включённая панель WOPR

Включённая панель WOPR

Панель-заглушка WOPR для стойки светится!

Файлы проекта

Прим. пер.: список покупок со ссылками на Amazon (партнёрскими, о чём автор честно предупреждает) в перевод не вошёл, он есть в оригинале.

Расходники для демонтажа микросхем (ссылки не партнёрские):

Модуль на один дисплей:

Модуль на четыре дисплея:

Плата контроллера:

Остальное:

Исходные файлы:

Позднее дополнение: WOPR-младший

Готовый WOPR-младший

Готовый WOPR-младший

Готовый WOPR-младший!

Ещё один проект на тему WOPR на MakerWorld, который мне приглянулся, — версия под 10-дюймовую стойку от другого автора. Это отличная интерпретация компьютера WOPR из фильма. В ней те же модули, которые я разработал для большой 19-дюймовой панели, но формат — популярная 10-дюймовая мини-стойка для домашней лаборатории.

Плата на один дисплей, плата на четыре и плата контроллера в WOPR-младшем

Плата на один дисплей, плата на четыре и плата контроллера в WOPR-младшем

Здесь снова пригодились платы шириной 32 и 128 мм и плата контроллера.

Этой версии нужны пять светодиодных модулей общей шириной 160 мм. Я собрал их из одной платы на один дисплей шириной 32 мм и одной платы на четыре дисплея шириной 128 мм. Они вставляются в нишу на задней стороне корпуса и держатся двумя планками, которые проходят сквозь модули и крепятся четырьмя винтами M4.

Плата контроллера и её напечатанный держатель крупным планом

Плата контроллера и её напечатанный держатель крупным планом

Плата контроллера и её напечатанный держатель крупным планом.

Вход одиночного модуля подключён к выходу моей платы контроллера. Выход одиночного модуля через пять перемычек идёт на вход счетверённого. Напечатанный кронштейн не даёт плате контроллера отсоединиться от остальной конструкции.

Плата контроллера подключается к первому модулю через гнездо на обратной стороне

Плата контроллера подключается к первому модулю через гнездо на обратной стороне

Плата контроллера подключается к первой плате дисплея через гнездо на обратной стороне платы контроллера.

На одиночном модуле стоит прямой штыревой разъём. Он входит в гнездо на обратной стороне платы контроллера. Я взял гнездо с длинными выводами: вдруг когда-нибудь захочу подключить к этому же контроллеру вторую или другую светодиодную плату.

Файлы WOPR-младшего:

View the original on Хабр →

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.