Принтеры с заводским СНПЧ умеют по расписанию самостоятельно производить прокачку и самоочистку
Не знал. У меня уже год стоит Epson L3250 со встроенной СПНЧ, но я никогда не замечал что он выполняет прочистку и прокачку время от времени. Однажды я оставил его на пару недель и он выдавал пустые листы пока я вручную не вызвал сервисную команду для прочистки печатающей головы, которая работает лучше чем на HP Deskjet 2630
Согласен - я не совсем прав. Generic драйверы гарантирует поддержку конкретного PDL и необходимо только убедиться в том, какой протокол поддерживает принтер.
Однако, если принтер поддерживаются только своим уникальным GDI, то эта проблема может быть неразрешима и необходима поддержка со стороны производителя, либо человека с навыками реверс-инжиниринга чтобы переписать его если производитель делает этого. Мне не известно какая вероятность столкнуться с таким принтером, но я слышал что некоторые принтеры выпущенные ~10 лет не поддерживают PDL совсем. Возможно это касается бюджетных устройств, которым не хватает ресурсов для интерпретатора PDL.
С какой-то вероятностью должен работать Generic/Text Only драйвер. Но, по сути, он отправляет задание в RAW формате и тот же .doc будет выглядеть совсем не так как ожидается
Никаких ссылок на документацию там нет, зато есть "This project is launching soon. Coming soon. 0 updates", похоже, что это просто концепт.
Фотографии выглядят так будто проект уже на финальной стадии, неделю назад я не нашёл ни намёка на исходники. Автор данной статьи прямо пишет что исходники выложены, я понадеялся что правда появилось какое-то обновление, но о них всё ещё нет абсолютно никакой информации.
как это все будет соответствовать закрытому протоколу управления головкой HP
Хочется верить что HP всё равно, я бы сказал, им же выгоднее, ведь старые картриджи будут нужны более широкой массе людей, кроме того сами картриджи без DRM и уже морально устаревшие.
Вряд ли HP одобрит реверс-инжиниринг и включение проприетарного (и наверняка обложенного патентами) подключения головки к открытым проектам под лицензией CC
Spritem занимался реверс-инжинирингом и его никто не прикрыл, даже можно найти его выступление на Hackaday Supercon, которое до сих пор доступно как и исходники на Github. Его наработки использовались для другого проекта на hackaday + репозиторий. А их вместе сейчас использую я для третьего) Патенты есть (они упоминаются в статье Spritem). Я не разбираюсь в патентном праве поэтому не уверен будет ли открытый проект являться его нарушением. Опять же существуют ручные принтеры, которые используют картриджи от какого-то старого принтера, но я всё время забываю как они называются (возможно это тоже HP).
Open Printer наделал много шума - HP вполне уже могли сделать како-то заявление.
моральное устаревание вечного качества старых устройств)
Лучше бы сделали открытый проект драйверов для старых лазерных принтеров выпущенных миллионными тиражами.
Если есть спецификация по управлению такими картриджами, то этим можно было бы заняться. Реверс-инжинириг логики работы картриджей довольно нетривиальная задача. Это всё возможно только если найдётся какой-то энтузиаст с подходящим оборудованием и положит на это какое-то количество времени.
Я не знаю ответов на Ваши вопросы (возможно они риторические), но современном мире можно найти практически всё. Скорее всего, есть специализированные магазины по продаже комплектующих для принтеров, сервисы, иногда, тоже используют б/у запчасти, особенно частники.
Полагаю, в случае с головами, производители принтеров отдают их OEM производителям, которые могут поставлять их куда угодно (чем, возможно, могут пользоваться продавцы из Китая), поэтому не думаю что производители принтеров зарабатывают на непосредственной продаже, а скорее лицензируют производство и берут процент (либо любая другая схема - тут я не разбираюсь). Сервисам же эти головы, явно нужнее, чем рядовому пользователю - большинство не знает как работает принтер, а лезть менять полезет ещё меньше. Поэтому жёсткого контроля точно нет, а есть конкретный целевой рынок сбыта. Поскольку поломанных принтеров с живыми головами много, то и на рынке можно найти, в основном б/у.
Возможно вы правы, ещё одно предположение, у картриджа вышел из строя резистор. Я подключил СНПЧ как раз чтобы меньше заниматься грязной и муторной работой), в теории, HP123 и подобные можно вскрыть, промыть и заново склеить, но оно того не стоит т.к., в моём случае, они свой ресурс отработали раз 20. При таких условиях, раз в год потратить 2000 рублей на комплект картриджей с Али, кажется не таким существенным.
Объём HP123XL, вроде 18 мл. За тот год израсходовалось около 3-4 бутылочек чернил по 100 ml ценой ~500 рублей - комплект CMYK.
В норме струйный принтером нужно пользоваться постоянно, иначе, спустя несколько дней, в картридже засыхают чернила. Часто люди о своих принтерах забывают на месяцы (а то и годы) и знать не знают что их необходимо после этого прочистить (хотябы прокачать), но это уже продвинутый уровень, хорошо если пользователь знает о встроенной функции прочистки печатающих голов и совсем редкость если пользуется.
С уверенностью можно сказать что более открыта чем печатающие головы.
Вряд ли в открытом доступе найдётся полная электрическая схема самого процессора и исходники для эмуляции на ПЛИС. Raspberry Pi всегда позиционировалось как что-то упрощающее жизнь DIY сообщества в их разработках. Как минимум, документация полностью доступна, любой может купить плату и работать с ней. Так что весь вопрос в границах "открытости" и тот же вопрос можно задать про Arduino и STM32, которые тоже используются в Open Source проектах.
Для свободного проекта нужно брать отдельную печатающую головку (не разработанную как одноразовая) и ставить СНПЧ.
Как раз проблема в том что таких голов нет, а изготовить в кустарных условиях что-то конкурентноспособное проблематично. Открытые протоколы только у промышленных печатающих голов, но они стоят как автомобиль, про некоторые проблемы можно прочитать тут
СНПЧ DIY-щики сами прикрутят, ресурс картриджа не так критичен. Например, у меня HP Deskjet 2630 и я проделал отверстие, в корпусе приклеил кронштейн чтобы подключить СПНЧ - даже при больших объёмах печати (практически 24/7 текст с картинками) у меня картриджи HP123 (термоструйные) прожили год, потом появились проблемы с цветами (перестали работать красные дюзы)
Создатели выложили в открытый доступ все необходимые материалы — от схем до драйверов, — чтобы любой желающий мог собрать или модифицировать устройство
У меня проект, преследующий схожую цель, процесс создания которого я описываю в статьях на Хабре. Где-то неделю назад в комментарии скинули ту же самую статью на crowdsupply, которая указана у Вас в статье, но ни схем, ни кода, ни конкретики в компонентах она не предоставляет (STM32 микроконтроллеров вагон и маленькая тележка). Так откуда взялась информация про то что "все необходимые материалы" уже в открытом доступе?
У LCD ног достаточно. Причём можно воспользоваться его штатными сигналами синхронизации
С LCD я пока не знаком так близко (как, в принципе, с большей частью embedded). У STM32H7 есть аппаратный LСD контроллер. Если действительно завязаться на него, то 24-битной версии хватит на два картриджа сразу)
Так потихоньку программно и FPGAшку можно во многих задачах заменить)))
Никогда не cвязывался c FPGA и ПЛИС в целом. Но мне приходилось слышать как программную логику переносили на ПЛИС, так что было бы круто запрограммировать какую-нибудь ту же FPGA на управление принтером) или хотя бы картриджем) передавая ему RGB пиксель, который сразу преобразуется в необходимую последовательность сигналов).
GPIO->ODR - для текстового ЖК аппаратный экранный буфер, например, делал
Насколько я знаю, BSRR работает быстрее и атомарен, в отличие от ODR.
С ODR работать проще - в него сразу помещается нужное значение для всего порта. Мне кажется, я когда-то использовал ODR для управления матрицей на адресных светодиодах
Я пока всё таки на стороне BSSR с синхронизацией по таймеру. Он более гибок и даёт возможность "прямой" реализации любого интерфейса.
Про DMA можно ещё углубиться в описание, и разобраться с настройкой приоритета и буферизации
Даже выдавая высший приоритет DMA и устанавливая самую высокую скорость на GPIO - анализатор не отображает никакого влияния. В данный момент упор, видимо в таймер - его тактирование очень близко к шине APB и SYSCLK, а значит callback таймера вызывается довольно часто и, вероятно, его количество тактов > количества тактов, необходимых таймеру.
Ещё не забыть, что DCLK - это сам таймер, его паттерн не нужно в DMA пихать
Не могу полностью согласиться. В диаграмме из статьи на Hackaday с реального принтера можно увидеть смещение S1-S5 относительно DCLK, так что нет полной уверенности он эквивалентен таймеру. Возможно это артефакты в работе принтера или анализатора - нет уверенности. И библиотека от Spritem и PrintSpider_Arduino генерирует с дублированием 0 и 1 (надо анализировать зачем, для меня это немного странно), поэтому пока что таймер должен быть в 2 раза быстрее DCLK.
Могут, но для одного картриджа надо контролировать 12 ног одновременно, мне не хватит интерфейсов :D поэтому я остановился на связку GPIO->BSRR + TIM + DMA. Насколько понял, Spritetm использовал I2S, но я не разбирался подробно с его кодом
Интересно, на фотографиях выглядит вполне неплохо (правда вид на стене заставляет задуматься повесить это в туалете). Классно что, по сути, они делают компактный плоттер. Хорошая идея разделить коммуникацию и контроль печати по двум контроллерам. В своей первой статье я тоже рассматривал такую возможность как способ не упираться в производительность STM32.
Однако, к сожалению, я не нашёл ссылок к исходникам и подробностям железа, в репозиториях участников тоже. И тут уже приходится гадать: проект завершён и ждёт своего часа у кого-то в гараже; проект на стадии закрытой разработки; проект даже не начали. Без финансовой поддержки они могут не дать больше никакой информации. С другой стороны, это бы полностью убило смысл моего проекта, так что я даже немного рад.
Если я собираюсь рендерить картинку на контроллере (например, печатать с флешки), то в RAM должна поместится картинка + рендер. Можно схитрить и использовать дополнительную внешнюю память (даже не обязательно RAM), но работать это будет медленнее.
Или для непрерывного движения головы достаточно будет помнить растр одного горизонтального прохода?
Можно и меньше. Думаю, для непрерывной печати, лучше иметь одну строку в работе и одну строку в запасе. В теории, можно даже дробить одну строку. Если картинку рендерит ПК, то, как показал опыт предыдущей части, при подключении по USB, МК может получать буфер такого размера, какого ему удобно:
Хотя RxBuffer имеет размер PRNT_RX_DATA_SIZE = 512, я использовал PRNT_DATA_FS_OUT_PACKET_SIZE = 64
Пока это догадки. На сегодняшний момент принтер получать только текст и выводит его в uart. Всё будет зависеть от того, какую подготовку будет выполнять драйвер и как с ней справиться МК.
И есть нюанс у USB. Вроде, он работает на прерываниях - без DMA и интеграции модулем в RTOS. Боюсь может получится так, что запрос следующей порции данных может повлиять на процесс печати.
F411, кажется, уже подошла к своему пределу и не может выдать требуемых таймингов на GPIO, до упора в RAM или Flash ещё далеко. Нужно иметь порядка 100 нс (на это рассчитана библиотека для формирования сигналов), а сейчас, в лучшем случае, получается выдать 250-275 нс даже при увеличении частоты татирования до 72 и 96 МГц. Так что переезд на H753 уже выглядит не как не далёкая перспектива, а необходимость для продолжения развития проекта
совершенно необходим для печати на плате и травления после
Мне бы тоже этого хотелось! Я видел проект, где для печати плат приспосабливали старенький принтер. Промышленные печатающие головы хорошая идея, но стоят они дорого, всё таки хочется чтобы кто-то потом смог воспроизвести проект (если он дойдёт до логического завершения).
Давным-давно отец показал мне ЛУТ, а пару лет назад я перешёл на фоторезист (т.к. только он был самым доступным со струйным принтерами, а лазерного у меня нет). Лично у меня не всегда хорошо получалось переносить с их помощью сложные платы с тонкими дорожками и крошечными пятачками (всегда надо править шаблон), хотя видел как это делают другие.
промышленные картриджи с краской УФ отверждения
Где-то я встречал обычные чернила (т.е. без УФ), которые могут хорошо держаться на меди и спокойно выдержать процесс травления. Источник, к сожалению, не сохранился. Подозреваю что с этим могут хорошо справиться лазерные принтеры.
Мысль превратить принтер в печатный станок для плат вполне реализуема если проект дойдёт до релиза (я держал это в уме). Я рассматриваю это как форк или пару флагов компиляции. По сути, это планшетный принтер.
Если такой способ изготовления плат окажется не хуже и выгоднее чем на том же фрезерном станке и лучше или на уровне с ЛУТ и фоторезистом, то я, однозначно, хочу такой принтер для домашних поделок.
А транспорт - да, от плоттера, лазерного гравера, чтоб хоть этим не заморачиваться
Находил такое: используют базу от 3D принтера или гравера.
А печать на бумаге - для интереса только
Не совсем согласен. Печать на бумаге всё таки более востребована в массе. И, так получилось, она сложнее реализуется. Можно с относительной лёгкостью сделать простой CNC на базе GCODE (интернет ими пестрит), но вот получить полноценную печать на его базе сложно (если не невозможно) - видел что-то похожее на матричную печать на базе 3D принтера и картриджа от советского (?) принтера. Задумка хорошая, но для фотографий и рисунков не очень годится, не говоря о том что для CNC всегда нужен специализированный софт. Моя задумка сделать принтер (работает как принтер, все узнают в нём принтер и т.д.), а как это использовать и переделать народ справиться сам)
Не то что бы я мучался, проект идёт не торопясь, в свободное от работы время, и в своё удовольствие) Причина, по которой я взял F411RE проста - она лежала у меня в ящике. Не было уверенности что получится продвинуться хоть сколько-нибудь, поэтому покупать навороченную плату было бы пустой тратой денег. Я думаю, что если единственной задачей будет только то что описано в статье (без RTOS, без остальной логики), то даже F103 может оказаться достаточно (в теории), а они стоят дешевле пачки семечек на Aliexpress и, тем более, Arduino Nano (до сих пор удивляет что они не вытеснили их).
Не проще просто взять H7 на 480мгц и не мучаться?
Взять более мощный процессор проще и я согласен что это упростит работу, но не факт что это целесообразно по финансовым затратам. Да, для более-менее человеческой разработки надо брать Nucleo-H753ZI/Nucleo-H563ZI или что-то около: на борту будет ETH (который в будущем может пригодиться), да и возможностей для подключения периферии раза в 2 больше (наделаем модулей расширения, работающих по CAN). Во всех отношениях лучше чем моя Nulcleo-411RE. Мне ещё понравилась плата на H750: сразу есть слот для SD карты (скорее всего SDIO, что большой плюс) и небольшой дисплей (как подключён - неизвестно), но, по беглому взгляду, часть контактов не вывели на плате.
Пока программа умещается в ресурсы F411, разработке логики это не мешает. Есть нюансы, но их тоже можно попытаться преодолеть с помощью оптимизации и более разумных решений (пока что всё тяп-ляп, но и это прототип) - дабы не спрятать за производительным железом плохо написанный софт. Однако, если то, что показывает анализатор, действительно предел F411, а не недочёты софта (всё таки маленький тестовый паттерн давал ожидаемые тайминги, а значит дело может быть в подготовке паттерна), то очень скоро я перейду на что-то посерьёзнее (H5 или H7), тем более что проект набирает обороты и теперь уже начинает казаться возможным к завершению.
Если F4 окажется хотя бы минимально жизнеспособна для запуска релизного проекта, то это окажется не таким уж высоким требованием, а лишние деньги можно будет вложить в хорошие шаговые двигатели и драйверы к ним.
На подобные слова я и рассчитывал, когда писал это).
Я слышал о проблемах с таймингами при доступе к памяти (как RAM, так и Flash) и видел на работе как периферия начинает чудить при повышении частот (но один опытный человек быстро привел всё в норму), а могла даже не запускаться. Это настораживает, но я попробую разогнаться когда у меня появится кварц в 24 МГц (текущие 8 считаю не очень надёжными). Где-то в районе написания части 0, я, интереса ради, пробовал установить SYSCLK в 96 МГц, но они выводились из максимально неудобных 25 МГц или от внутреннего источника. В итоге контроллер не всегда проходил инициализацию :D
Если полученные тайминги действительно следствие оверхеда прерываний (а не, например, приоритета), то надо повышать производительность в 1.5-2 раза, т.к. оптимизировать бесконечно у меня не выйдет, единственным выходом остаётся повышение частот. Где-то в даташите должны быть описаны тонкости при повышении частот.
на коленке сбацанного рефлектометра
Это та штука, которая подключается к спутниковой тарелке чтобы найти спутник?
Не знал. У меня уже год стоит Epson L3250 со встроенной СПНЧ, но я никогда не замечал что он выполняет прочистку и прокачку время от времени. Однажды я оставил его на пару недель и он выдавал пустые листы пока я вручную не вызвал сервисную команду для прочистки печатающей головы, которая работает лучше чем на HP Deskjet 2630
Согласен - я не совсем прав. Generic драйверы гарантирует поддержку конкретного PDL и необходимо только убедиться в том, какой протокол поддерживает принтер.
Однако, если принтер поддерживаются только своим уникальным GDI, то эта проблема может быть неразрешима и необходима поддержка со стороны производителя, либо человека с навыками реверс-инжиниринга чтобы переписать его если производитель делает этого. Мне не известно какая вероятность столкнуться с таким принтером, но я слышал что некоторые принтеры выпущенные ~10 лет не поддерживают PDL совсем. Возможно это касается бюджетных устройств, которым не хватает ресурсов для интерпретатора PDL.
С какой-то вероятностью должен работать Generic/Text Only драйвер. Но, по сути, он отправляет задание в RAW формате и тот же
.doc
будет выглядеть совсем не так как ожидаетсяФотографии выглядят так будто проект уже на финальной стадии, неделю назад я не нашёл ни намёка на исходники. Автор данной статьи прямо пишет что исходники выложены, я понадеялся что правда появилось какое-то обновление, но о них всё ещё нет абсолютно никакой информации.
Хочется верить что HP всё равно, я бы сказал, им же выгоднее, ведь старые картриджи будут нужны более широкой массе людей, кроме того сами картриджи без DRM и уже морально устаревшие.
Spritem занимался реверс-инжинирингом и его никто не прикрыл, даже можно найти его выступление на Hackaday Supercon, которое до сих пор доступно как и исходники на Github. Его наработки использовались для другого проекта на hackaday + репозиторий. А их вместе сейчас использую я для третьего)
Патенты есть (они упоминаются в статье Spritem). Я не разбираюсь в патентном праве поэтому не уверен будет ли открытый проект являться его нарушением. Опять же существуют ручные принтеры, которые используют картриджи от какого-то старого принтера, но я всё время забываю как они называются (возможно это тоже HP).
Open Printer наделал много шума - HP вполне уже могли сделать како-то заявление.
С оговоркой что принтер тоже должен их поддерживать
моральное устаревание вечного качества старых устройств)
Если есть спецификация по управлению такими картриджами, то этим можно было бы заняться. Реверс-инжинириг логики работы картриджей довольно нетривиальная задача. Это всё возможно только если найдётся какой-то энтузиаст с подходящим оборудованием и положит на это какое-то количество времени.
Не знаю - у меня термоструйные HP c картриджи)
Я не знаю ответов на Ваши вопросы (возможно они риторические), но современном мире можно найти практически всё. Скорее всего, есть специализированные магазины по продаже комплектующих для принтеров, сервисы, иногда, тоже используют б/у запчасти, особенно частники.
Полагаю, в случае с головами, производители принтеров отдают их OEM производителям, которые могут поставлять их куда угодно (чем, возможно, могут пользоваться продавцы из Китая), поэтому не думаю что производители принтеров зарабатывают на непосредственной продаже, а скорее лицензируют производство и берут процент (либо любая другая схема - тут я не разбираюсь). Сервисам же эти головы, явно нужнее, чем рядовому пользователю - большинство не знает как работает принтер, а лезть менять полезет ещё меньше. Поэтому жёсткого контроля точно нет, а есть конкретный целевой рынок сбыта. Поскольку поломанных принтеров с живыми головами много, то и на рынке можно найти, в основном б/у.
Возможно вы правы, ещё одно предположение, у картриджа вышел из строя резистор. Я подключил СНПЧ как раз чтобы меньше заниматься грязной и муторной работой), в теории, HP123 и подобные можно вскрыть, промыть и заново склеить, но оно того не стоит т.к., в моём случае, они свой ресурс отработали раз 20. При таких условиях, раз в год потратить 2000 рублей на комплект картриджей с Али, кажется не таким существенным.
Объём HP123XL, вроде 18 мл. За тот год израсходовалось около 3-4 бутылочек чернил по 100 ml ценой ~500 рублей - комплект CMYK.
В норме струйный принтером нужно пользоваться постоянно, иначе, спустя несколько дней, в картридже засыхают чернила. Часто люди о своих принтерах забывают на месяцы (а то и годы) и знать не знают что их необходимо после этого прочистить (хотябы прокачать), но это уже продвинутый уровень, хорошо если пользователь знает о встроенной функции прочистки печатающих голов и совсем редкость если пользуется.
С уверенностью можно сказать что более открыта чем печатающие головы.
Вряд ли в открытом доступе найдётся полная электрическая схема самого процессора и исходники для эмуляции на ПЛИС. Raspberry Pi всегда позиционировалось как что-то упрощающее жизнь DIY сообщества в их разработках. Как минимум, документация полностью доступна, любой может купить плату и работать с ней. Так что весь вопрос в границах "открытости" и тот же вопрос можно задать про Arduino и STM32, которые тоже используются в Open Source проектах.
Скорее всего, они воспользовались этими и этими наработками.
Как раз проблема в том что таких голов нет, а изготовить в кустарных условиях что-то конкурентноспособное проблематично. Открытые протоколы только у промышленных печатающих голов, но они стоят как автомобиль, про некоторые проблемы можно прочитать тут
СНПЧ DIY-щики сами прикрутят, ресурс картриджа не так критичен. Например, у меня HP Deskjet 2630 и я проделал отверстие, в корпусе приклеил кронштейн чтобы подключить СПНЧ - даже при больших объёмах печати (практически 24/7 текст с картинками) у меня картриджи HP123 (термоструйные) прожили год, потом появились проблемы с цветами (перестали работать красные дюзы)
У меня проект, преследующий схожую цель, процесс создания которого я описываю в статьях на Хабре. Где-то неделю назад в комментарии скинули ту же самую статью на crowdsupply, которая указана у Вас в статье, но ни схем, ни кода, ни конкретики в компонентах она не предоставляет (STM32 микроконтроллеров вагон и маленькая тележка). Так откуда взялась информация про то что "все необходимые материалы" уже в открытом доступе?
Привет! Выше был комментарий по этому поводу
С LCD я пока не знаком так близко (как, в принципе, с большей частью embedded). У STM32H7 есть аппаратный LСD контроллер. Если действительно завязаться на него, то 24-битной версии хватит на два картриджа сразу)
Никогда не cвязывался c FPGA и ПЛИС в целом. Но мне приходилось слышать как программную логику переносили на ПЛИС, так что было бы круто запрограммировать какую-нибудь ту же FPGA на управление принтером) или хотя бы картриджем) передавая ему RGB пиксель, который сразу преобразуется в необходимую последовательность сигналов).
Насколько я знаю, BSRR работает быстрее и атомарен, в отличие от ODR.
С ODR работать проще - в него сразу помещается нужное значение для всего порта. Мне кажется, я когда-то использовал ODR для управления матрицей на адресных светодиодах
Я пока всё таки на стороне BSSR с синхронизацией по таймеру. Он более гибок и даёт возможность "прямой" реализации любого интерфейса.
Даже выдавая высший приоритет DMA и устанавливая самую высокую скорость на GPIO - анализатор не отображает никакого влияния. В данный момент упор, видимо в таймер - его тактирование очень близко к шине APB и SYSCLK, а значит callback таймера вызывается довольно часто и, вероятно, его количество тактов > количества тактов, необходимых таймеру.
Не могу полностью согласиться. В диаграмме из статьи на Hackaday с реального принтера можно увидеть смещение S1-S5 относительно DCLK, так что нет полной уверенности он эквивалентен таймеру. Возможно это артефакты в работе принтера или анализатора - нет уверенности. И библиотека от Spritem и PrintSpider_Arduino генерирует с дублированием 0 и 1 (надо анализировать зачем, для меня это немного странно), поэтому пока что таймер должен быть в 2 раза быстрее DCLK.
Могут, но для одного картриджа надо контролировать 12 ног одновременно, мне не хватит интерфейсов :D поэтому я остановился на связку GPIO->BSRR + TIM + DMA. Насколько понял, Spritetm использовал I2S, но я не разбирался подробно с его кодом
Интересно, на фотографиях выглядит вполне неплохо (
правда вид на стене заставляет задуматься повесить это в туалете). Классно что, по сути, они делают компактный плоттер. Хорошая идея разделить коммуникацию и контроль печати по двум контроллерам. В своей первой статье я тоже рассматривал такую возможность как способ не упираться в производительность STM32.Однако, к сожалению, я не нашёл ссылок к исходникам и подробностям железа, в репозиториях участников тоже. И тут уже приходится гадать: проект завершён и ждёт своего часа у кого-то в гараже; проект на стадии закрытой разработки; проект даже не начали. Без финансовой поддержки они могут не дать больше никакой информации. С другой стороны, это бы полностью убило смысл моего проекта, так что я даже немного рад.
Если я собираюсь рендерить картинку на контроллере (например, печатать с флешки), то в RAM должна поместится картинка + рендер. Можно схитрить и использовать дополнительную внешнюю память (даже не обязательно RAM), но работать это будет медленнее.
Можно и меньше. Думаю, для непрерывной печати, лучше иметь одну строку в работе и одну строку в запасе. В теории, можно даже дробить одну строку. Если картинку рендерит ПК, то, как показал опыт предыдущей части, при подключении по USB, МК может получать буфер такого размера, какого ему удобно:
Пока это догадки. На сегодняшний момент принтер получать только текст и выводит его в uart. Всё будет зависеть от того, какую подготовку будет выполнять драйвер и как с ней справиться МК.
И есть нюанс у USB. Вроде, он работает на прерываниях - без DMA и интеграции модулем в RTOS. Боюсь может получится так, что запрос следующей порции данных может повлиять на процесс печати.
F411, кажется, уже подошла к своему пределу и не может выдать требуемых таймингов на GPIO, до упора в RAM или Flash ещё далеко. Нужно иметь порядка 100 нс (на это рассчитана библиотека для формирования сигналов), а сейчас, в лучшем случае, получается выдать 250-275 нс даже при увеличении частоты татирования до 72 и 96 МГц. Так что переезд на H753 уже выглядит не как не далёкая перспектива, а необходимость для продолжения развития проекта
Мне бы тоже этого хотелось! Я видел проект, где для печати плат приспосабливали старенький принтер. Промышленные печатающие головы хорошая идея, но стоят они дорого, всё таки хочется чтобы кто-то потом смог воспроизвести проект (если он дойдёт до логического завершения).
Давным-давно отец показал мне ЛУТ, а пару лет назад я перешёл на фоторезист (т.к. только он был самым доступным со струйным принтерами, а лазерного у меня нет). Лично у меня не всегда хорошо получалось переносить с их помощью сложные платы с тонкими дорожками и крошечными пятачками (всегда надо править шаблон), хотя видел как это делают другие.
Где-то я встречал обычные чернила (т.е. без УФ), которые могут хорошо держаться на меди и спокойно выдержать процесс травления. Источник, к сожалению, не сохранился. Подозреваю что с этим могут хорошо справиться лазерные принтеры.
Мысль превратить принтер в печатный станок для плат вполне реализуема если проект дойдёт до релиза (я держал это в уме). Я рассматриваю это как форк или пару флагов компиляции. По сути, это планшетный принтер.
Если такой способ изготовления плат окажется не хуже и выгоднее чем на том же фрезерном станке и лучше или на уровне с ЛУТ и фоторезистом, то я, однозначно, хочу такой принтер для домашних поделок.
Находил такое: используют базу от 3D принтера или гравера.
Не совсем согласен. Печать на бумаге всё таки более востребована в массе. И, так получилось, она сложнее реализуется. Можно с относительной лёгкостью сделать простой CNC на базе GCODE (интернет ими пестрит), но вот получить полноценную печать на его базе сложно (если не невозможно) - видел что-то похожее на матричную печать на базе 3D принтера и картриджа от советского (?) принтера. Задумка хорошая, но для фотографий и рисунков не очень годится, не говоря о том что для CNC всегда нужен специализированный софт. Моя задумка сделать принтер (работает как принтер, все узнают в нём принтер и т.д.), а как это использовать и переделать народ справиться сам)
Не то что бы я мучался, проект идёт не торопясь, в свободное от работы время, и в своё удовольствие)
Причина, по которой я взял F411RE проста - она лежала у меня в ящике. Не было уверенности что получится продвинуться хоть сколько-нибудь, поэтому покупать навороченную плату было бы пустой тратой денег. Я думаю, что если единственной задачей будет только то что описано в статье (без RTOS, без остальной логики), то даже F103 может оказаться достаточно (в теории), а они стоят дешевле пачки семечек на Aliexpress
и, тем более, Arduino Nano (до сих пор удивляет что они не вытеснили их).Взять более мощный процессор проще и я согласен что это упростит работу, но не факт что это целесообразно по финансовым затратам. Да, для более-менее человеческой разработки надо брать Nucleo-H753ZI/Nucleo-H563ZI или что-то около: на борту будет ETH (который в будущем может пригодиться), да и возможностей для подключения периферии раза в 2 больше (наделаем модулей расширения, работающих по CAN). Во всех отношениях лучше чем моя Nulcleo-411RE.
Мне ещё понравилась плата на H750: сразу есть слот для SD карты (скорее всего SDIO, что большой плюс) и небольшой дисплей (как подключён - неизвестно), но, по беглому взгляду, часть контактов не вывели на плате.
Пока программа умещается в ресурсы F411, разработке логики это не мешает. Есть нюансы, но их тоже можно попытаться преодолеть с помощью оптимизации и более разумных решений (пока что всё тяп-ляп, но и это прототип) - дабы не спрятать за производительным железом плохо написанный софт. Однако, если то, что показывает анализатор, действительно предел F411, а не недочёты софта (всё таки маленький тестовый паттерн давал ожидаемые тайминги, а значит дело может быть в подготовке паттерна), то очень скоро я перейду на что-то посерьёзнее (H5 или H7), тем более что проект набирает обороты и теперь уже начинает казаться возможным к завершению.
Если F4 окажется хотя бы минимально жизнеспособна для запуска релизного проекта, то это окажется не таким уж высоким требованием, а лишние деньги можно будет вложить в хорошие шаговые двигатели и драйверы к ним.
Не знал что они так называются, я перепутал с простым спектроанализатором. Слышал о таких в контексте оптоволокна, в основном.
На подобные слова я и рассчитывал, когда писал это).
Я слышал о проблемах с таймингами при доступе к памяти (как RAM, так и Flash) и видел на работе как периферия начинает чудить при повышении частот (но один опытный человек быстро привел всё в норму), а могла даже не запускаться. Это настораживает, но я попробую разогнаться когда у меня появится кварц в 24 МГц (текущие 8 считаю не очень надёжными).
Где-то в районе написания части 0, я, интереса ради, пробовал установить SYSCLK в 96 МГц, но они выводились из максимально неудобных 25 МГц или от внутреннего источника. В итоге контроллер не всегда проходил инициализацию :D
Если полученные тайминги действительно следствие оверхеда прерываний (а не, например, приоритета), то надо повышать производительность в 1.5-2 раза, т.к. оптимизировать бесконечно у меня не выйдет, единственным выходом остаётся повышение частот. Где-то в даташите должны быть описаны тонкости при повышении частот.
Это та штука, которая подключается к спутниковой тарелке чтобы найти спутник?