Оглавление:
- Шаг 1. USB-клавиатура и джойстик
- Шаг 2: ЖК-экран
- Шаг 3. Беспроводная связь (Bluetooth)
- Шаг 4: мощность
- Шаг 5: соединяем все вместе
- Шаг 6: программное обеспечение
- Шаг 7: Корпус и окончательная сборка
- Шаг 8: наложение клавиатуры
- Шаг 9: Заключение
- Шаг 10: Ресурсы
Видео: Pocket ZX (портативный ZX Spectrum): 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Я ребенок 80-х и с теплотой вспоминаю 8-битные компьютеры той эпохи. Моим первым компьютером, занимающим особое место в моем сердце, был Sinclair ZX Spectrum 48K. Обнаружив недавно в сети несколько сообществ, посвященных более старым компьютерам, я решил, что хочу заново пережить эту ностальгию по себе, и установил эмулятор Fuse на свой MacBook. Какое-то время это было забавно, но мне действительно нужно было специальное устройство - желательно что-нибудь маленькое, портативное и автономное, чтобы оно соответствовало моему образу жизни. Выбор на этом этапе заключался в том, чтобы либо пойти по пути потрясающего Бена Хека и сжать оригинальное оборудование ZX до чего-то портативного, либо обмануть и использовать эмуляцию на небольшом одноплатном компьютере. Собираюсь схитрить:)
Итак, что я хочу от своего портативного ZX Spectrum?
- Дешево: у меня слишком много проектов, чтобы потратить большие суммы денег на веселую ностальгию.
- Портативный: это должно быть что-то, с чем я могу поиграть на диване или ленивым днем в саду.
- Клавиатура: я не просто хочу играть в игры, я хочу ее программировать. Чтобы получить полный опыт, он должен иметь эти замечательные ключевые слова.
- Джойстик: Мне никогда не нравились платформеры с клавиатурой. Конечно, в приключенческие игры, но я не просто хочу играть в приключенческие игры, поэтому для этого понадобится джойстик.
- Мгновенный: я ненавидел загрузку ленты в 80-е, и я не могу представить, что мне это понравилось за прошедшие годы.
Помня все это, я составил блок-схему, чтобы помочь мне понять различные компоненты. Итак, приступим к строительству.
Шаг 1. USB-клавиатура и джойстик
Правильная установка клавиатуры - ключ к созданию внешнего вида оригинального ZX Spectrum. Возможно, мы создаем портативное эмулируемое устройство, которое не имеет ничего общего с оригинальным внутренним устройством Spectrum, но при тщательном проектировании должно быть возможно создать что-то, напоминающее компьютерный опыт 80-х годов.
Начав с нескольких прототипов и большого количества тактильных переключателей, я поэкспериментировал с несколькими идеями и остановился на шахматной схеме, показанной на фотографиях. Протоплаты, которые мы используем, имеют размер 7x9 см (26x31 отверстие), которые можно купить в Интернете во многих магазинах. Переключатели представляют собой версии для поверхностного монтажа, которые на ощупь более мягкие и менее шумные, чем их более распространенные аналоги со сквозным отверстием, но оба должны работать, поскольку их размеры корпуса почти идентичны.
Затем элементы управления джойстиком переместились в оставшееся пространство непосредственно над клавиатурой. Я решил использовать 5-позиционный тактильный переключатель навигации слева и большую кнопку огня справа. Джойстик будет использоваться как контроллер для системы меню эмулятора и мышь для взаимодействия с базовой системой Linux, поэтому я также добавил небольшую дополнительную кнопку.
Микроконтроллер для клавиатуры - Arduino Pro Micro. Это небольшая плата, которую можно запрограммировать как устройство интерфейса пользователя USB (HID), такое как клавиатура, мышь или джойстик.
После того, как переключатели были припаяны, необходимо построить матрицу, которая соединяет строки и столбцы переключателей с микроконтроллером. Эта матрица позволит нам подключить все 40 клавиш и 7 кнопок джойстика к 18 контактам ввода / вывода Pro Micro. Клавиатура Spectrum не должна обрабатывать несколько нажатий клавиш, за исключением клавиш Caps Shift и Symbol Shift, поэтому мы собираемся поместить их на выделенные контакты, тогда нам не нужно будет беспокоиться об использовании диодов для предотвращения фантомных клавиш. прессы. Я включил схему, чтобы показать, как подключена клавиатура, включая матрицу. Сначала каждый столбец соединяется отрезком одножильного провода, а затем ряды соединяются одножильным проводом, форма которого тщательно продумана таким образом, чтобы пересекать столбцы без замыкания. Это может быть немного сложно, потому что вам нужно поднять рядные провода достаточно высоко, чтобы избежать контакта со столбцами, но достаточно низко, чтобы оставить место для всей проводки, которую нам нужно вставить во время окончательной сборки. Наконец, строки и столбцы подключаются к контактам Arduino с помощью проводов от старых кабелей IDE.
Как упоминалось выше, контроллер джойстика также будет функционировать как контроллер курсора и мышь, поэтому нам нужно будет иметь возможность переключаться между режимами. Режимом по умолчанию будет режим курсора, комбинация Caps Shift + кнопка Fire переключится в режим джойстика, а комбинация Symbol Shift + кнопка Fire переключится в режим мыши. Чтобы показать, в каком режиме он находится, в центре панели джойстика есть пара 3-миллиметровых светодиодов. Светодиод питания также будет полезен, и хороший способ обеспечить это с Pi - подключить светодиод к контакту UART TX Pi, так как он будет постоянно отправлять данные, пока устройство включено.
Чтобы предотвратить изнашивание незакрепленных проводов или короткое замыкание проводов матрицы, все обильно покрыто горячим клеем - некрасиво, но эффективно!
Последний шаг, чтобы заставить клавиатуру работать, - это запрограммировать Arduino с кодом ZX_Spectrum_Keyboard из моего репозитория. После этого вы можете положить паяльник, подключить клавиатуру к обычному компьютеру и использовать ее с эмулятором Spectrum, таким как Fuse или Spectaculator. Но мы не останавливаемся на достигнутом, так что продолжим …
Шаг 2: ЖК-экран
Оригинальный Spectrum имеет разрешение экрана 256x192 точки. Чтобы сохранить (приблизительно) это соотношение и избежать появления черных полос по обеим сторонам, я выбрал сенсорный ЖК-экран Waveshare 3,2 дюйма 320x240 TFT, разработанный для Raspberry Pi. Он не будет напрямую подключаться к разъему GPIO Pi, поэтому мы можем удалить пластиковое обрамление разъема и обрезка контактов. Я обрезал макетную плату 7x9 см до 2,1x9 см (точный размер не имеет значения, если два оставшихся угловых отверстия совпадают с верхними отверстиями клавиатуры и есть достаточно места для пайки контактов разъема GPIO.) и припаял контакты на место, что даст нам простой способ установить экран над клавиатурой.
Нам нужно только подключить контакты ввода-вывода SPI, питания и сенсорного экрана к Pi - может быть довольно сложно отследить, какие контакты на самом деле необходимы, но информация там есть, если вы достаточно внимательно посмотрите. Экран Waveshare использует 10 контактов: 4, 6, 9, 13, 15, 19, 21, 23, 24 и 26. Очевидно, что если вы делаете это с другим экраном, вам нужно будет проверить правильность контактов перед хватая паяльник.
Специальная конфигурация программного обеспечения не требуется - просто установите драйверы от производителя, и они будут готовы к использованию.
Шаг 3. Беспроводная связь (Bluetooth)
Плата Raspberry Pi Zero не имеет беспроводной связи, только один полезный USB-порт, и в корпусе не будет достаточно места для USB-концентратора, поэтому мне пришлось проявить немного изобретательности, чтобы добавить какую-то беспроводную возможность для моей сборки. Если вы строите это с помощью Zero W, вы можете пропустить этот шаг.
В Raspberry Pi есть изящная функция, которая позволит нам добавить полезные возможности беспроводной связи. Подключив дешевый последовательный модуль Bluetooth HC-05 к контактам UART Pi и настроив конфигурацию системы, можно получить беспроводной доступ к терминалу командной строки с помощью последовательного интерфейса через Bluetooth. Затем мы можем использовать общие инструменты для отправки файлов на устройство и управления файловой системой.
Шаг 4: мощность
Я выбрал аккумулятор в конце разработки, поэтому мне нужно было выбрать элемент, который бы поместился в доступном пространстве. Я выбрал 25C 1S Lipo емкостью 2000 мАч (размеры: 81x34x9 мм), проданный в качестве замены дрону Walkera Syma X5. Было бы хорошо иметь возможность заряжать аккумулятор на месте с помощью обычного USB-соединения и иметь возможность использовать устройство во время зарядки. Мы действительно не хотим возиться со сложной схемой управления питанием, поэтому мы собираемся использовать готовый модуль, который обеспечивает зарядку через USB, а также повышенный выход 5 В для непосредственного питания Pi. Чтобы устройство можно было полностью выключить, между выходом этого модуля и Pi есть ползунковый переключатель, который гарантирует, что аккумулятор все еще может заряжаться, даже когда устройство выключено. Pi необходимо правильно выключить, чтобы избежать проблем с повреждением данных. Вместо того, чтобы входить в систему через последовательный порт Bluetooth, мы можем подключить тактильный переключатель к контакту 5 Pi (GPIO3) и написать небольшой скрипт, который отслеживает это и инициирует выключение при нажатии. Силовые и беспроводные компоненты были припаяны к другой макетной плате размером 7x9 см, которая будет располагаться прямо под клавиатурой.
Шаг 5: соединяем все вместе
Со всеми собранными деталями мы можем собрать внутреннее устройство. Самая большая проблема, с которой я столкнулся во время сборки, заключалась в том, что порт USB сломал мою Arduino Pro Micro, что потребовало от меня припаять провода непосредственно к контактным площадкам, а не использовать USB-кабель. Это печально известное слабое место плат Pro Micro, поэтому, вероятно, стоит нанести на него хороший слой горячего клея перед сборкой, чтобы избежать этого. Предполагая, что это конкретное несчастье не случится с вами, у вас есть выбор: вы можете либо сделать сверхтонкий кабель micro USB - micro USB для подключения клавиатуры к Pi, либо припаять один или оба конца непосредственно к платам. Поскольку мне нужно было припаять сторону Arduino, я также припаял сторону Pi непосредственно к контрольным точкам на задней панели платы. У каждого варианта есть свои плюсы и минусы, так что вам решать, что вы предпочитаете.
Мы будем держать доски вместе с нейлоновыми стойками M3. Нам нужны стойки 2x 9 мм для соединения нижних отверстий между клавиатурой и платой питания. Верхние отверстия также удерживают экран, поэтому нам нужны зазоры 2,5 мм между клавиатурой и экраном и зазоры 4,5 мм между экраном и платой питания. На фото сбоку показано, как это выглядит. Стойки нужно будет немного аккуратно подрезать, чтобы все было параллельно - они могут немного плотно прилегать ко всем проводам клавиатуры, но они должны идти вместе. Как видно на фотографиях, устройство можно включать и использовать после сборки, не нуждаясь в собственном корпусе. Вскоре мы напечатаем корпус, но, прежде чем мы дойдем до этого, нам нужно установить операционную систему и настроить ее.
Шаг 6: программное обеспечение
Собрав внутренние компоненты, мы можем приступить к установке и настройке программного обеспечения. Raspberry Pi будет работать со стандартной установкой Raspbian. Единственное дополнительное программное обеспечение, которое необходимо установить, помимо драйверов экрана TFT, - это приложение Fuse. Мы используем версию SDL, чтобы получить надлежащую полноэкранную функциональность, которую можно установить с помощью:
sudo apt-get install fuse-emulator-sdl
Чтобы обработать нажатие кнопки выключения, скопируйте скрипт выключения из моего репозитория кода в / home / pi /
Чтобы получить последовательную консоль через Bluetooth, добавьте следующую строку в / boot / config:
enable_uart = 1
Нам нужно, чтобы наш сценарий выключения и эмулятор Fuse запускались при запуске, поэтому добавьте эти строки в / etc / xdg / lxsession / LXDE-pi / autostart:
@ / домой / пи / выключение
@ fuse-sdl --no-sound --kempston --no-auto-load
После внесения этих изменений перезагрузите Pi, и все готово.
Шаг 7: Корпус и окончательная сборка
Корпус был смоделирован в Fusion 360 (как это сделать, выходит за рамки данной инструкции). Состоит из 5 частей: задняя крышка, передняя панель экрана, передняя панель клавиатуры, кнопка включения и крышка панели управления. Крышка панели управления должна быть напечатана на гибкой нити (я использовал гибкий PLA, но более мягкий материал, такой как NinjaFlex, может быть лучше); все остальное должно быть напечатано на жестком пластике (я использовал черный PLA Filamentum).
Чтобы придать кнопке питания некоторое сопротивление и предотвратить ее дребезжание, приклейте к ее задней части 3-миллиметровую клейкую пену, а затем проделайте 4-миллиметровое отверстие, чтобы она плотно прилегала к вертикальному тактовому переключателю на печатной плате питания. Возможно, вам придется немного подрезать один край, как это видно на фотографиях, чтобы не зацепить силовую плату. Я также счел полезным использовать небольшое количество клея, чтобы удерживать кнопку выключателя питания.
Нам нужно приклеить пару нейлоновых стоек к верхним креплениям на передней панели экрана, чтобы можно было надежно закрепить верхние части корпуса. После высыхания обрежьте стойки заподлицо.
Чтобы установить доски, нам сначала нужно создать монтажные стойки. Снимите головки с некоторых нейлоновых винтов M3 и приклейте детали с резьбой в нижние отверстия каждой из передних панелей. Когда они высохнут, 2 передние панели можно склеить, а клавиатуру закрепить на месте с помощью стоек 9 мм и 2,5 мм. Затем, установив это на место, можно разместить экран на верхних стойках и добавить 4,5-миллиметровые стойки. Наконец, плату питания можно разместить на месте, а провода расположить так, чтобы можно было смонтировать заднюю часть.
Аккумулятор следует закрепить на месте с помощью двустороннего скотча или пенопласта и подключить к разъему питания. Теперь две половинки можно соединить вместе и использовать короткие винты M3 с потайной головкой, чтобы закрепить все на месте.
Наконец, переверните его и приклейте крышку панели управления к панели клавиатуры. Я сделал это с помощью двухкомпонентного эпоксидного клея для прочной связи.
Шаг 8: наложение клавиатуры
Мы почти закончили. Все, чего не хватает, - это несколько ключевых пометок и оверлей, поэтому мы знаем, как добраться до всех этих замечательных ключевых слов.
Основные буквы и цифры находятся на самом верху переключателя. Я нашел несколько действительно маленьких 2,5-миллиметровых переводных картинок, которые идеально подходят для крышек диаметром 4 мм. Их немного сложно применить, потому что вершины двигаются, когда вы их трете, но вы получаете довольно много букв в пачке, так что допустить некоторые ошибки - это нормально. В итоге я прикоснулся к некоторым из них прекрасным перманентным маркером, хотя, оглядываясь назад, я должен был попробовать замочить их в теплой воде и поставить на место (если вы когда-либо создавали модельный комплект, вам будет знаком этот процесс.). Чтобы защитить буквы во время использования, я нанесла немного прозрачного лака для ногтей на каждую верхнюю часть клавиш.
Чтобы серебряные корпуса переключателей не просвечивали сквозь зазоры в наложении, я использовал перманентный маркер, чтобы закрасить их - это можно увидеть в нижнем ряду одной из фотографий.
Я разработал напечатанные наложения в графической программе GIMP с открытым исходным кодом, а затем распечатал их на матовой бумаге фотографического качества. В идеале накладки должны быть как можно более тонкими - мне удалось очень легко отделить основу от бумаги марки Epson, которую я использовал, хотя это не относится ко всем маркам. Чтобы защитить отпечаток, я накрыл бумагу прозрачным липким виниловым листом и наклеил двусторонний скотч на заднюю часть, чтобы приклеить ее к корпусу. Однако перед тем, как приклеить накладки, нам нужно проделать отверстия. Я использовал дешевый 4-миллиметровый дырокол для кожи и добился наилучших результатов, затачивая пуансоны и разрезая их прямо на обрезке 3-миллиметрового алюминиевого листа. Затем накладки нужно просто выровнять и приклеить.
Шаг 9: Заключение
И мы закончили! Это был довольно большой проект, требующий ряда навыков, включая базовую электронику, пайку, 3D-моделирование, программирование и даже небольшой графический макет. В конечном итоге это было очень полезно, и с готовым устройством очень весело играть, но как оно соотносится с моими первоначальными критериями?
Дешево: общая стоимость всего, включая текущие розничные цены на предметы, которые у меня уже были, и канцелярские товары, такие как двусторонний скотч, которые прослужат намного дольше этого проекта, составляет около 80 фунтов стерлингов, что делает его доступным.
Портативный: он определенно портативный. Это устройство удобно помещается в кармане и полностью автономно, поэтому его можно использовать где угодно. Если бы я построил его снова, я бы сделал плоский 4-позиционный контроллер в стиле джойстика, а не использовал бы джойстик, поскольку он выступает над линией устройства, делая его уязвимым для повреждений. Я также хотел бы посмотреть, доступен ли несенсорный экран аналогичного размера и соотношения сторон с более устойчивым к царапинам покрытием, поскольку мне не нужен интерфейс сенсорного экрана, а резистивная поверхность особенно подвержена повреждению.
Клавиатура и джойстик: я очень доволен тем, как все получилось. Хотя у него нет ощущения мертвой плоти оригинала, использование клавиатуры удивительно напоминает старый ZX Spectrum - макет, наложение и реализация ключевых слов хорошо работают вместе для достижения этого. USB-клавиатуру также можно использовать отдельно с компьютером, на котором запущен эмулятор Fuse, чтобы обеспечить то же самое.
Мгновенно: использование последовательного модуля Bluetooth позволяет относительно легко переносить ленточные архивы на устройство с другого компьютера без необходимости выходить из интерфейса Fuse, и должна быть возможность дополнительно упростить процесс, написав клиентский сценарий для отправки файла. к устройству. Я бы предпочел использовать стандартную функцию передачи файлов Bluetooth «отправить на устройство», встроенную в большинство операционных систем, или подходящую систему обмена файлами, такую как Samba. Однако они будут доступны только с платой Pi Zero W, и я не использовал это для этой сборки.
В дополнение к перечисленным выше пунктам, если бы я снова начал этот проект с нуля, я бы выбрал более тонкую батарею с большей емкостью на ранних этапах проекта и разработал бы ее вокруг, вместо того, чтобы выбирать батарею подходящего размера в конце. проэкт. Я бы также использовал Pi Zero W вместо последовательного модуля Bluetooth, чтобы расширить возможности отправки файлов на устройство. Еще одно очевидное улучшение - это какая-то индикация состояния аппаратной батареи, поскольку в настоящее время нет возможности узнать, сколько заряда осталось. Я бы также подумал об использовании ОС на основе Ramdisk, такой как Alpine Linux, которая была бы более терпима к жестким выключениям и должна позволять один переключатель включения / выключения без необходимости отдельной кнопки выключения - намного больше, чем оригинальный ZX Spectrum, просто отключите его, когда закончите.
Было бы интересно разработать специальную печатную плату для этого устройства, которая потенциально позволила бы нам разместить компоненты питания на задней панели клавиатуры, а не иметь отдельную плату. Это могло значительно уменьшить глубину готового устройства. Это также упростит сборку устройства и даст возможность создать своего рода комплект для самостоятельной сборки. Если есть достаточный интерес к этому проекту, я мог бы сделать версию 2, которая устраняет эти проблемы.
Шаг 10: Ресурсы
Для создания этого проекта необходимы следующие ресурсы:
Файлы кейсов для 3D-печати (Thingiverse):
Код (Github):
Рекомендуемые:
Портативный бумбокс Bluetooth 2.1: 16 шагов (с изображениями)
Портативный бумбокс Bluetooth 2.1: Привет всем! В этой сборке я решил придумать портативный бумбокс Bluetooth, который будет иметь перезаряжаемую батарею и отличную производительность. Этот динамик основан на конструкции динамика Isetta Пола Кармоди, которую я немного переделал, чтобы приспособить
Портативный динамик Bluetooth - Комплект для сборки MKBoom: 5 шагов (с изображениями)
Портативный динамик Bluetooth | Комплект для сборки MKBoom: Всем привет! Так приятно вернуться к еще одному проекту акустической системы после долгого перерыва. Поскольку для завершения большинства моих сборок требуется довольно много инструментов, на этот раз я решил собрать портативный динамик, используя комплект, который вы можете легко купить. Я думал, что это
ПОРТАТИВНЫЙ МИНИ-МНОГОНАПРЯЖНЫЙ БП С USB, ФОНАРЬ, КОМПОНЕНТНЫЙ ТЕСТЕР И ВСТРОЕННОЕ ЗАРЯДНОЕ УСТРОЙСТВО: 6 шагов
ПОРТАТИВНЫЙ МИНИ-МНОГОНАПРЯЖНЫЙ БП С USB, ФОНАРЬ, КОМПОНЕНТНЫЙ ТЕСТЕР И ВСТРОЕННОЕ ЗАРЯДНОЕ УСТРОЙСТВО: Добро пожаловать в мой первый инструктаж! С помощью этого руководства вы можете превратить изворотливую / дешевую солнечную батарею (с некоторыми дополнительными частями) во что-то полезное. То, что вы можете использовать каждый день, как я, потому что это действительно здорово! Большая часть ав
Сделать портативный солнечный генератор энергии: 12 шагов
Сделайте портативный солнечный генератор энергии: у вашей электроники когда-нибудь кончался заряд, когда вы были вне дома? кемпинг или в месте, где не было электричества (Ac), чтобы зарядить их снова? Итак, вот простой проект на выходные, который гарантирует, что у вас всегда будет возможность сохранить свой мобильный телефон
Портативный замок: портативный замок: 5 шагов
Porto-lock: Portable Lock: Привет всем, поэтому, когда дело дошло до этого проекта, я хотел создать что-то простое, потому что оно решает простую проблему - никаких замков в вашем CR-стойле. Большинство людей списали меня с самого начала, говоря, не проще ли установить замки? Его