[Перевод] Турель из Portal своими руками

vkbhtm8by8ldllxuoi0p7ohou6a.jpeg


А вы играли в Portal? Даже если нет, сборка личной автоматической турели с детекцией движения и оригинальным голосовым сопровождением наверняка окажется как минимум любопытной, ведь такая диковина может не просто украсить интерьер, но и стать, к примеру, отличным подарком для детей.

Предыстория


С самого первого выхода Portal в 2007 году встречающиеся в этой игре турели сильно впечатляли. Белые штуковины странной формы, манящие вас приятным голосом, но при одном неверном движении расстреливающие в пух и прах.Заняться этим проектом меня подтолкнуло наличие 3D-принтера, сильное желание создать нечто клёвое на сервоприводах и возможность испытать потенциал Fusion 360.

Всего я поставил перед собой несколько целей:

  • Добиться компактного дизайна. Я использую Prusa Mini, поэтому мне хотелось, чтобы детали были небольшими. Кроме того, готовое изделие должно умещаться на мой рабочий стол.
  • Заложить максимально возможную свободу движения.
  • Реагировать турель должна так же, как и оригинал в игре, поэтому нужна озвучка, обнаружение людей и движения.
  • Постараться сделать так, чтобы она не выглядела, как напечатанная на 3D-принтере.


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

Об этом руководстве


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

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

Необходимые компоненты


skcdjudwfpkb4fy52y3woeif3s8.png


  • блок питания 5В с хорошим амперажом (2А должно хватить). Подойдёт и USB-зарядка;
  • коммутационная плата с USB;
  • держатели светодиодов 3 мм х 4шт.;
  • акселерометр ADXL345×1шт.;
  • оранжевые светодиоды 3 мм х 4шт.;
  • красные светодиоды 5 мм х 1шт.;
  • 8-светодиодное кольцо SK6812 5050 RGB х 1шт.;
  • стандартный сервопривод g90×1шт.;
  • рычажный микропереключатель х 1шт.;
  • плата PCA9685, желательно без впаянных гребёнок х 1шт.;
  • PIR-датчик х 1шт.;
  • динамик 4Ом, 4 см в ширину и 2 см в высоту х 1шт.;
  • сервопривод непрерывного вращения g90×1шт.;
  • MP3-плеер YX5200×1шт.;
  • Wemos D1 Mini 3×1шт.;
  • стальной стержень 4 мм.;
  • резьбовая шпилька M3;
  • шестигранник 4 мм;
  • провод;
  • карта micro-sd.


Инструменты


  • 3D-принтер;
  • паяльник;
  • компоненты для покраски и шлифовки;
  • стандартные инструменты вроде отвёрток, мини-пилы и т.д.


Схема


Схематично турель относительно проста. Все компоненты питаются от линий 5В. И ADXL345, и PCA9685 работают по протоколу I2C. YX5200 подключается через последовательный порт, а PIR-датчик и светодиодное кольцо используют для связи по одному контакту.

Несколько важных примечаний:

  • После встраивания Wemos добраться до неё будет уже сложно. Так что обязательно загрузите скетч заранее. Это позволит вам использовать OTA-обновления, избавив от необходимости каждый раз подключать плату по USB.
  • Используйте макетную плату, чтобы заранее убедиться в работоспособности всех компонентов. Нет ничего хуже, чем обнаружить необходимость замены детали уже после завершения финальной сборки.
  • Подтягивание вывода D0, используемого для микропереключателя «открыт/закрыт», реализуется через резистор на 4.7кОм. D0 я выбрал, потому что при подтягивании к верхнему уровню других оставшихся на Wemos контактов возникали проблемы с загрузкой.
  • Для проверки занятости MP3-плеера я задействовал аналоговый контакт Wemos. Это можно счесть пустой тратой аналоговой функции, так как ещё остаётся 2 цифровых контакта. Однако MP3-плеер во время простоя будет подтягивать контакт вверх, так что Wemos вряд ли сможет загружаться корректно при использовании одного из них.
  • Питается Wemos от 3.3В, но сигнал светодиодного кольца ожидает 5В. Мне удалось заставить его работать, но высока вероятность, что вам потребуется логический преобразователь 3.3В — 5В, если вдруг светодиоды будут показывать странные цвета.
  • Для того, чтоб ADXL345 заработал в режиме I2C, контакт CS необходимо подтянуть к верхнему уровню. Логический уровень микросхемы 3.3В, но я по ошибке привязал этот контакт прямо к линии 5В, и знаете — сработало — так что в своей схеме я это подключение оставляю. Вам же рекомендую попробовать привязать CS к выводу 3.3В на Wemos, к примеру.


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


gsepwmtwquxtg6-1mgcxpuhyoss.png


Исходный код


Мозгом турели будет Wemos D1 Mini. Эта мощная маленькая плата несёт на борту WiFi и без проблем программируется. Для установки библиотек и программ вам потребуется Arduino IDE.
Помните, что большая часть ПО была написана просто, чтобы турель заработала, так что для лучшей читаемости код не оптимизировался. Вся функциональность разбита по разным файлам, чтобы хоть немного упростить работу с ней.

Для работы кода также потребуется установить несколько библиотек:


Файлы для 3D-печати


Турель состоит из множества деталей. Все они показаны ниже. Я предлагаю использовать для их деления на части программу вроде Slic3r или Prusa Slicer. Большинство деталей можно напечатать с минимальной или вообще без поддержки. В Prusa Slicer есть инструменты для расстановки поддержки в нужных местах. Параметры вроде температуры и полей нужно определять согласно модели вашего принтера и выбранной нити.

Сложнее всего будет печатать крылья. Мне пришлось использовать довольно много материала на поддержку и сделать большие поля, чтобы получить точный и единый элемент. Если хотите в итоге добиться такой же глянцевой поверхности, используйте для внешних слоёв толщину около 0.10 мм. Внутренние детали можно печатать с немного большей высотой слоя, хотя тогда, естественно, получатся более заметные слоевые линии.

Внутренние детали


Скачать

v9sehplkhle9qc19x_iuwpknu90.png


Внешние детали


Скачать

z9enxgg1j0wmlr8jiscafgc8nlc.png


Ноги


Скачать

nw1azl6ylqpkevdxxjq5f424tgc.png


Аудио


Турель воспроизводит много речевых паттернов из игры. Скачайте этот архив и залейте его содержимое на SD-карту, которая будет использоваться в плеере YX5200.

Окрашивание


Хотелось бы мне предложить вам какой-нибудь упрощённый способ окрашивания готового изделия. Но увы, для получения блестящей поверхности он всего один:

  • использовать небольшую высоту печати;
  • отшлифовать детали;
  • дополнительно сгладить поверхность грунтовкой;
  • использовать глянцевую аэрозольную краску.


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

Сборка


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

Сердцевина


3lweuubav6isvninh3ggr_oznkg.png


Для облегчения печати основа механической части изготовляется в 3 захода. Соедините эти 3 детали при помощи шести винтов.

ewavv6wzh8zgc_qh2b8wimfr1mg.png


Шестерёнки должны чётко входить внутрь. В качестве оси центральной я использовал старый шестигранник. Он должен входить легко, но шестерня при этом должна прочно фиксироваться. Если она будет болтаться, ось может выпасть. Оси остальных шестернёй я сделал из металлических стержней толщиной 4 мм, которые обрезал под нужную длину. Убедитесь, что шестерни ориентированы правильно!

qimdd08qz6le4zlvukhvr-pwnig.png


С помощью 4 небольших винтов прикрепите боковую пластину, чтобы зафиксировать шестерни.

me3qtq9zhqngk-nfbwq9b4bnoyq.png


Установите сервопривод непрерывного вращения и микропереключатель. Этот переключатель позволит микроконтроллеру обнаруживать открытое/закрытое состояние крыльев.

6lmium7b2wdgoiuxgdea85_jsz4.png


qc3likvrrkpk3uyjt4rknudfdo0.png


Вставьте реечные передачи и проверьте их ровность с обеих сторон. Обе должны полностью задвигаться.

mqpoe1-r19ovn6fqmx1izi09n30.png


Теперь ставим большую шестерню. Её тоже нужно зафиксировать на оси жёстко, чтобы не отпала. Можно просто капнуть клея.

p0lev_miapleshtoeosdlvxqyda.png


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

Глаз


jb1rci4x4so7jatbaqc_jftmtnq.png


Центральный элемент печатается плоским, чтобы облегчить сам процесс печати и добиться отсутствия слоевых линий. Однако форма должна быть слегка углублённой. Для этого после печати глаз помещается в горячую воду — пластик становится податливым — и с помощью специальной «чашечки» вдавливается до нужного углубления.

txf2ret3sbvfbxpakfiedndbx9a.png


Светодиодное кольцо должно точно вписываться в крепление. То же касается красного светодиода. Белая деталь — это «диффузор», который рассеивает красный свет равномерно по всему глазу — смотрится намного эффектнее.

95szkg9dxqyytk4l7vjlyhxolis.png


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

Кронштейн для Wemos


mlqjnwc6_eigktqfkmyg2mpjcn0.png


6fsv52_f_dcpm9h4wcqyatb8xmk.png


Для Wemos нужно напечатать небольшой кронштейн. Имейте в виду, что на момент написания статьи уже вышла Wemos v4, у которой крепёжные отверстия расположены иначе. Либо возьмите v3, либо переделайте сам кронштейн. Сам он подразумевает прикручивание платы всего на один винт, что упрощает дальнейший доступ при пайке компонентов.

Основной корпус


vmnmsvvk7w0vkeq62osq6q2zzlk.png


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

jwq6tq1ljhykotijq8oszgcwoae.png


whmabhhwai5wn4wnkd9jmj4wcus.png


Теперь наденьте на стержни вторую часть корпуса, также закрепив клеем.

bvqubdze3yhumdnmg3sbms9mmlk.png


Можно ставить собранный глаз на место. Далее приклейте кронштейн с Wemos. Это дополнительно поможет выровнять два элемента корпуса.

Верхняя часть


zd0e0vkt-ebo96tr1gb7u5gnm-y.png


Нижний элемент является частью навеса, обеспечивающего поворот крыльев. Здесь же размещаются PCA9685 и YX5200. Поскольку у плеера крепёжных отверстий нет, я решил его просто приклеить к верхнему сегменту.

Ради экономии места советую выпаять с YX5200 гребёнки. Отрежьте ножницами чёрные пластиковые элементы и при помощи паяльника извлеките металлические штырьки. Убирайте их по одному. Не перегревайте чип.

PCA9685 крепится 4 винтами.

pi7hkpqms3jlodb1rukfaekgtiw.png


После приклеивания YX5200 к детали можно её прикрутить.

hsd-wxlukgvzmvozvseh5otnx7c.png


Вставьте готовый узел в корпус и закрепите 4 винтами. Теперь вся сборка станет намного устойчивей.

Нижняя часть


zmu-fufiqc4e6j2eqxpdhv0ge2s.png


Запитать турель можно по-разному — использовать коммутационную плату с USB или просто проложить провода напрямую — оба варианта должны вписаться под маленькую планку, которая крепится двумя винтами.

Следом идёт акселерометр. Для его крепления предусмотрены две опоры.

8jysw-nx8qgedcm5_5z5avxe9zq.png


Вся эта пластина крепится снизу шестью винтами. PIR-датчик фиксируется спереди, занимая удобное положение над акселерометром. Места здесь немного, но при плотной укладке проводов должно получиться.

7rpe2lhr7h93-w6so2luuq9xdzc.png


Прикрутите малую шестерню к сервоприводу и установите его на пластине.

3avikvakxorc1fwnlpqcuafdodo.png


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

2emnp0uojwjokwqpy1ywdtfnis4.png


Ещё один небольшой кусок стержня используйте в качестве шарнира между верхней и нижней частью.

kzoagr1iqaeyn8qo1vedf8c7fbk.png


На этом большая часть внутренней механики завершена.

qr50n5mpwa83fwopcawxf2pxp04.png


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

Крылья


34byzdsyw45kqgcc3i3z5ge9tus.png


Сначала два пулемёта. Вставьте белые светодиоды в металлические держатели. Сами держатели вставьте в дула. В них они должны держаться без дополнительной помощи.

tqork7-qtfaisefdrayvvbaaun4.png


Сзади пулемётов есть небольшой канал для прокладки проводов. Закрепите светодиоды и провода с помощью клея. Убедитесь, что провода дотягиваются до PCA9685. Возьмите с запасом — будет проще отрезать, чем потом перепаивать новые.

dlto0lbdhcee795wgmt5gqgejdy.png


Отрежьте четыре стержня нужной длины. Рекомендую их шлифануть, вставив в дрель и повращав внутри наждачной бумаги. Шлифуйте хорошо, но учитывайте, что они должны входить максимально плотно, чтобы крылья не совершали лишних колебаний. Теперь слегка загрубите концы штырей и вставьте их в крыло. Рекомендую на время высыхания клея установить крылья в основной механизм, чтобы зафиксировать стержни. Но смотрите, чтобы они его не касались, иначе могут приклеиться. Спросите, откуда я это знаю…

lq9o2btwzgny29zkqsaq6hjalt0.png


lpcc9escb6ongb_8aebxr7-mzwa.png


Прикрутите пулемёт с помощью 2–6 винтов.

y2kyj_z496ixsoip2cuqjmr4c_c.png


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

cvua-unw-i0cxdfpstxpnmar_la.png


После склеивания и фиксации всех элементов можете задвинуть крылья и защёлкнуть рейки на штифтах.

Ноги


giztv-7llbasscgwuumkg3ksy3k.png


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

Добиться правильной формы металлических деталей может быть нелегко — всё же сталь 4 мм. Советую использовать что-нибудь круглое подходящего размера, чтобы выгнуть пруты под нужным углом.

Завершение!


wqoeddzw9syyznjwxyzyhr5dcj8.png


Теперь пора вклеить все три ноги и антенну. На этом сборка закончена.

Первый запуск


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

Посмотреть IP-адрес турели можно через роутер или на странице http://portal.local через устройство, подключённое к той же сети. Эта ссылка выведет вас на тематическую страницу турели в стиле Portal, где вы сможете просмотреть её датчики.

oug5kh6sjydt9llengsiebnp40w.png

© Habrahabr.ru