Все началось с замысла собрать уменьшенную модель терминала VT100 для использования с PiDP-8/I, который я воссоздавал в масштабе 2:3, но в итоге проект зашел гораздо дальше...
Краткая сводка основных компонентов
Аппаратная часть
- Raspberry Pi 1 Model B. Использовался для консоли на RetroPie и отдельной настольной вариации;
- PIM372 8” 1024x768 XGA Display (артикул на Digi-key 1778-1225-ND);
- SJJX Zero Delay Arcade DIY Kit;
- Механическая клавиатура MOTOSPEED CK61 60%;
Приложения
- RetroPie
Оборудование
- Prusa MK3S
История
Я собрал PiDP-8/I из комплекта, приобретенного на Obsolescence Guaranteed. Это современная реплика компьютера PDP-8/I 1968 года в масштабе 2:3, которая работает на Raspberry Pi в режиме эмуляции. Качество комплекта на высоте, и я уверен, что энтузиастов этот вариант заинтересует.
В процессе компоновки всех деталей и установки ПО я задумался о дальнейшем способе взаимодействия с моей «новой» машиной. Можно просто подключиться через SSH, telnet или VNC к управляющему ей Raspberry Pi, но разве это интересно? Мне даже стало немного грустно, что я избавился от нескольких старых серийных терминалов (в основном это были Volker-Craig, так как живу я в Ватерлоо), ведь они бы отлично подошли для подключения к 8/I. При попытке найти альтернативную винтажную модель в интернете я был шокирован ценниками, поэтому в итоге решил заняться привычным для меня делом и собрать «фронтенд» терминал самостоятельно.
Поскольку в ранние годы золотым стандартом среди терминалов считался DEC VT100, он и лег в основу моего проекта. А так как подключаться это устройство в итоге будет к уменьшенной до 2:3 версии PDP-8/I, то и его масштаб нужно было сделать соответствующим.
Я не собирал точную копию VT100. По факту я даже не собрал настоящий последовательный терминал, хотя вы вполне можете это сделать. Мне хотелось просто воссоздать очевидную модификацию VT100, которая бы максимально была на него похожа, но состояла из современных компонентов. Из очевидного, к примеру, был установлен ЖК-дисплей, замаскированный под ЭЛТ, а масштаб 2:3 не позволил использовать соответствующую оригиналу полноразмерную клавиатуру с цифровым блоком.
В ходе сборки фронтенда для моего PiDP-8/I я понял, что реплику VT100 можно также переиграть в виде миниатюрной аркадной консоли или даже крутого настольного компьютера. Возможность реализации последовательного терминала при этом, конечно же, не исключается.
Ресурсы
Помимо напечатанных на 3D-принтере деталей потребуется:
- Дисплей PIM372 8 inch 1024x768 XGA display (Digi-Key 1778-1225-ND).
- Клавиатура MOTOSPEED CK61 60% Mechanical Keyboard Portable 61 Keys RGB LED Backlit Type-C USB Wired Office/Gaming Keyboard (Amazon). Не потребуется, если вы будете собирать просто аркадную консоль.
- Набор SJJX Zero Delay Arcade DIY Kit Parts USB Encoder to PC Joystick 5Pin Rocker + 10pcs Black Push Buttons 822a Black (Amazon). Потребуется только в случае сборки аркадной консоли.
- Кабель Lemeng 1FT Flat Slim High Speed HDMI Extension Cable A male to A male Cord (Amazon). Потребуется только для аркадных и настольных машин.
Этап 1. Печать деталей
Модель
В интернете мне удалось отыскать мануал от VT101. Для человека, занимающегося воссозданием электронных артефактов, которые он не может позволить себе купить, это очень ценная находка.
Рис. 6-1 содержит всю необходимую информацию для создания 3D-модели VT100 в подходящем масштабе.
Подготовка к печати
Пришло время печати модели. Даже с учетом уменьшенного масштаба это самая крупная деталь, какую мне доводилось печатать. На моем Prusa MK3S это означало необходимость разделения модели клавиатуры на 2 части, а корпуса терминала на 12. Все компоненты получились довольно крупными и едва умещались на площадке для печати. В итоге на изготовление каждой из них уходило от 14 до 18 часов. И да, на все про все потребовалось аж две катушки белой нити весом по 1кг.
Моделирование я делал в Microsoft 3D Builder. Это простая в использовании программа, которая не только отлично делит модель, но также помогает исправить любые ее проблемы.
Рекомендации по печати
Печать настолько крупных деталей требует особой внимательности в отношении адгезии к рабочей поверхности. Я печатал все компоненты со скоростью 5мм/сек для первого слоя, что увеличивает продолжительность на часы. Как по мне, так оно того стоило, потому что печать все равно занимала много времени, и какое-то нарушение в данном процессе было явно недопустимо. Помимо этого, все детали изготавливались с параметром Brim=5мм. Остальные настройки:
- Print Resolution:.2 mm
- Infill: 10%
- Filament: AMZ3D PLA
Примечание: Печатайте детали в предустановленной ориентации. Большинство из них можно напечатать без поддержек. Здесь стоит действовать на свое усмотрение. Вот ссылка на архив с STL-файлами для цельных моделей и для разделенных частей. Размер печатаемых деталей следует выбирать исходя из площади рабочей поверхности принтера, стараясь задействовать ее полностью.
Этап 2: Сборка корпуса терминала
Спустя десять дней безостановочной печати я наконец-то мог собрать корпус терминала. Для соединения всех деталей я использовал клей E6000. Считаю его отлично подходящим для подобных задач решением, так как он достаточно долго схватывается и позволяет корректировать положение деталей в течение 10 минут и даже более. Этого достаточно, чтобы точно выровнять все изделие.
Подойдите к этому шагу внимательно и не пожалейте времени, так как небольшой перекос при сборке первых нескольких элементов будет только ухудшаться при добавлении последующих. После сборки я зафиксировал всю конструкцию изолентой и оставил высыхать на 24 часа. Среди STL-файлов также есть макеты скоб для дополнительного усиления швов с внутренней нижней и задней стороны терминала. Также есть модель задней пластины с овальным отверстием для установки.
Логотип я напечатал многоцветным, для чего потребовалось останавливать печать и переставлять нити. Отмечу, что его я сделал полноразмерным, так как при масштабе 2:3 он получался слишком мелким для печати соплом .4мм.
Этап 3. Сборка клавиатуры
Когда я уменьшил масштаб клавиатуры и провел измерения, то понял, что в лучшем случае площадь пространства для ее установки составит 295 x 110. Здесь и начался мой квест по поиску подходящего экземпляра, в результате которого я нашел MOTOSPEED CK61.
При размерах 290 Х 100 мм она отлично входила в посадочный отсек. Отзывы о ней тоже были хорошие, и цена не особо кусалась. Я заказал версию с синими свитчами, как мне кажется, Cherry MX BLUE (или их клоны). По факту они оказались хороши и щелкают очень приятно. Более типичная шахматная раскладка определенно лучше подходит для этой реплики. Я изначально понимал, что подходящий по размерам вариант клавиатуры с цифровым блоком найти нереально, поэтому счел эту вполне разумным выбором.
Каркас я напечатал из двух частей, которые склеил и усилил промежуточным элементом (видно на фото выше). Этот элемент, к тому же, поддерживает клавиатуру на нужной высоте.
Этап 4. Подготовка дисплея
Мне посчастливилось найти отлично подходящий для этого проекта ЖК-дисплей. Оптимальный размер для уменьшенной до 2:3 версии экрана составил 168 x 126мм. При этом полезная площадь подобранного мной дисплея была 165 x 124мм, то есть вписался он отлично.
Обрамление я разработал так, чтобы оно максимально походило на оригинальную рамку ЭЛТ VT100, и аккуратно прикрепил к нему сзади PIM372.
Для управляющей платы я отдельно напечатал держатель (Display PCB Holder), к которому приклеил ее с помощью двухстороннего скотча. После этого также скотчем я прикрепил держатель к задней части дисплея. Для фиксации дисплея к рамке я использовал малярный скотч. Обратите внимание на добавленный мной угловой переходник под 90 градусов, который позволит подключить кабель ровно сзади без изгибов.
Этап 5. Соединение с PiDP-8/I
К этому моменту у вас должно быть все необходимое для соединения реплики VT100 и PiPD-8/I. По сути, мы имеем только напечатанный корпус для монитора и клавиатуры, который будет подключен к Pi, размещенному в PiDP-8/I.
Прикрепите обрамление экрана с дисплеем к передней части терминала. Протяните HDMI-кабель от дисплея VT100 к Raspberry Pi в PiDP-8/I. Аналогичным образом подключите клавиатуру к USB-порту Pi. Осталось только вставить на место верхнюю крышку, и вот он – готовый, работающий на OS/8 PDP-8/I с подключенным терминалом.
На этом можно было остановиться, так как основная цель была достигнута. Но мне все же хотелось воплотить идею с использованием VT100 в качестве уникальной игровой консоли. Так что впереди еще много интересного.
Этап 6. Сборка клавиатуры-джойстика
Для этого я отдельно приобрел игровой Kit-комплект с USB-энкодером.
Каркас клавиатуры я разработал в стиле VT100 вместе с верхней накладкой для фиксации элементов управления.
Напечатал я его из двух частей, которые затем склеил и зафиксировал скобами.
Основание стика я установил во внутреннюю рамку, напечатанную снизу верхней накладки, и зафиксировал с помощью миниатюрных креплений, которые также изготовил на принтере. Удлиненные крепления соединяют и фиксируют две верхних части накладки. Подключение проводов сложностей не вызвало, так как в наборе есть интерфейсная плата USB и все необходимые кабели. Эту плату я прикрепил к стенке изнутри с помощью, опять же, двухстороннего скотча.
В конце осталось только вставить верхнюю накладку в каркас. Джойстик готов!
Этап 7. Реализация мини-игровой консоли
У меня под рукой оказался Raspberry Pi B, который вполне подходит для любимых мной стареньких аркадных игр. Его я также установил в корпус терминала (опять двухсторонний скотч) и подключил к дисплею коротким плоским HDMI-кабелем.
Черный кабель – это USB-подключение к джойстику, а два серых – это питание Pi и дисплея.
Воспользовавшись руководством из RetroPie Docs, я записал на SD-карту образ RetroPie и загрузил систему. После настройки управления все отлично заработало.
Этап 8: Реализация настольного ПК
Конфигурация аналогична консольной, но здесь я:
- вместо джойстика подключил к Pi клавиатуру;
- на SD-карту установил образ Raspbian. Вообще, я все настроил так, чтобы можно было переключаться между RetroPie и средой Pixel;
- добавил беспроводную мышь.
Далее вы уже можете добавлять ПО на свое усмотрение. Я, к примеру, вижу возможность реализации контроля с помощью этой реплики VT100 всех домашних автоматизированных процессов. Так что дайте волю воображению.
Этап 9. Что, если я хочу настоящий терминал с протоколом RS-232?
У меня не оказалось под рукой интересных устройств с последовательным интерфейсом и достаточной пропускной способности, чтобы это протестировать. Тем не менее для реализации этого не должно составить сложности приобрести RS-232 Serial HAT для Raspberry Pi, наподобие показанной выше, и воспользоваться программой терминала вроде minicom.
Вот отличное руководство, подробно описывающее, как это сделать – Raspberry Pi Dumb Terminal.
Этап 10. Итоги
Итак, мое путешествие началось с желания собрать что-то подходящее в качестве «фронтенда» для демонстрации прекрасной реплики PiDP-8/I Оскара Вермёлена своим товарищам по хобби. Иконический DEC VT100, несмотря на неполную аутентичность, подошел для этого отлично. Получилася прекрасный дуэт.
В процессе я понял, что можно реализовать с помощью столь крутого форм-фактора и другие идеи. В конечном счете у меня получились отдельные конфигурации мини-консоли и настольного ПК. Здорово, когда из одного замысла рождается несколько интересных результатов.
tormozedison
Я даже знаю, реплику какого следующего терминала можно сделать.
WildLynxDev
От Электроники 60 / ДВК?