Бесплатная веб-камера для Adventurer 5M

Так случилось, что пару недель назад приятель мне говорит — «А что-то там какие-то 3D принтеры появились дешёвые, и вроде нормальные, может и мне такой купить?» Ну я посмотрел, а там разные варианты FlashForge Adventurer 5 по скромным ценам со скидкой… Дай, думаю, закажу себе, чтобы ради печати какой-нибудь мелочи, особенно из ABS-пластика, не раскочегаривать стол 400*400мм большого принтера, который потребляет под пол-киловатта.

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

Итак. Даже базовая заводская прошивка этого принтера, базирующаяся на «кастрированном» Klipper, поддерживает и удалённый просмотр (правда, только с одного адреса в один момент времени), и запись таймлапсов печати. Камера по умолчанию доступна в зашитой версии принтера — 5M Pro, или её можно отдельно купить, и установить в принтер версии 5M, подключив к специальному разъёму на задней стороне дисплея.

Из примечательных особенностей родной камеры — широкий угол обзора, захватывающий весь стол, разрешение HD 720p, и подключение через 5-контактный JST-разъём, а так же обычное для USB питание +5В. Из неявных технических особенностей — аппаратный кодек MJPEG, сжимающий изображение в самой камере, и передающий уже сжатые кадры на немощный процессор принтера. Здесь и кроется первая загвоздка — вы можете купить любую веб-камеру, подключить её к USB-разъёму на экране, система её определит как камеру, но работать с ней не будет, если камера не поддерживает по умолчанию MJPEG, а отдаёт изображение в сыром формате YUV — из ядра Linux оригинальной прошивки поддержка перекодирования сырого видеопотока YUV вырезана для экономии ресурсов. Я потратил пару часов, пока разбирался с этим моментом…

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

Говорить о том, что всякую электронику я не выбрасываю, думаю, излишне, поэтому у меня есть довольно больший ящик со старыми ноутбуками разной степени комплектности, а так же массой их запчастей. Порывшись там, мною были найдены три портсигара импортных модуля веб-камер — один модуль iSight от Mac Book, на чипе Vimicro, и два от Acer Extensa разных моделей, один — на чипе ALI, и ещё один — на чипе Sonix. Камера от Apple могла бы стать оптимальным решением — она уже имеет на плате модуля понижающий преобразователь, и питается +5В, не требуя отдельного источника +3,3В для питания камеры. Но, к сожалению, она отдаёт данные в сыром YUV, как и модуль Acer Extensa на чипе Sonix. А вот модуль на чипе ALI — отдаёт нужный нам MJPEG! Поэтому, несмотря на разрешение всего 640*480, будем устанавливать его.

Модуль — маленькая плата, устанавливаемая в верхней части крышки ноутбука, и подключаемая к материнской плате обычно через общий разъём шлейфа матрицы. Но, тем не менее, в 99,9% случаев она имеет обычный аппаратно совместимый USB-интерфейс, отличаясь лишь питанием 3,3В.

Вот и сам модуль.

Чтобы не морочить голову с пайкой, был использован родной кусок соединительного кабеля, безжалостно откушенный на переходе к общему шлейфу. Его длины как раз хватило, чтобы разместить камеру там, где я планировал. Кабель был оконечен разъёмом DuPont.

Далее встал вопрос — где же искать 3,3В? Решения этого вопроса могут быть очевидными, делящимися на странные, вроде использования DC-DC Stepdown-преобразователя, нормальные, вроде использования линейного стабилизатора AMS1117L-3.3, и не очевидными, но максимально простыми. Буквально пара минут изучения дисплея, большую часть которых я откручивал винты, показали, что он питается искомыми нами 3,3В, доступными на переходной площадке, с которой достаточно просто ободрать лак, и припаяться туда.

Поэтому берём провод МГТФ, оконечиваем его ответной частью разъёма DuPont, и припаиваем три провода — GND, Data+ и Data- к разъёму JST, а провод +3,3В — к зачищенной площадке.

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

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

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

Далее были распечатаны несколько версий корпуса и креплений, последней версией которых стали приведённые ниже.

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

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

Провод камеры уложен вдоль шлейфа экрана.

Экран не играет в обработке сигнала линий USB никакой роли. USB-хаб находится на основной плате принтера, и провода можно было провести прямо туда, но смысла в этом особого нет.

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

А ниже них видны резисторы, перепаяв которые, удалив R107 и R108, и запаяв их вместо R248 и R249, вы можете перенаправить линию USB с разъёма камеры на не распаянный разъём USB на основной плате, место под установку которого видно на фото.

Последний штрих — настройка фокусировки. С завода объектив камеры заранее настроен на фокусировку на объектах, расположенных в 50-80см перед камерой, и залит клеем. Однако, слегка подогрев его паяльным феном, и покрутив, клей ослабляется, и у нас появляется возможность настройки фокуса.

Фокус настраивается просто — на расстоянии примерно 14-16 см ставится какой-нибудь предмет, видеопоток с камеры выводится в браузер, и мы визуально настраиваем фокус по оптимальной видимости деталей. Адрес по умолчанию — http://*IP-адрес принтера*:8080/?action=stream

Практический результат был немедленно закреплён путём съёмки таймлапса печати кораблика Бенчи из ABS.

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