Warhammer 40k + Arduino
Что, Зачем и Почему?
Для ЛЛ:
Самодельный механизм в стилистике Warhammer 40 000, задача которого перекладывать листы в обратном порядке и вести подсчёт. Нужен для любительской типографии.
У User10939331 есть хобби - изготовление книг.
Для переплёта уже давно изготовлены самодельные машины, но сегодня речь не про них.


Речь о старом техпроцессе, который хотелось вернуть к жизни.
Итак, поехали:
С тех времён, когда типографское хобби у меня только начиналось, осталось несколько старых принтеров, которые были великолепны во всех отношениях: простота, неубиваемость, отсутствие чипов, лёгкость обслуживания и ничтожная стоимость тонера.
Это LaserJet-ы 10xx серии.
Но пара существенных недостатков, стала в итоге причиной постепенного перехода на более профессиональный класс техники - отсутствие двухсторонней печати, и необходимость вручную перекладывать в обратном порядке стопку листов для печати на задней стороне.
Да, существует возможность менять очерёдность печати программно, но она вечно приводила к путанице, особенно при большом количестве тетрадей. К тому же, редко, да метко, принтеры захватывали два листа одновременно, из-за чего вся партия распечаток отправлялась в шреддер.
Внезапное вдохновение подсказало мысль, сделать устройство, избавляющее от необходимости переслюнявливать пачки распечаток, и ведущее подсчёт листов в стопках.
В очередной раз услышав от жены коронную фразу:
В голове что-то щёлкнуло, и мозаика сложилась.
Преисполнившись вдохновением, для начала оформил проект на бумаге, стараясь по возможности придерживаться как нормативов единой системы конструкторской документации, так и стилистики Warhammer 40000 в оформлении текста.
Если уж борщить - то на полную катушку.
Отдельно составил реестр всех контактных соединений, цветовой маркировки, таблицы выходных состояний, и распечатал программный код с комментариями. Если когда-нибудь придётся возвращаться к проекту для ремонта или модификации, то деменция уже не станет помехой.





Схемотехнический справочник со словарём терминов
Базовый конструктив построен на фундаменте Ардуинки, оптическом сенсоре, и паре реле, коммутирующих полярность питания 12в электромотора.



Конструкторская документация.
Радиолюбители могут справедливо упрекнуть, что такую задачу любой пионер мог реализовать на несимметричном мультивибраторе, из пары транзисторов, а индикацию выводить через сегментный индикатор, на схеме сдвигового регистра.
И в целом будут правы, но расчёты и распайка займут раза в 3 больше времени.
Механизм задумывался (и реализовался от старта до финиша) как проект на 3 вечера
В качестве исходного донора аппаратной части взял потроха от какого-то HP-шного струйного принтера. Кинематика построена вокруг единственного электромотора, который в зависимости от полярности питания работает либо на механизм захвата листа, либо на его протяжку.
Нужный момент, когда лист уже подхвачен из стопки, должен определяться по сдвигу шторки, открывающей прохождение сигнала оптическому сенсору. К сожалению, плата с сенсором на доноре отсутствовала, поэтому по быстрому распаял датчик с обвязкой на куске картона, ввиду дефицита текстолита.
"Плата" пропитана цапонлаком, и проблем с ней не возникнет, а ублюдочность монтажа скрыта от глаз.
На заднюю крышку уместился блок питания, (в котором пришлось подобрать резистор обратной связи), для выдачи стабилизированных +5 и +12в, плата с коммутационными реле, и колодкой для подключения звёзд GND и VCC, и плата с Ардуинкой.
Учитывая почтенный возраст источника питания, выпаял и проверил ESR всех конденсаторов, коммутацию питания вывел на отдельную плату, чтобы ненужные токи не бегали через микроконтроллер. Питание Ардуинки вывел непосредственно в пин +5, в обход внутреннего стабилизатора.
Разумеется, обвязка катушек реле выполнена с использованием защитных диодов, и керамики, (не отмеченной на схеме).
Индуктивность не будет шляться где-попало.
Предусмотрительно присобачил нормально замкнутый концевик, в месте будущей установки выходного лотка. Он должен подниматься, открывая доступ для загрузки, и работа двигателя в этот момент должна прерываться.
Лицо изделия - индикатор.
В запасах нашёлся дисплей формата 16х2, от старого японского программатора, начала 80-х годов, с совершенно потрясающей янтарной подсветкой и красивыми встроенными шрифтами.
Но выбор этого индикатора добавил кучу проблем:
Нестандартный, 15-пиновый коннектор, затрудняющий использования платы-адаптера, для лёгкого подключения двумя проводами через I2P.
Отсутствие русских символов в CGROM-е реликтового контроллера HD44780.
Крохотная память, способная хранить в CGRAM и одновременно выводить на экран только 8 "попиксельно" отрисованных пользовательских символов.
Но на мой взгляд, плюсы использования именно этого индикатора превышают потенциальные неудобства его пусконаладки.
Подключить пришлось шлейфом, использовав кучу контактов микроконтроллера, но в блоке индикации всё равно смонтированы кнопки сброса и продолжения, так что коса больших затруднений не вызвала.
Программная часть.
С аппаратной частью практически всё готово, и настало время быдлокода.
Вооружившись инфарктным количеством кофе, и обзаведясь слегка изменённым сознанием, сопровождаемым приятным тремором, приступил к программной реализации запланированного функционала.
Программировать я практически не умею, но простота синтаксиса, и море доступных примеров дают возможность написать пускай и уродливый, но вполне работоспособный код даже обезьяне. Вроде меня








Исходный код, полностью и с комментариями.
Скетч использует 13224 байт (40%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 1409 байт (68%) динамической памяти, оставляя 639 байт для локальных переменных. Максимум: 2048 байт.
Итоговый скетч раздулся до двух тысяч строк кода, (включая комментарии и отладочные сообщения через serial) и отнял почти сутки жизни, зато удалось реализовать:
Русские символы, в специфическом дизайне, соответствующем оригинальным винтажным шрифтам дисплея.
Автоматический режим сна при бездействии.
Программное избавление от дребезга контактов, вызывающее ложное многократное повторение сигнала.
Ручное управление реверсом двигателя.
Счётчики текущей операции и ведение глобальной статистики.
Режим самодиагностики и самоочистки, при застревании бумаги.
И самое главное:
Тридцать одно сообщение, выводимое на экран, в стилистике Warhammer.
Изготовление корпуса
Моё представление о промышленном дизайне достаточно консервативное: функционал определяет форму. Это означает, что в проекте не будут использоваться декоративные кишочки, проводочки и узелочки, которые так любят многие самодельщики, добавляя окончание -панк к таким творениям.
Только цветовая триада медь/графит/красный, и минимум бесмысленных украшательств.
Любой проект, который выходит за рамки формата "собрано на коленке", неизбежно упирается в поскрёбывание по сусекам, в поисках листового материала для сборки корпуса. К сожалению, в закромах, несмотря на видимость изобилия, подходящего материала нужного размера толком не нашлось. Под "проект на выходные" не хотелось ехать закупаться, поэтому, мучительно преодолевая жадность, решил использовать пару листов, которые лежали пятый год без дела.
Графитонаполненный политетрафторэтилен, он же фторопласт-4, он же PTFE или Тефлон.
С одной стороны, совершенно абсурдно использовать материал с космическими свойствами, и космической же стоимостью не в контексте изготовления втулок скольжения.
Но с другой стороны, в месте, откуда я эти листы экспроприировал, 10-мм фторопласт пилили болгарками, и использовали для изготовления условно многоразовых табличек, примотанных проволокой к поддонам с продукцией.
Простейший способ изготовления прямоугольного корпуса - соединить шпильками верхнюю и нижнюю крышку, и затем обшить его по периметру. Это позволяет избежать лишних трудозатрат с поиском, резкой и гибкой крупноформатного листового материала.
Заранее подготавливаю все монтажные и резьбовые отверстия, не забывая про запас стыковочных диаметров на подгонку.
Лицевые поверхности, после шлифовки 120-240-320-400 приобретают свойства SoftTouch покрытия, это одновременно и плюс (на ощупь) и минус, (на камеру выглядит грязновато) Ворсинки, неразличимые невооружённым взглядом, укладываются в том же направлении, после касания, где прошла рука.
Торцы листов после раскроя не шлифую, они будут полностью скрыты наружными панелями.
Когда две базовые плоскости готовы, выставляю общую высоту, ориентируясь на ходовой зазор панели выходных прижимных роликов, и становятся известными размеры боковых и лицевых пластин.
Входной лоток на этом этапе решаю оставить как есть.
Так как в запасе имеются огрызки нержавейки, 20х20см, раскладываюю сварочный пикник, и настраиваю аппарат на тестовом образце.


По результату получившегося шва, мелькает мысль о том, что пора бы прекращать вы%%ываться, и такая техническая возможность сразу же предоставилась.
Прохлопал остаток аргона в баллоне, и пришлось заваривать лицевые панели электродами, и отказываться от изготовления мелких деталей.
Как говорится: "Не говори гоп пока не переехал Чоп"
Изготавливаю выходной лоток, из подходящей по размеру алюминиевой плиты, и пары каких-то под руку подвернувшихся мебельных профилей. Соединение на заклёпки.
Лицевую поверхность оформляю бесполезнейшей из покупок жены - "тефлоновым ковриком для гриля", заодно протестировав работу клеевого спрея на теоретически несклеиваемом материале.
С левого торца подгоняю штифт для концевого выключателя.
Лицевые панели после окраски. Дефекты геометрии по месту сгиба оставляю как есть, без шпаклёвки эпоксидкой.
Перфекционизм часто приводит к творческому онанизму, срывая запланированные сроки выполнения.
Начало сборки корпуса. Зазор на переднем срезе закрывается тем же профилем, оставив пару миллиметров люфта для свободной работы механики.
Без сквозной посадки шпилек можно было обойтись, нарезав глухую резьбу с внутренней стороны, но фторопласт - капризный материал.
Сверло, едва коснувшись, начинает режим самоподхвата, и без сверлильного станка с ограничителем глубины, шансы на успешное выполнение такой задачи стремятся к нулю.
Внутренние радиусы лицевых панелей решил не закрывать, без WIG сварки слишком большой шанс искорёжить геометрию тепловыми деформациями.
Сборка контрольной панели.
Единственная деталь, которую принял как есть, несмотря на явный концептуальный диссонанс с общим стилем геометрии.
Радиусы в отдельных функциональных элементах, (при хорошем дизайне), должны гармонически сочетаться друг с другом, а здесь рубленная остроугольная форма.
Но желания мучиться с нержавейкой, прогрызая окошко для индикатора, не было, а готовая алюминиевая коробка в наличии имелась.
Поэтому вынужденный компромисс.
Последняя панель, монтаж кнопки питания.
И слегка обескураживающая картина, с мешаниной входов/выходов/управления/питания.
В этот момент поблагодарил себя, за составление документации. Когда все цепи расписаны заранее, не нужны даже бирки на коннекторах.
Классическую перевязку жгутов делать не стал, для этого пришлось бы подгонять длину проводов и перепрессовывать большую часть наконечников.
Наношу Священный Елей гальванический контактный состав из графита, замешанного с цапонлаком на заднюю панель. После трёх слоёв покрытие становится равномерно матовым, а графит запечатывается под слоем лака, и не пачкает руки.
Традиционно, вкладываю всю документацию внутрь корпуса, и закручиваю последний болт.
Заодно крашу тем же составом и боковые стенки панели управления.
Время последнего штриха - Печать Чистоты.
Распечатываю Литании и декоративную часть.
О том, как в домашних условиях, без проблем и спец. оборудования сделать выборочную металлизацию - я уже подробно описал в этом посте.
Лимит Пикабу на фотографии в посте ограничен 50, поэтому функционал работы сделал в формате видеоролика, в шапке поста.
Продублирую видео альтернативным плеером, если с Youtube имеются проблемы:
P.S. Ничего не рекламирую, зарабатываю на кусок хлеба сам, донаты не прошу, услуги и подписки не предлагаю, спасибо за внимание.
.
P.P.S. Прошу прощения у трёх сотен подписавшихся на меня человек, ожидающих продолжения серии восстановления вкладышей turbo, ориентировочно со следующей недели проект продолжается.




























Warhammer 40k
21K поста24.6K подписчика
Правила сообщества
Ссылка на полный список правил
1.Посты-баяны будут удаляться.
2. Контент, не относящийся к вселенной, будет выноситься в общую ленту.
3. Вводится система тегов.
WH Humor – юмор;
WH Art – арты;
Crossover – контент сочетающий в себе смешение различных вселенных.
Warp-тред – одноименный паблик;
WH News – новостные посты о новых релизах, обновлениях и т.д;
WH Back – всяческие инфопосты о вселенной;
Comics – все комиксы по вселенной.
WH other – если вы не можете определиться с тегом;
Фанфик – если в посте содержится неофициальная информация;
WH Miniatures - изображения миниатюр для настольной игры;
Old Warhammer - если пост содержит устаревшую информацию. Приветствуется максимально полное отражение содержимого поста в тегах и ссылка на источник материала.
Wh r63 - если пост содержит женские версии персонажей-мужчин и наоборот. А так же откровенный, эротический фансервис.
4. Все правила не являются строго обязательными, но за их многократное игнорирование нарушитель будет наказан.