Pull to refresh
81
0.2
Виктор Казаков @commanderxo

User

Send message

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

Тянуть шесть 34-жильных шлефов от матриц к центральному микроконтроллеру и на стороне ESP32 расширять шину до сотни сигналов кучей 74595 или каких-нибудь MCP23S17? А потом программировать одновременное формирование шести диаграмм, выдерживая интервалы меньше миллисекунды, при том что на ESP32 ещё крутится веб-сервер и рендерятся кадры анимации? А потом захочется вместо панелей Lawo c пикселями 10 мм взять матрицу от Brose с писелями 15 мм, а на той отсутвуют драйверы оси Y и нужны уже шлейфы на 60 контактов и драйверы на стороне контроллера и всё придётся переделывать заново.

Можно наверное и так, но мне проще было разделить ответсвенность: ESP32 решает задачи высокого уровня и формирует битмапы, не заботясь об электромеханической реализации, а Ардуины уж вовремя включают/выключают электромагниты.

Интерфейсы матриц

Lawo, драйверы X и Y, 34 пина с питанием и управляющими сигналами. Моя Arduino с I2C (пока) интерфейсом.


Brose, 60 пинов, драйвер только по оси X, линии Y выведены прямо на разъём и должны устанавливаться извне (24V). Arduino с I2C (пока) интерфейсом и самодельным драйвером оси Y на ULN2803 и TD62783.

При стандартном способе сборки блинкерных табло с горизонтальными и вертикальными линиями и парой диодов на каждый электромагнит пиксели, можно адресовать только по одному. Точнее можно одновременно переключать все пиксели одинакого состояния в строке или столбце, но тогда возрастут токи (300 mА на пиксель) и понадобится экзотический драйвер. Табло по ссылке собрано из польских модулей XY5 28x14. На каждой матрице свой контроллер, команды получает по RS485. При напряжении 24V и новой матрице реально перебрасывать диск импульсом в 500 мкс. Так-как обрабатывать нужно лишь изменившие состояния точки, то быстродействия хватает для простых анимаций.

Что-то такое я и хочу повторить. Всё хорошо, но поляки за своё творение просят 500€ за 28x14, это 1,27 евро за одну точку. Матрицы с разборки автобусов выходят 0.05-0.08 евро за точку, в эту цену входит металлический корпус с подсветкой и пусть медленный, но работающий контроллер с I2C поверх RS-422. При такой разнице в цене имеет смысл разобраться и сделать самому.

Я бы использовал кастом-шину в виде линий

А вот это хорошая идея, спасибо! Исторически я начинал с одного квадрата управляемого с Arduino, для простых вещей вроде часов этого достаточно. Потом захотелось объединить несколько квадратов в большое табло. Диски блинкерного табло остаются в последнем состоянии даже при отсутствии питания, поэтому я нацелился на умный протокол ESP32->Arduino позволяющий, например, передавать только пиксели изменившие состояние. Добавил команд с примитивами вроде отрисовки линий, и пошло-поехало...
Сейчас, оглядываясь назад, вижу, что отрисовку лучше делать на ESP32, а квадратам нужны только две команды:
1. Показать битмап на весь квадрат
2. Расшевелить пиксели. Дело в том, что если диск не менял своё положение несколько часов, то он может залипнуть. Вероятность небольшая, около 1%, но пикселей три тысячи и пара десятков мёртвых точек бросается в глаза. Подозреваю, что дело в остаточной намагниченности сердечников. Чтоб расшевелить точку, нужно быстро переключить её туда-обратно несколько раз, c разной длительностью импулься. Операция низкоуровневая, особенно из-за варьирующихся таймингов, поэтому хотелось бы оставить её на Arduino, а ESP32 будет раз в несколько часов посылать команду на очистку матриц, а потом восстанавливать последнюю картинку.

Сигналы можно передавать по дифпарам

Я правильно понимаю, что средствами лишь Arduino это не реализовать, и нужны дополнительные микросхемы типа применявшихся в автобусе (с которого и были сняты табло) для обмена между водительским компьютером и контроллером табло чипов SN75176? Тогда уж наверное проще использовать CAN - стандартный интерфейс, дифпары, меньше сигналов.

Но вообще, анимация на механическом дисплее не звучит, как хорошая идея.

Постоянно показывать видео, пожалуй, не стоит - быстро сотрутся пластиковые усики дисков, но анимация в разумных пределах может быть полезной.

Мой случай - когда началась корона и всех отправили на удалёнку, резко возросло количество митингов с веб-камерой. А тут как-раз раздобыл табло от старого автобуса. Разобрался как работает родной интерфейс (он медленный, потому как автобусу часто обновлять маршрут не надо), повесил табло позади себя на стену чтоб было видно во время созвонов, сделал простой http-интерфейс на ESP32. Теперь можно с серьёзным видом слушать собеседника, а на табло, вдруг, появляется комментарий типа "ну и что-бы могло пойти не так". Митинги стали веселее, коллегам по работе нравится, теперь каждое утро их ждёт цитата дня. Потом добавил простых анимаций - в декабре по табло падали снежинки, или можно показать что-то предельно пафосное, а потом запустить Пакмана, съедающего текст.

Как-то так
HELLO HABR
HELLO HABR

В целом работает неплохо, но мои новые идеи уже упираются в быстродействие. Для последовательного обновления нескольких тысяч точек нужно до 4 секунд, так и пришёл к цели повесить Arduino на каждый квадрат и обновлять их параллельно.

PS: Я программист, а не электронщик, прошу прощения за дилетантские вопросы.

видео с анимацией типа badapple

Как же без него

в табло этом и так уж регистров видимо навалом

Увы, нет. Табло, наверное, бывают разные, но в попадавшихся мне от автобусов 90-х гг. выпуска электроника предельно простая. На матрицах производителя Lavo установлены три драйвера электромагнитов на микросхеме FP2800A - один по оси X и два по оси Y (один для установки пикселя, другой для сброса). Драйвер имеет 5 линий адреса, выбор состояния пикселя DATA и вход ENABLE. Всё это выведено на 34-пиновый разъём, к нему, кстати, подходит IDC кабель от старых дисководов. Матрицы производителя BROSE ещё проще, на них установлен только драйвер оси X, а все линии Y выведены на разъём и нужно уже 60 контактов. Никакой памяти или последовательных интерфейсов нет, поэтому и использую Arduino:
1. Получить от центрального микроконтроллера очередной битмап желаемого состояния и сохранить в framebufer
2. В цикле по всем пикселям где новое состояние отличается от последнего показанного:
2.1 Установить адреса по X и Y и состояние DATA (перебросить диск на чёрная или желтую сторону)
2.2 Установить ENABLE по X и Y
2.3 Подождать 750 микросекунд
2.4. Cбросить ENABLE
2.5 Подождать 250 микросекунд
2.6 Перейти к следующему пикселю

В каждый момент времени драйвер может подавать ток лишь на один электромагнит. Матрицы можно объединять в цепочки до 8 штук, так оно у меня сейчас и работает, но для последоватьельного обновления всех 6 нужно около 4 секунд. Для автобуса сойдёт, ему маршрут менять раз в день, а вот для моих целей хотелось бы обновлять матрицы паралельно, поэтому и хочется посадить отдельный Arduino на каждый квадрат, и отдавать им команды с центрального ESP32 который обеспечивает веб/REST интерфейсы для управления табло из браузера или приложения.

Пользуясь случаем, спрошу: делаю блинкерное табло на шести матрицах, каждая 28x24 точки. Позади каждой матрицы управляющая ей Arduino Nano, плюс ещё одна ESP32 где крутится веб-сервер, принимающий команды и отсылающий списки изменённых пикселей на шесть Nano. Табло в длину почти два метра. Какой интерфейс лучше использовать для передачи данных ESP32->Arduino? На первый взгляд пиксели обновляются небыстро, электромагниту нужен миллисекундный импульс чтоб перебросить диск пикселя на другую сторону, так что каждой матрице нужно примерно 0.7 секунды чтоб обновить все точки. Реально же, даже при быстрой рассылке пакетов на все матрицы и обновлении точек "в фоновом режиме" шесть матриц в ряд обновляются не одновременно и это заметно на глаз, так что хотелось бы скорость передачи повыше, чтоб можно было показывать анимацию.

Пока делаю соединение на I2C и на каждой Nano дипами задаю свой адрес, но не уверен что это правильный выбор для быстрой надёжной коммуникации на два метра.

Прототип
Кабели похожи на "звезду", но на самом деле это I2C, просто на ESP32 продублированы разъёмы и на прототипе к каждой матрице идёт свой кабель
Кабели похожи на "звезду", но на самом деле это I2C, просто на ESP32 продублированы разъёмы и на прототипе к каждой матрице идёт свой кабель

Прототип их 2x2 матриц по I2C вроде работает, но в конечном варианте матрицы будут расположены в ряд 6x1 или 8x1 и расстояние от ESP32 до Arduino Nano может достигать 2 метров.

Интересно, какой процент водителей постоянно возят с собой насос? Для меня этот рецепт обернётся в "доехать до ближайшей заправки чтоб подкачать шины, чтоб экономно доехать до... хотя постойте!"

Зачем кто-то читает книги, тратя на это время своей жизни (или такты ЦПУ, если ты нейросеть)? Ради ощущений. Прочитав книгу, я становлюсь чуть-чуть другим. В памяти остаётся сюжет, переживания за судьбу героев, иногда я берусь за карандаш и рисую свои фантазии по мотивам прочитанного. Если авторы настаивают, что их произведения можно потреблять лишь по принципу "в одно ухо влетело, из другого вылетело", без памяти, то грош цена такой "литературе".
Пусть идут пишут бесконечные простыни "terms of use", вот эти действительно никто не читает.

Спасибо за статью, в ней хорошие ответы на вопрос "у меня есть дисплей, как бы его подключить?". В хобби проектах использую ESP32 и возникает обратная проблема - есть микроконтроллер, какой дисплей выбрать чтоб прощё всего было с ним работать? Что посоветуете размером 2-3 дюйма, touch не нужен. Желательно с breakout пинами, потому как код я писать ещё умею, а вот паять - не особо. Например, какой дисплей у вас на КДПВ?

Жаль что в обзоре нет раздела об Amiga, хотя она неоднократно упоминается в тексте как эталон для сравнения. У меня знакомство с цифровой музыкой началось уже в середине 90-х с пайки Covox-а, так что целый пласт культуры эпохи до XT/AT прошёл мимо, а было бы интересно почитать. Спасибо за статьи!

Поздно, этот патент уже занят пользователями пультов ДУ для телевизора.

У каждой страны свои легендарные способы решения всех проблем. Если в России, то обмотать кибертрак синей изолентой, если в Америке - обрызгать WD-40.

Возможно в это время она отвлекалась на непрофильное занятие - стирала бельё.

Для сравнения дисководы и диски 8, 5, и 3 дюйма:

Восьмидюймовый дисковод имеет размер 336x218x58 мм и весит как два макбука.

Только DIP-корпуса, только хардкор

Микросхемы "made in Malaysia" были весьма распространены в 80-х/90-х, но на этом дисководе есть и необычные Brazil, Indonesia, El Salvador.

Электроника может работать с двухсторонними дисками, но механически установлена лишь одна головка и разъём P9 (под серой крышкой) ни к чему не подключён.

Во многих 8-дюймовых моделях привод диска осуществлялся синхронным двигателем переменного тока напрямую от сети и диск вращался постоянно, хотя на 50-контактном разъёме Shugart и предусмотрен сигнал управления мотором.

Американские 60Hz давали 360 RPM, которые в Европе превращались в 300 RPM и контроллер должен был уметь работать с обеими скоростями. Более современным пятидюймовым дисководам достаточно для питания 5V и 12V постоянного тока и скорость задаётся драйвером, но раз уж контроллер поддерживает, то в 5.25" дисководах на 360K выбрали скорость 300 оборотов в минуту, а в пятидюймовых на 1.2 Mb - 360 оборотов. В Windows 10 не пробовал, но в Windows 7 точно ещё работают пятидюймовки, так что наследство 8-дюймовой архитектуры живо и по сей день.

Выражение "утечка памяти" заиграет новыми красками.

Упоминавшаяся в статье швейцарская реплика HP-16C
Упоминавшаяся в статье швейцарская реплика HP-16C

Интересно, какие из потребительских материнских плат поддерживают старые дисководы? Для дискеты на 3,5 дюйма есть внешние дисководы с USB, но вот с поддержкой и 5,25 я ни разу не встречал - протокол и кабель там такой же, но пятидюймовым дисководам нужно напряжение 12V и производители адаптеров решили не заморачиваться. Напрямую не заменишь, в 5,25 было 15 секторов на дорожку, а в 3,5 - 18. Поэтому в старых BIOS нужно было указывать правильный тип дисковода, Plug&Play в протоколе Shugart из 70-х не предусмотрено.

Из материнских плат пока наилучшая что нашёл - от HP d330m с Pentium 4. Поддерживает два дисковода на одном кабеле, после установки максимальных 4GB RAM и SSD диска на нём резво работает Windows 7 32-bit. Но с драйверами проблема, на сайте HР их нет, поэтому встроенное видео хромает. Чуть более современный HP dc5100 2008 г. выпуска уже не понимает два диска на одном кабеле, в BIOS предусмотрен максимум один дисковод.

Интересно, кому-то встречались более современные материнки с поддержкой 3,5 и 5,25? Чтоб хотя-бы c Intel Core Duo или лучше?

Если верить википедии, 86-DOS была портом CP/M на 8086 процессор выпущенным в 1980 г., а значит какой-то рынок устройств существовал ещё до выхода IBM PC.

Тогда вообще интересное время было, например у меня есть OIivetti M24 1986 г. выпуска, полностью 16-битная с 8086 (а не 8088 как у IBM), в которую можно вставить на специальной плате Z80 и запускать CP/M.

Попробовал запустить на Intel 8088 на плате Micro 8088, MS-DOS 5.00, даже немецкая нашлась.

Шахматы заработали без проблем

Information

Rating
2,063-rd
Location
München, Bayern, Германия
Date of birth
Registered
Activity