Про трафареты и Silhouette Portrait

Немного тут занялся нарезкой трафаретов для паяльной пасты на плоттере Silhouette Portrait, этап с экспортом DXF в штатную программу Silhouette Studio прошел быстро и мне не понравился — так как Silhouette Studio понимает в этом формате только полилинии, экспорт из «обычных» CAD’ов для электроники оказался слегка неприспособлен для этого, приходилось дополнительно редактировать эти файлы — так что я быстренько перешел к применению gerber2graphtec:

https://github.com/pmonta/gerber2graphtec

Собственно, это уже давно не новость, самой утилите уже 12 лет, упоминаниям в рунете — не меньше 7, более того, даже в ACM про организацию кустарной мастерской с такой хренью писали. Естественно, держать хотя бы и виртуалку с линуксом для этой задачи мне показалось лишним, поэтому я творчески совместил руководства по применению скрипта gerber2graphtec в WSL — с выводом в файл, и запуск file2graphtec уже в Windows (к сожалению, WSL не видит подключенные по USB устройства). Один из необходимых на этом пути шагов — это замена драйверов с помощью известной утилиты Zadig — ну и в принципе оно работало, пока я не подумал — а ведь устройство endpoint’ов у плоттера — почти такое же, как и у USB-CDC, то бишь виртуального COM-порта! А почему бы не поставить этот драйвер с помощью Zadig принудительно?

И что самое интересное — оно заработало! После такой замены плоттер распознается в Windows, как «еще один» COM-порт, и при этом его можно использовать в WSL «штатными средствами», как устройство с именем /dev/ttySn, где n — номер COM-порта.

В итоге стало возможно прямиком из WSL запускать команды вроде

./gerber2graphtec --media_size 8.5,11 --offset 0.5,0.5 file.gbr > dev/ttyS5

а с заранее подготовленным файлом с graphtec’овскими командами — использовать банальный cat вместо «отдельного» file2graphtec.

PS Понадобилось внести еще пару изменений в gerber2graphtec — но пока не могу понять, с чем они на самом деле связаны.

Кошмар монтажника

В одном устройстве (ну вы уже знаете, в каком) одновременно используются контроллер PoE TPS2376 и операционный усилитель OPA2376. Найдите 10 отличий, а также — что не даст монтажнику перепутать такие разные чипы (картинки кликабельны)?

PS Всерьез подумываю о том, чтобы поставить где-то в схеме 1-wire EEPROM в корпусе SOT-323, подписать в шелкографии Q1488, а дорожку от неиспользуемого вывода задействовать в аналоговой части схемы, как паразитную емкость.

А кто-нибудь у нас в американском патентном праве разбирается?

Не могу понять, как у них работает приоритет — вот, допустим, есть американский патент с filing date в августе 2019 года, при этом в качестве priority date указана дата ровно за год до этого, а именно август 2018. При этом я знаю российский девайс, почти полностью описываемый claim’ом этого патента, но выпущенный в январе 2019 («знаю» вплоть до «лично ручкался с автором, держал в руках и даже срисовывал некоторые интересные места схемы»). Собственно, вопрос: может ли этот российский прибор выступать в качестве prior art, которое было по понятным причинам неизвестно американскому заявителю, но при этом патент «обнуляет»? Или наоборот, американцы будут орать, что русские у них все спиздили и должны много $$$?

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

PS/2 Если юридической дулей дело не ограничится, придется отправлять устройство в Штаты своим ходом в составе какого-нибудь изделия.

Вопросик про наколеночные ЧПУ

Почитал всякие форумы, и возник вопрос: а почему «взрослым» вариантом управления станком с ЧПУ (естественно, полусамопальной конструкции) считается компьютер с установленным на нем Mach 3? Люди героически борются с тем, что Windows к «реальному времени» отношения не имеет, плачут, колются, но все равно пытаются управлять шаговиками через LPT — в то время как простая китайская плата с микроконтроллером для интерпретации G-кода (например, одна из первых попавшихся — MKS Robin Nano, 2400 рублей в китайском онлайн-сельпо) все эти проблемы моментально решает.

Про embedded этот ваш

Случайно зашел на Synopsys OpenHub — а точнее, на страничку, посвященную операционной системе Riot, и увидел там вот такую картинку, график contributors per month, или сколько человек отправляют коммиты в этот проект:

Ого, подумал я — проект, похоже, загибается, и надо бы вовремя спрыгнуть с мертвой лошади! А какие у нас есть альтернативы? ARM mbed? После довольно впечатляющих успехов в 2018-2020 году проект по количеству участников скатился до уровня чего-то маргинального, с десятком активных участников во всем 2022 году!

Zephyr OS, при всей его накачке со стороны Linux Foundation, выглядит чуть бодрее — но и то с 2022 «контрибьюторы» начали разбегаться (да и в общем если вычеркнуть историю до 2014, то от того же Riot график станет неотличим):

Apache Mynewt и так особой популярностью не отличался, да и помер несколько раньше остальных, в 2020 году — но как пример загнувшегося проекта его привести можно:

Короче, вопрос — что случилось с «микроконтроллерными» операционными системами, почему опенсорсному embedded примерно в 2020 прикрыли краник с финансированием, и в какую сторону бежать?

Про умный дом

А вот кто знает:

— можно ли поставить Home Assistant вместе с zigbee2mqtt на дешевый NAS типа Synology 119j?
— есть ли «шлюзы» из OpenTherm в Zigbee, позволяющие мониторить, а еще лучше — управлять газовым котлом?

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

А подскажите всякой жести

Узнал, что уже скоро мне придется прочитать первокурсникам магистратуры аж 20 (!) лекций про «Аппаратные платформы интернета вещей и киберфизических систем» (а потом нарезать это на 40 экзаменационных билетов, в каждом из которых по два вопроса, плюс придумать несколько вопросов «с подъебкой») — в общем, задача довольно нетривиальная (если учесть, что курс по программированию микроконтроллеров «с нуля» состоит из 8-10 лекций). Просто так лить воду не хочется, поэтому надо добавить в курс невероятной жести. Пока обдумываю следующие сюжеты:

— ЦОС в диапазоне «а вот у нас красивый Матлаб и мы получим коэффициенты для фильтра Чебышева 6 порядка» до «а это убогий Cortex-M3 и мы на нем будем делать этот фильтр в целочисленной арифметике!»;
— сети Петри/communicating sequential processes/что-то еще в этом духе, зайдет к разговору про безопасность, которая safety, и всякие там IEC 61508;
— фильтр Калмана и многочастичный фильтр — «как правильно использовать 6D-акселерометр»;
— Distributed Coordination Function в IEEE 802.11 и 802.15.4 — в первом случае это уже классика, во втором — есть мелкие подлые изменения, но очень показательные в плане отличия IoT от банальщины вроде этих ваших вайфаев;

Чего бы еще найти в категории «экзотика, но полезно»?

PS По заслуживающим доверия сведениям, магистры пришли в ужас при виде выписанной на доске формулы, описывающей ПИД-регулятор.

PS/2 Да, тут есть, от чего охуеть!

Помощь Донбассу — рабочие места для коллег-электронщиков

Олег Артамонов («Генсек Партии прямой демократии и просто неприятный человек») и Андрей «Мурз» Морозов собирают комплекты оборудования для ремонта электроники, то есть дронов и раций. Нужно практически все — от оборудования до расходников (попробуйте просто представить, как сложно найти в ЛНР или ДНР качественный припой!).

Подробности — в блоге Олега:

https://olegart.ru/?p=105

Как размножаются фрезеры, часть следующая

Собрал сегодня привод одной из осей будущего SMD-расстановщика, вроде ездит, и может ездить довольно шустро. Следующий этап — и похоже, только где-то ближе к майским — «голова».

Пока ко мне едет «доска для смузи» — точнее, Smoothieboard — погонял двигатели от того же фрезера (обычный китайский 3018 с GRBL), на котором пилил детальки.

Будни станкостроения

Когда начинаешь свой радиогубительский путь, и осваиваешь пайку DIP-микросхем 40-ваттным советским паяльником, то кажется, что это все пиздец мелко. Разъемы с шагом 0,8 мм кажутся вообще невозможными для монтажа (но с третьего раза, через кровь и слезы, все-таки осиливаешь). Потом плавненько переходишь с изготовления плат «лазерным утюгом» на заказ их в Резоните, на SMD-монтаж — сначала 0805 кажется страшноватым, а потом начинаешь ставить компоненты типоразмера 0603, микросхемы в TQFP с шагом сначала 0,8, а потом и 0,65 мм — ну и логичным образом доходишь до деталек с шагом выводов 0,4 мм — nRF52 те же. Примерно в этот же момент понимаешь, что руки от постоянного пьянства дрожат, да и начинаешь какие-то слегка серийные устройства делать — и естественным образом хочется установщик для SMD.

В общем, решился наконец-таки собрать станочек для OpenPnP — вот такой:

https://hackaday.io/project/9319-diy-pick-and-place

Как совершенно верно говорил [info]mbr, фрезеры именно так и размножаются (да, механика расстановщика очень похожа на ЧПУ-фрезер).

DipTrace начал за Украинушку топить

Напомню, что пиратство в военное время называется каперством, а лицензионный ключ для DipTrace 4 версии на 4 слоя и 1000 выводов — вот:

Имя пользователя: Для некоммерческого использования
Регистрационный код: H2W2-6K9A-PS2F-H3L5-SSW1

Денег никому никаких платить, естественно, не нужно.

И еще про фрезер

Вчера много чего насоветовали, но в основном все сводилось к универсальному для отечественного «хобби-сегмента» совету «поставь с торрентов пиратскую версию очередной мега-программы за 100500 баксов». Советчики, правда, обычно забывают, что мега-программа за 100500 баксов требует не только денег, но и дохера места на диске (это еще ладно), и некоторой квалификации пользователя, которому еще надо «доучиваться». Не сказал бы, что это дохера прикольно и нужно для вот таких разовых работ — так что для изготовления вот такого рода «двух-с-половиной-мерных» (буржуины так и пишут, 2.5D) нашел очень простой инструмент — MakerCAM. Не скажу, чтобы он был вот прямо совсем неизвестен в рунете — есть очень краткое описание, растиражированное с пикабу по куче помоек, но там не обратили внимания на пару важных вопросов.

Для начала — где взять? Сайт makercam.com, где лежала программка, давно сдох, более того, программка написана на Flash, который петушары-программисты объявили «устаревшим» и выпилили его поддержку отовсюду. К счастью, есть еще archive.org, где можно взять файл swf:

https://web.archive.org/web/20210128233629/https://www.makercam.com/makercam.swf

Для его запуска можно воспользоваться Flash Player Projector — официальным инструментом для «отладки» флешовых мультиков и прочей такой фигни.

Между прочим, исходники MakerCAM лежат на гитхабе — так что если кто очень хочет — можно на базе этого что-то более нормальное и «современное» запилить.

Итак, первым делом готовим svg-файл с «чертежом» — точнее, контурами тех частей детали, что мы будем как-то обрабатывать. Для примера возьмем что-то наподобие вот этой детали — заметно сложнее вчерашней, хочу сказать!

Рисуем что-то вроде эскиза в svg; особые эстеты могут использовать полноценные CAD, но тут достаточно буквально чего угодно. Я пока не смотрел на размеры, возможно, придется их как-то подгонять, так что просто для демонстрации сделаем так (я вообще ручками этот SVG нарисовал):

Кстати, открывая svg в MakerCAM, обязательно проверьте, сколько у вас там точек на дюйм получилось, иначе можно здорово облажаться! Да, и не забудьте сразу переключиться в метрическую систему.

В русскоязычном «руководстве» совершенно не описана операция «выборки» внутри контура — но делается она просто, выделяем границы, жмем в меню CAM-Pocket operation и вводим параметры. Четыре отверстия по бокам просто просверлим, а для центральных сделаем еще две выборки. После нажатия на calculate all наша деталь будет выглядеть примерно так (галочку view cuts ставить не надо):

Наконец, надо сделать еще одну вещь, о котором в русскоязычном руководстве совсем забыли — выделяем самую внешнюю траекторию (которая отделит нашу деталь от фанерки) и выбираем пункт меню CAM-Add tabs to selected. Он позволяет при фрезеровке внешнего контура оставить связки, соединяющие вырезаемую деталь с заготовкой. Важно! В программе есть небольшой баг, из-за которого последний пункт, высоту этой связки, надо указывать не в сантиметрах, а в миллиметрах — несмотря на подсказку слева.

После всего этого экспортируем получившееся безобразие в G-код и смотрим любым просмотрщиком (например, я взял для этого Candle):

Поеду в Леруа за фанерой.

Технику безопасности при работе на фрезерном станке знаю, как свои три пальца!

Вот, допустим, есть у меня китайская игрушечная ЧПУшка типа 3018 — примерно такая:

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

Я, конечно, могу написать G-код и ручками, сложной геометрии там нет, но вообще хотелось бы запихнуть модель из CAD-а в специально обученную программку и получить требуемое. Вопрос: как такая специально обученная программка называется и чем в среде любителей китайского говна с ЧПУ положено пользоваться?

Как же я люблю алиэкспресс

Вот, например, продают там некий SMD-расстановщик — конструкция уровня «продвинутый любитель», но нечто подобное многим интересно:

https://aliexpress.ru/item/1005002328161355.html

И все было бы, может быть, неплохо, если бы не одно «но» — все картиночки в описании товара утащены с краудфандингового сайта, на котором уже несколько лет доверчивую публику кормят завтраками:

https://www.crowdsupply.com/citrus-cnc/simplepnp

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

Дети, изучайте ардуину

С «умной теплицей» на ардуине вы можете сделать очень многое:

— получить дополнительные баллы к ЕГЭ и поступить в престижный ВУЗ на востребованную околоайтишную специальность;
— поучаствовать во всяких хакатонах и конкурсах для студентов;
— защитить в ВУЗе на отличную оценку «проект», курсовую и дипломную работы;
— и все это — с одной и той же поделкой из кружка «Юный ардуинщик!»

Introduction to Embedded Systems — A Cyber-Physical Systems Approach

Прекрасная, просто замечательная книжка.

Во введении и первой главе наивного читателя заманивают рассказами про «интернет вещей», «киберфизические системы», «индустрию 4.0» и прочий набор стандартных баззвордов. Читатель уже ждет, когда же ему расскажут про то, как на Ардуине и Распберри сделать очередной умный дом — но тут же в главе 2 ему выкатывают второй закон Ньютона, на пальцах объясняют кусочки термеха, пишут всякие дифференциальные уравнения, а немногих выживших добивают преобразованием Лапласа. Дальше, конечно, становится немного полегче, всякая там дискретная математика и конечные автоматы особого полета фантазии не требуют, а местами даже предлагают написать немного кода на Си. Перевернуть свое представление о встраиваемых системах можно по ссылке:

https://ptolemy.berkeley.edu/books/leeseshia/

А если серьезно, без смехуечков — это прекрасный пример, чему надо учить магистров «околокомпьютерных» специальностей — не «рукоделию» (это бакалавр должен уметь собрать из двух ардуин и распберри подобие работающей системы), а тому, как обосновать, что эти две ардуины с засунутой туда FreeRTOS работают правильно.

Это пиздец

Вот мне интересно, лет через этак 7-10, когда этот Ярослав сможет принять участие в Worldskills, к которым он так серьезно готовится — будет ли этот ворлдскиллз все еще котироваться?

«Подготовка к международным соревнованиям», пиздец просто.

Теоретикам и практикам контроля версий

А вот вопрос созрел. Предположим, есть у нас вполне себе обычный IoTшный проект, состоящий из множества взаимосвязанных частей:

— схемотехника и печатная плата нескольких похожих устройств, библиотека компонентов для Eagle или DipTrace;
— прошивки — несколько, своя для каждого устройства (скорее всего, на базе Riot OS или Contiki, и возможно, с доработками самой ОС — то есть с ней обычно притаскивают целиком ее репозиторий);
— приложение для Android или какой-то там Progressive Web App;
— вебовский бекенд (скорее всего, на Django).

«Команда» — ну, по человеку (или по «полчеловека») на каждую из частей, проект новый, каждый взаимодействует с «соседями» (схемотехник-эмбеддер-фронтендер-бекендер). Вносят ли доработки в соседние части — возможно теоретически, но вряд ли.

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

А как бы вы организовали контроль версий и трекинг задач в таком проекте? Интересуют все аспекты — от используемых инструментов до «оргмер».