Бортовой компьютер «Аполлона» на столе: реплика DSKY в масштабе 1:1 на Raspberry Pi

Перевод статьи Recreate the Apollo Guidance Computer — David Crookes, Raspberry Pi.
Майкл Ньютон — инженер по авионике коммерческих самолётов из Калгари (Альберта). Когда он не на лётном поле, он изучает и воссоздаёт историческое авиационное и космическое железо современными технологиями. Его открытый проект Recreate Apollo — пожалуй, самый эффектный такой экспонат: 3D-печатная копия панели DSKY в масштабе 1:1, «мозгом» которой служит Raspberry Pi с эмулятором Virtual AGC.
Сам бортовой компьютер AGC представили в 1966 году — за три года до того, как Нил Армстронг ступил на Луну. Меньше 100 КБ памяти, тактовая частота 1,024 МГц, мощность уровня Apple II — и при этом именно он вёл корабли к Луне, да ещё и первым в мире построен на кремниевых интегральных схемах.
Как подчёркивает Майкл, AGC позволял астронавтам выполнять навигационные программы, манёвры автопилота, включения двигателей, орбитальные сближения и вход в атмосферу Земли. Проект Recreate Apollo даёт каждому потрогать эту историю руками: Raspberry Pi под управлением эмулятора Virtual AGC оживляет копию DSKY (Display and Keyboard — «дисплей и клавиатура»), с которой работали астронавты, причём выполняется на ней подлинное программное обеспечение командного модуля «Аполлона-13».

Корпус постарались сделать максимально близким к оригиналу — выглядит так, будто его сняли прямо с космического корабля.
Интерес к теме у Майкла зародился давно. «Ещё во время пандемии COVID-19 группа энтузиастов „Аполлона“ взялась переводить оригинальную инженерную документацию лаборатории приборостроения MIT (Instrumentation Lab) в современные CAD-файлы — с конечной целью 3D-печати, — рассказывает он. — Эти документы открыли по запросу общественной информации, а их архивом занималась группа Virtual AGC».

Майкл собрал этот DSKY как прототип улучшенной версии, но все печатные детали смоделированы по архивным чертежам NASA.
«Я со временем потерял из виду, как у них продвигались дела, но около года назад наткнулся на другого мейкера по имени Эрик, который ведёт блог mkme.org, и увидел, что он собрал DSKY по почти законченным чертежам, выложенным на GitHub. Не зная, откуда он взял файлы, я отправился на поиски сам. Многое нашёл в разных GitHub-репозиториях и других открытых проектах, другие детали пришлось дорабатывать, а кое-что моделировать с нуля. Через несколько недель работы у меня был полный набор .stp-файлов, готовых к печати, и я был ими доволен. Я купил 3D-принтер и начал погружаться в этот мир».
Отрыв от Земли#
Майкл учился по ходу дела и разбил работу на три большие задачи: напечатать, довести до ума и покрасить корпус; организовать и распаять железо; написать код и ПО. «Я прошёл каждый этап за несколько месяцев, именно в этом порядке, не торопясь и учась на ходу, — говорит он. — Но одна из главных моих целей — документация. Я хотел, чтобы любой желающий смог собрать такую штуку, даже вообще без опыта. Моё руководство на GitHub — плод этих трудов».
Гонимый любовью к миссиям «Аполлон» и самому AGC, он стремился к максимальной верности оригиналу. «Физически DSKY аутентичен процентов на 90, — говорит Майкл. — Снаружи я добивался идеального визуального сходства и результатом доволен». Внутри пришлось адаптироваться: изменились точки крепления микроконтроллеров и Raspberry Pi.

Все CAD-модели, схемы и 100-страничное руководство по сборке свободно доступны на GitHub.
«Пришлось проявить фантазию с креплением экрана: плата, на которой он стоит, физически крупнее детали, рассчитанной на оригинал, — продолжает он. — Я смоделировал держатель в виде защёлки и чуть подогнал размеры, чтобы посадка стала идеальной. Колпачки клавиш тоже сделаны чуть иначе: надписи на оригинальных слишком мелкие, чтобы напечатать их с хорошей чёткостью. Шрифт при этом совпадает с историческим (да, кто-то воссоздал и его!), просто буквы немного крупнее».
Ракетная наука#
Raspberry Pi оказалась для проекта почти идеальной. «Она словно создана для таких задач, — уверен Майкл. — Она общается с микроконтроллерами по USB, ей не нужно много энергии, в ней есть беспроводная сеть для SSH и удалённых приложений, и она не греется. Raspberry Pi OS ставится элементарно, а ещё можно собрать собственный дистрибутив и отправить целый образ ОС другим пользователям — эта часть сборки копируется одним движением». Вообще, Raspberry Pi регулярно становится сердцем самых разных самоделок — от интернет-радио с АЦП MCP3008 до крошечной языковой модели с вызовом функций.
Но главное — на Raspberry Pi без проблем работает yaAGC, программа проекта VirtualAGC, повторяющая каждую характеристику настоящего AGC. «Включая уникальную асинхронную обработку прерываний, которая спасла „Аполлон-11“ (коды тревог 1201/1202), длину слова 15 бит плюс бит чётности и архаично медленную тактовую частоту 1,024 МГц», — перечисляет Майкл.

Так выглядел настоящий бортовой компьютер «Аполлона» с панелью DSKY, летавшей на кораблях серии. Источник: Wikipedia.
Данные, с которыми работал AGC, в своей основе устроены иначе, чем у всех современных компьютеров: отдельные единицы и нули собраны в 15-битные блоки с одним битом чётности для контроля ошибок. По словам Майкла, эмуляция далась чрезвычайно тяжело, но программисты воспроизвели логику ровно ту же, что у оригинала, — с теми же таймингами.
«По сути, в этой эмуляции сохранены все ограничения оригинала, потому что тайминги AGC не тронуты, а память, которую читает компьютер, — это виртуализация подлинного кода, в оригинале буквально вплетённого в ПЗУ на магнитных сердечниках (core rope ROM) и намагниченного в ОЗУ, — объясняет Майкл. — На самом деле он эмулирует настоящий компьютер так точно, что для меня VirtualAGC — не эмулятор. Это настоящий бортовой компьютер „Аполлона“, который одалживает ваш процессор».
Великие умы#
В итоге получился полностью рабочий прибор, которым можно пользоваться с клавиатуры. Для неё Майкл взял серийные механические переключатели с самым большим усилием нажатия и самым отчётливым щелчком, какие смог найти. «Мой выбор — Kailh Box Navy, — говорит он. — На ощупь и на слух они неплохи, и их легко достать, но до настоящей клавиатуры DSKY им далеко». Теперь он собирает куда более премиальную версию: цельный алюминиевый корпус, лучшие сигнальные табло и, возможно, настоящий электролюминесцентный дисплей. И клавиатура там, обещает он, будет лучше.

Долгое нажатие одной из клавиш включает «периферийный» режим: DSKY можно использовать в локальной сети вместе с Project Apollo – NASSP — дополнением к космическому симулятору Orbiter, которое моделирует все миссии «Аполлонов».
Как есть, проект Recreate Apollo уже позволил Майклу и другим участникам куда глубже разобраться в AGC. Он говорит, что изобретательность создателей оригинального компьютера очевидна. «Одна только память была гениальным решением на магнетизме. А знали ли вы, что бортовой компьютер „Аполлона“ использовал всего ОДИН тип логического элемента — трёхвходовой ИЛИ-НЕ? Вся математика, перемещение данных, навигация, автопилот, включения двигателей — всё это были просто уровни напряжения, проходящие через трёхвходовые ИЛИ-НЕ, изредка разбавленные диодными сборками. Чтобы спроектировать такое, нужны были по-настоящему невероятные умы». Если вас цепляет такая история вычислительной техники — у нас есть рассказ о том, как компьютеры узнавали время до появления NTP.
Статья вышла в 171-м номере журнала Raspberry Pi Official Magazine, целиком посвящённом проектам мониторинга погоды. Номер можно читать онлайн; существует и печатная подписка с доставкой по всему миру.