Оглавление:

Portal 2 Turret - Мастер управления турелью: 9 шагов (с изображениями)
Portal 2 Turret - Мастер управления турелью: 9 шагов (с изображениями)

Видео: Portal 2 Turret - Мастер управления турелью: 9 шагов (с изображениями)

Видео: Portal 2 Turret - Мастер управления турелью: 9 шагов (с изображениями)
Видео: Half-Life 2: Недостатки Source Engine и косяки - 03 2024, Июль
Anonim
Image
Image

Этот проект является расширением или ремиксом моей оригинальной Portal Turret на Instructables (Portal-2-Turret-Gun). Его также можно использовать как дешевый контроллер для управления всем, что использует радиочип nRF24L01. ЖК-экран особенно полезен при настройке.

(Оказывается, это очень полезно для проверки, когда мои радиостанции устанавливают и теряют соединение с другими nRF24L01 в «сети». Я могу ходить и смотреть, как экран дисплея показывает состояние подключения радиостанций! Очень полезно для настройки параметров и проверки диапазон!)

После того, как я завершил Portal Turret, я увидел короткий видеоклип с оперной сценой Cara Mia в конце Portal 2. Я подумал: «Эй, я построил несколько турелей. Я могу это сделать! » Ну, у меня были турели, но чтобы они работали, им теперь нужно было общаться друг с другом или с каким-то другим устройством. Поразмыслив и подумав, что ручное управление тоже было бы круто, я решил, что построю Master Turret Controller или MTC.

Итак, как это сделать? Что ж, мне не хотелось слишком сильно модифицировать турели, так что это было ограничением. У меня было несколько радиочипов nRF24L01, которые я еще не использовал, и я подумал, что это будет соответствовать моей цели - использовать недорогие компоненты и полагаться на механическую конструкцию и код для выполнения этой работы. Мне нужно было создать контроллер и начать обдумывать, что он будет содержать и что именно я могу сделать с турелями. Кара Миа уже была на повестке дня, но что еще?

Ручное управление: Итак, когда крылья открыты, я хотел бы контролировать высоту и угол поворота. 2 оси = джойстик, то есть управление джойстиком и несколько кнопок. Кнопка 1 приведет к выстрелу из башни, а кнопка 2, возможно, заставит ее произнести одно из своих высказываний. Звучит отлично! Достаточно просто …

Чат: Недавно я снова увидел программу «Кто первый?» - Эбботт и Костелло, и в моей голове загорелся свет! Я бы также сделал скетч комедии, используя все высказывания, используя несколько турелей !! Хорошо, с этим еще не до конца разобрались, но я уверен, что разберусь с ним, когда моя сборка начнется.

Я также хотел, чтобы этот MTC был беспроводным, поэтому я выбрал простой вариант с питанием от батареи 9 В и разработал контроллер, который питается от разъема mini-USB через Nano на задней панели. Также полезно для обновления.

Шаг 1: включение радио в турели

Сначала я заставил радио работать с несколькими голыми Nano, чтобы убедиться, что я могу заставить его работать и отправлять информацию между несколькими устройствами. Как только это было сделано, нужно было встроить радиостанцию в существующие турели. Хм, добавить физическую плату в башню было довольно просто. Я только что модифицировал держатель чипа, включив в него nRF24L01, Nano и mp3-чип. Ok. Одна физическая часть изменена, с некоторой проводкой.

Модифицированный чип-держатель теперь уже является частью печатных деталей револьверной головки. Я просто удалил опцию без радио из печатных частей в этой сборке. Не будет никакой разницы, если кто-то захочет построить вариант без радио. Только не включайте радиочип nRF24L01.

Шаг 2: (Повторное) подключение турелей

(Пере) подключение турелей
(Пере) подключение турелей
(Пере) подключение турелей
(Пере) подключение турелей
(Пере) подключение турелей
(Пере) подключение турелей
(Пере) подключение турелей
(Пере) подключение турелей

Ой ой …

Это было нехорошо. Мне нужно было добавить 5 подключений к Nano, и у меня уже было мало доступных контактов. Немного изучив это, я понял, какие соединения имеют приоритет, и осознал, что для того, чтобы эта работа работала, мне придется переназначить большинство существующих соединений Nano.

Тем, кто хочет сделать «Radio Turret» и уже построил предыдущее поколение… Извините…

Я проделывал это изменение несколько раз, и оказалось, что процесс не так уж и плох. Это действительно связано с возвращением, но я смог отменить существующие подключения к Nano, а затем снова подключиться к соответствующим контактам без особых проблем. Я добавил 7 проводов для радиочипа к nRF24L01 (5 проводов связи, 3 В и GND), затем подключил другие концы к Nano.

Теперь там больше проводов, поэтому гораздо важнее поддерживать порядок при прокладке проводов.

ВАЖНО: При сборке убедитесь, что провода не нажимают на кнопку сброса Nano на плате !! Это случилось со мной на одном и забросило меня на ненужную петлю!

Таким образом, в башне теперь есть 2 схемы подключения: старая устаревшая опция «без радио» и обновленная опция «радио-турель». Если бы сегодня строили турель «без радио», я бы все равно использовал радиосхему и код. Просто удалите или закомментируйте фрагменты радио, если это выбранный маршрут или нет. Башня по-прежнему должна работать сама по себе без радио.

Шаг 3: электрические компоненты MTC

Электрические компоненты MTC
Электрические компоненты MTC
Электрические компоненты MTC
Электрические компоненты MTC
Электрические компоненты MTC
Электрические компоненты MTC

Разобравшись с башнями, пришло время делать MTC.

MTC использует следующие компоненты, все они получены через Amazon, Baggood или Ali Express и т. Д. Я показываю номера деталей Amazon, на которые я ссылался для справки, поскольку эти элементы общедоступны и по разумной цене (и мне не пришлось подождать 2+ недели, чтобы получить то, что мне нужно, прежде чем я смогу приступить к механическому проектированию!)

  • 0,96-дюймовый ЖК-дисплей Arduino Nano (SSD1306) Я использовал синюю / желтую версию
  • Модуль джойстика Small Joystick (HW-504) 5V PS
  • Тумблер (dx-004) 22мм * 13мм
  • Радио - (nRF24L01)
  • Кнопки 12 мм (CLT1088 для цветных кнопок, PBS-33B для черных)
  • Винты 2 мм (набор самонарезающих винтов M2, ассортимент крестообразных шлицевых головок)
  • 5-миллиметровые светодиоды на ваш выбор для индикаторов. (Не используйте яркие светодиоды !!)
  • Типовой разъем аккумулятора 9 В с косичками
  • Аккумулятор на 9 В (используйте хороший, а не тот, который продается за доллар, который не всегда может обеспечить достаточно энергии для этих проектов!)
  • Я использовал провод в силиконовой оболочке. Мне нравится использовать его для этих проектов.

Изначально я использовал несколько ярких светодиодов, но обнаружил, что они слишком хороши. Они меня ослепляли! В итоге я использовал несколько старых, слабых светодиодов, и это имело больше смысла для этого приложения.

Шаг 4: детали, напечатанные на 3D-принтере

Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере
Детали, напечатанные на 3D-принтере

Я разработал MTC, используя Fusion, аналогично тому, как я делал дизайн башни.

Для печатной сборки требуется всего 3 части:

  • Верхняя панель (версия 1 или 2)
  • Нижний корпус
  • Ремешок для ЖК-дисплея

Микросхема nRF, Nano, аккумулятор на 9 В, тумблер и светодиоды устанавливаются в верхнюю пластину без креплений. Светодиоды просто вдавливаются в пластину и удерживаются на месте язычками. Они должны просто защелкнуться, но не переусердствуйте. Верхняя пластина предназначена для фиксации Nano, а чип nRF должен входить аккуратно. Осторожно с маленькой вкладкой nRF; он маленький и отогнут назад, чтобы открыть и отпустить, чтобы захватить чип. Несмотря на то, что его путешествие ограничено, будьте здесь осторожны.

Для крепления джойстика и ЖК-дисплея к верхней пластине требуются 2-миллиметровые винты (длиной 5 мм). В печатной плате джойстика большие отверстия, поэтому я решил, что мне нужны маленькие шайбы, чтобы винты не выскочили.

Я обнаружил, что размеры печатной платы и ЖК-дисплея немного различаются от производителя к производителю, поэтому я решил использовать простой ремешок, чтобы удерживать его на месте, вместо зажимов или крючков.

Обратите внимание, что ЖК-дисплей можно физически установить в верхнюю панель в любом случае, но дисплей полностью отображается через отверстие только в одной ориентации! По этой причине я включил второй вариант верхней пластины при использовании разделенного желто-синего экрана. У одной версии желтый цвет вверху, а у другой - желтый внизу, как показано на моих фотографиях.

Для одноцветной версии ЖК-дисплея не имеет значения, какой из них используется, поскольку вы можете перевернуть дисплей с помощью программного обеспечения.

Поскольку вся проводка выполняется на верхней пластине, нижняя часть фактически представляет собой просто крышку, прикрепленную к верхней пластине более длинными 2-миллиметровыми винтами (кол-во: 4).

Вместо опции «батарейный отсек» я просто вставил батарею в верхнюю пластину. Это означает удаление 4 винтов, которые держат нижнюю часть вверху, чтобы заменить батарею, но поскольку она также может питаться от USB-кабеля, а не конца света. Верхняя пластина сделана с системой держателя батареи 9 В, которая должна быть достаточно прочной для многократного использования, не слишком сложна, но предотвращает перемещение батареи.

Я распечатал верхнюю пластину двумя цветами, как показано на фотографиях. Я использую Prusa i3 Mk2 без многоцветной опции, но использую их инструмент цветной печати (https://www.prusaprinters.org/color-print/), чтобы изменить цвет на полпути. Проверьте слой, на котором текст останавливается и становится твердым, и сделайте его переходным слоем. Вуаля! Цветной текст!

Я напечатал детали с высотой слоя 0,35 мм, так как нет необходимости в более высоком разрешении на этих плоских деталях. Я также предпочитаю, как это выглядит в этом разрешении. Да, и он тоже довольно быстро печатает!

Шаг 5: Электрическая сборка

Электрическая сборка
Электрическая сборка
Электрическая сборка
Электрическая сборка
Электрическая сборка
Электрическая сборка
Электрическая сборка
Электрическая сборка

Все электрические компоненты устанавливаются на нижней стороне верхней панели, а вся проводка выполняется вместе. Сначала должны быть установлены кнопки и тумблер, а ЖК-дисплей, нано, джойстик и радиомодуль nRF могут быть предварительно подключены перед установкой на верхнюю пластину. Я рекомендую этот метод предварительного подключения отдельных компонентов, а затем, в конце, выполнения окончательных подключений к Nano. Я также рекомендую сначала загрузить скетч на голый Nano, прежде чем завершать электромонтаж.

Нет ничего более приятного, чем включить устройство и посмотреть, как оно оживает, как и ожидалось, после завершения работы!

Единственное, что потребовалось подготовить электрическую часть, - это удалить штыри жатки с джойстика, чтобы он поместился под верхней пластиной. ЖК-экран можно приобрести с установленными контактами или без них, и он будет работать в любом случае. Nano следует выбирать без контактов заголовка.

Шаг 6: Код

Код для MTC, Красной башни, Белой башни и Синей башни уже доступен

Что ж, это был опыт программирования! У меня турель работала независимо, но подключить радио оказалось сложнее, чем я думал изначально! Я также немного повеселился, заставив раздел «Чат» работать должным образом (подробнее об этом позже).

После того, как код MTC был полностью определен, он начал облагать налогом ограничения памяти Nano! Мне пришлось внести коррективы и сэкономить код, чтобы он был более эффективным с точки зрения памяти. Еще один хороший опыт обучения.

Я включил соответствующий код «Turret w radio option» в эту сборку, поскольку они работают вместе. Создание турели с радиооборудованием на странице сборки турели сделает ее готовой к использованию с MTC или другим вашим методом управления nRF24L01.

Кроме того, чтобы заставить звуки работать с этим кодом, потребовалось некоторое время, и, поскольку звуки были взяты с других общедоступных веб-сайтов, я включил все звуки, как я использовал их, в пару файлов ZIP; один для обычной башни и один для неисправной башни. Для вас, дорогой читатель, хорошо то, что вы можете использовать звуки на SD-картах с кодами, как написано, и все будет в порядке!

Шаг 7: Меню MTC - Навигация

Меню MTC - Навигация
Меню MTC - Навигация
Меню MTC - Навигация
Меню MTC - Навигация
Меню MTC - Навигация
Меню MTC - Навигация

Код MTC запускается с настраиваемого экрана-заставки, затем проверяет состояние турелей. Если турелей нет, он просто будет сидеть там, пока турели не соединятся!

Если подключена хотя бы одна турель, отобразится главное меню и загорится светодиод «Готов», если только турели не прерваны или заняты «общением с кем-то». Если они заняты, отобразится экран «Турели заняты» и загорится светодиод «Занят».

Все активно подключенные турели должны быть в «режиме готовности», прежде чем MTC сможет управлять турелями.

Используйте джойстик (вверх и вниз) для переключения между пунктами меню:

  • Ария
  • Чат
  • Руководство по эксплуатации

Выберите желаемый вариант, используя кнопку «X» или нажав джойстик.

Режим Арии - при выборе этой опции отобразится экран «Режим Арии», и турели будут выполнять сцену Арии в конце игры Portal 2. После завершения турели закроются и будут ждать команды или кого-то, кто их разбудит.

Режим чата - при выборе этого параметра отобразится экран «Режим чата» и начнется последовательность чата. После завершения турели закроются и будут ждать команды или кого-то, кто их разбудит.

Ручной режим - при выборе этой опции отобразится экран «Ручной режим», загорится светодиод «Ручной» и разрешится ручное управление револьверными головками. Джойстик управления питчем и поворотом. Нажатие кнопки «X» активирует последовательность стрельбы. Нажатие кнопки «T» заставит их «говорить», при этом турели произнесут случайное высказывание из своей библиотеки.

Нажатие кнопки «<» или «назад» отменит эти три режима, закроет турели и вернется в главное меню.

Если вы хотите увидеть статус соединения вашего роя турелей (в настоящее время ограничено 3), нажмите кнопку «T» в главном меню. Вы попадете на экран «Статус турели», где сможете увидеть статус подключения каждой турели.

Находясь на экране «Статус турели», вы увидите статус каждой турели.

  • Готов - готов к управлению
  • Занято - турель занята «присматривает» за кем-то
  • Недоступно - MTC не может подключиться к этой турели.

Нажмите кнопку «<», чтобы вернуться в главное меню.

Шаг 8: настройка кода

Настройка кода
Настройка кода

Показанный здесь снимок экрана показывает то, на что я смотрел слишком долго… 4 эскиза за раз! Кто сказал, что отладка - это не весело!

Код предоставляет элементы управления и параметры, показанные выше, но как насчет настройки кода?

Конечно! Но здесь происходит изрядное количество вещей, поэтому вот несколько рекомендаций или советов.

Совет 1 - Изменение последовательности «Чат». Эта модификация имеет место в коде башни.

Я пытался придумать способ заставить код работать на меня везде, где мог. Чтобы сделать последовательность чата более редактируемой (это слово?), Чтобы я мог сосредоточиться на истории, потребовалось больше работы заранее, но это упростило настройку впоследствии.

Изменить последовательность чата с использованием предоставленной структуры кодирования можно довольно просто, если вы будете следовать методу, используемому в коде. Используя предоставленные звуковые файлы из игры Portal 2, вам нужно будет изменить только таблицу (chatSayings ).

Выберите поговорку для обычной турели или неисправной турели. Поговорка - это mp3-файл, который обозначается как «00XX -», за которым следует текст, описывающий высказывание. Это число - важная часть. Турель №1 будет использовать это значение ХХ в таблице. Револьверная головка №2 добавит к значению XX префикс «1», а револьверная головка №3 будет префикс значения XX с помощью «2». Так, например, если вы выбрали выражение «0040 - извините» и хотите, чтобы его произносила турель №3, вы должны вставить «240» в таблицу в правильной последовательности. Если бы турель №1 сказала это, вы бы вставили «40» в таблицу.

Сделайте то же самое для следующего выражения и так далее. Это могло быть несколько выражений между башенками или довольно много. (Я не знаю об ограничениях этого метода, кроме памяти).

Вам не нужно будет изменять значения других таблиц, так как это время, которое соответствует высказыванию в таблице. Единственная другая строка, которую нужно изменить, - это строка 520.

if (i> = 43) {// конец последовательности

Значение i здесь должно быть установлено равным количеству высказываний в таблице chatSayings.

Чтобы составить полностью индивидуализированные высказывания (где начинается настоящее веселье!), Вам необходимо настроить выражения в пронумерованных файлах и знать время, необходимое для воспроизведения файла. Сохраните файл в папке «mp3» в корневом каталоге SD-карты, используя четырехзначный метод («0001», «0002» и т. Д.). Затем зарегистрируйте время в миллисекундах, которое требуется для воспроизведения этого файла. Вставьте эти значения в соответствующую таблицу.

Таким образом, для выражения, сохраненного как «0037 - [ваше выражение]», для воспроизведения которого требуется 5400 миллисекунд, вы должны поместить «37» в таблицу chatSayings в соответствующем месте (и добавить префикс в зависимости от того, какая турель говорит it) и 5400 в таблице NormaTimings в том же месте (например, 5-й элемент в каждой таблице).

Теперь, когда значение «i» увеличивается, код будет воспроизводить 0037 в течение 5400 миллисекунд.

Обратите внимание, что я добавил переменную «timeadder», которая добавляет немного дополнительного времени к каждому высказыванию во время игры. Это дает небольшое расстояние между высказываниями, чтобы они не пересекались.

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

Это означает, что вы можете сосредоточиться на написании сценария, а не на кодировании!

Если у кого-то есть лучший способ сделать это, я хотел бы это услышать !!

Шаг 9: Резюме

Резюме
Резюме

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

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

Я также хотел бы, чтобы другие идеи были включены в MTC и контроль турелей!

Я надеюсь, что я предоставил платформу для других дизайнеров и программистов, которую они могут использовать / украсть / у которой можно учиться. Я видел, как это используется, чтобы помочь людям научиться программировать. Удалите секцию из MTC и / или турели, например, «Ручной режим», и попросите учащихся разработать свой собственный способ включения ручного управления!

Я многому научился у этого сообщества и в сети в целом. Я до сих пор поражаюсь, сколько людей тратят уйму времени, выясняя вещи и делясь ими с миром. Думаю, мне следует взять то, что я узнал, применить, а затем поделиться с вами!

Удачи и получайте удовольствие, создавая собственную армию турелей!

Рекомендуемые: