Четыре грабли, один вихрь и 60% на CIFAR-10 с M0+

Продолжение цикла. До этого были базовые цифры и анонс 5 архитектур. Теперь - что сломалось, как чинили, что узнали.

Учимся программировать микроконтроллеры

Продолжение цикла. До этого были базовые цифры и анонс 5 архитектур. Теперь - что сломалось, как чинили, что узнали.

В прошлый раз я рассказал про GraphKAN, первую тернарную KAN с весами {-1, 0, +1}, которая выдала 96.15% на MNIST при 15 КБ. (ссылка).
С тех пор проект переродился. Рассказываю, что изменилось и почему.

Исполним обещанное в [1], где упомянута задача о светофоре Ангера [2]. Она интересна формулировкой, которая заметно отличается от аналогичных задач, и утверждением, что более компактного решения, чем предложенное автором монографии, не существует.
Обычно светофоры моргают, «тупо» реализуя фиксированную временную последовательность. В светофоре С..Ангера есть динамизм. Он определяется датчиками, фиксирующими ситуацию на перекрестке. И это само по себе интересно. А утверждение формальным путем, сомневаться в справедливости которого оснований, казалось бы, нет.
Но нет исследователя, который не ставил бы перед собой задачу доказать недоказуемое или опровергнуть неопровергаемое. И один из способов достичь желаемого – создать решение, подтверждающее вашу правоту. Как настоящие исследователи, мы именно это и попытаемся сделать, опровергнув, если удастся, тем самым утверждение С.Ангера.
А начнем мы с реализации светофора в исходной формулировке, хотя и в рамках другой формальной модели [3].

«Граждане новосёлы! Внедряйте культурные навыки!» Пока вы зашиваете коммерческие алгоритмы в кремний и надеетесь на ROP Level 1, где-то в лаборатории уже корабли бороздят просторы народного театра!
Автор статьи официально заявляет, что не несёт ответственности за разбитые коммерческие иллюзии и бинарники. Весь материал предоставлен исключительно в научно-исследовательских, образовательных и превентивно-оборонительных целях. Помните: взлом чужого оборудования без согласия владельца преследуется по закону. Если вы производите серийный продукт — эта статья написана для того, чтобы вы немедленно пошли и включили ROP Level 2 потому как говорил классик, - «Надо, Федя... Надо!»

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

Как-то наткнулся на такой дешевый автоматический светильник за пару евро. Солнечная панель, аккумулятор, датчик движения — и все это за смешные деньги. Честно говоря, я сомневался, как оно работает. Ну и действительно работало оно так себе. Но все равно купил: его корпус прямо кричал — «Переделай меня!». Я и переделал.

Беспилотная авиация сильно зависит не только от двигателей, корпусов и аккумуляторов. Внутри любого БпЛА есть более компактный, но критически важный уровень - авионика, полетные контроллеры, регуляторы оборотов и программная среда, которая связывает все это в работающую систему.
Для российских разработчиков здесь есть отдельная инженерная задача: перейти от импортных микроконтроллеров и привычного программного окружения к отечественной элементной базе без потери функциональности и без полной перестройки процессов разработки.
Один из таких кейсов реализует компания "Чистое небо" совместно с АО "НИИЭТ" (входит в ГК Элемент) и разработчиками ОСРВ Embox. Команда работает над переносом открытого программного обеспечения для БпЛА на российские микроконтроллеры К1921ВГ015 с архитектурой RISC-V. Если вам интересна эта тема, добро пожаловать под кат!
Аббревиатура DIY значит «сделай сам». Почини, собери, переделай, не жди готового решения. Но если раньше это вызывало ассоциацию с молотком, отвёрткой или плитой гипсокартона, то сейчас всё чаще это ещё и код, датчики, микроконтроллеры, домашние серверы, 3D-модели и сценарии автоматизации. В общем, IT добралось и до ремонтов.
И это логично, ведь между написанием кода и работой руками куда меньше различий, чем кажется. Сегодня Хабр вместе с Лемана Тех — технологическим ядром одного из крупнейших DIY-ретейлеров — официально открывают сезон на Хабре. Пишите о своих DIY-проектах, участвуйте в конкурсе и побеждайте. Приём статей — с 15 июня по 31 июля 2026 года.

Соскучились по DIY на коленке? Уверен, что многим хотелось бы иметь дома рядом с 3D-принтером станок, который без грязи, дыма и дикого шума будет резать металл. Давайте попробуем собрать настольный электроэрозионный станок (EDM) своими руками из доступных материалов. Данная статья положит начало циклу статей по разработке, отладке и тестированию будущего инструмента. Конечная цель проекта — получить станок, который сможет вырезать детали из металла для создания своих копий.
А начнём мы с самого главного — с разработки электроники EDM-станка.

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

По многим критериям ESP32-S3 - это весьма мощный маленький компьютер. Неудивительно, что его используют даже для таких задач, как эмуляция ретро-консолей и тому подобного. В рамках проекта S3-MSX-PC [Иван Сварковский] (Ivan Svarkovsky) пошел еще дальше: он взял компонент MSX из мультисистемного проекта Retro-Go и оптимизировал его под процессорные ядра Xtensa Lx7, установленные в ESP32-S3.

РЕТРОКОМПЬЮТИНГ
Всё началось со смерти давнего друга. Но не волнуйтесь: этот друг теперь живее всех живых, хорошо себя чувствует и служит мне верой и правдой.
Это классический матричный принтер Epson MX-80 F/T III. Он был первым принтером, который я купил, где-то в 1982 или в 1983 году, и стоил он мне гораздо больше, чем я мог себе позволить. Даже после того, как он перестал быть моим основным принтером — сначала его заменило невероятно громкое лепестковое печатающее устройство, а потом лазерный принтер Epson, который я «приобрёл» на своей должности составителя обзоров продуктов — он продолжал служить мне в нишевых ситуациях.
Его основной задачей стала печать этикеток для моей библиотеки 35-миллиметровых цветных слайдов. У меня есть база данных, созданная на основе ПО Eagle компании Emerald Bay (это своего рода более удобная версия dBase), и мне было гораздо проще печатать этикетки программно на матричном принтере, чем возиться с листами этикеток на лазерном. Именно такой функциональности мне не хватает.

Вместо введения:
Не помню, когда точно, но скорее всего это был 92-93й год. Мне было тогда 12-13 лет. Жили мы, как бы сказать, очень не очень. Нас было четверо детей, я из них самый старший. Отец — неработающий инвалид, а мама — единственная, кто тянул всю семью, работая с образованием 8 классов деревенской школы. Денег не то чтобы не хватало, а их ВООБЩЕ не было.
Но электроникой и компьютерами я уже тогда бредил. И вот в один прекрасный день у меня появился КОМПЬЮТЕР!!! Мама совершила какое-то чудо и вопреки всему купила мне его. Сказать, что я был рад — это все равно что ничего не сказать. Сейчас уже не помню точную модель, какой-то клон 48К Спектрума, но с 99% вероятностью это был «Ленинград». Вот так началось моё знакомство с компьютерами, играми и программированием.
Кстати, в само программирование меня подтолкнуло то, что в один прекрасный день мой Спектрум тупо перестал загружаться с магнитофона. Игры кончились, надо было что-то делать. Я взял в руки печатный справочник, который шел в комплекте, и начал набивать оттуда программки вручную. Некоторые были с ошибками — и это, кстати, огромный плюс! Приходилось включать мозги, разбираться в логике и эти ошибки исправлять. Вот так постепенно я освоил Бейсик, ну а потом догнал и ассемблер… и понеслось.
Так было до момента, пока мне не купили Денди. На долгие годы я забыл про Спектрум, ибо потом в руки мне попалась неисправная Сега, которую я смог отремонтировать! Тогда мне было лет шестнадцать, и моё инженерное эго после этого выросло примерно до размеров Вселенной (хотя неисправным там оказался всего лишь копеечный стабилизатор 7805 😊).
В процессе борьбы со всевозможными COM/Ethernet/WIFI/Bluetooth RS-485 устройствами, в том числе встраиваемыми, программаторами и тд. столкнулся с тем, что автоматизировать работу с устройством практически нечем. Т.е. написать полноценный сценарий для имитации целевого устройства, обеспечить обмен данными с во всех возможных вариантах без ручного управления не получится ничем. На форумах умники советую брать питон, что сложно для схемотехников и иногда медленно. Самые продвинутые терминалы позволяет создавать макросы, некоторые — группы макросов без возможности полноценного анализа. Поэтому пришлось наваять терминал со встроенным скриптовым языком.
Цель — создать инструмент для широкого круга пользователей, схемотехников, радиоинженеров, которые недолюбливают среды программирования. Поэтому скриптовый язык делался максимально простым, никаких рекурсий, сложных выражений, лямбд, грамматических конструкций и пр. Также сделать простым работу с данными, предоставить возможность работать с несколькими устройствами одновременно. Унифицировать способы подключения (COM/Ethernet/WIFI/Bluetooth) устройств. Иметь в распоряжении специфические функции, которые решают задачу в комплексе.

Занимаюсь проектом, на модуле ESP32 не хватило выводов! Не особо хотелось применять расширители портов на PCF8574 и ей подобные, в связи с чем пришлось городить костыль.
DevKit v1 на базе ESP-WROOM-32, на своих выводах (pins) имеет GPIO сконфигурированные только под цифровой вход, т. е. Input! Но никак Input/Output. Это порты: GPIO34, GPIO35, GPIO36 и GPIO39.

Тема конечных автоматов (КА) актуальна. Почти как тема реализации светофоров. Но вот, если серьезно, только отношение к ней разное. Время от времени появляются статьи типа «Конечные автоматы (FSM) – это ловушка для программиста» [1]. И здесь очень не хочется, чтобы складывалось превратное представление о некой «псевдо-математической» автоматной абстракции. Нужно оберегать народ от подобных суждений, которые ни на чем не основываются.
Не будем, в пику упомянутой статье, петь дифирамбы автоматам в очередной раз. Потому, как «сколько не говори халва, во рту сладко не станет». Но можно реализовать пример из статьи только с позиции другого взгляда на автоматы. Это больше убедит, чем пространные рассуждение в духе «свист-технологии» или той же многопоточности и конкурентности.
Пусть перед нами стоит задача реализовать светофор и при этом уже есть довольно интересное, если не сказать – оригинальное, решение, которое дает право автору статьи весьма критично высказываться в отношении автоматов. Само решение сводится к следующим шагам: 1) создается таблица, строки которой определяют цвет светофора и его время; 2) создается простая программка перебора строки, которая зажигает в прямом и переносном смыслах, реализуя управление светофором.
Про автоматы в существующем решении ни слова, ни полслова. Оно элементарно и создано, похоже, достаточно быстро, а вот создание стейт-машины, как утверждает автор, было бы долгим и упорным. Поскольку «упираться» автору программы, видимо, совсем не интересно, то попробуем это сделать за него мы.

Для производителя ПЛК переход на отечественный микроконтроллер начинается не с замены строки в BOM, а с пересборки части аппаратной и программной платформы. Микроконтроллер в серийном модуле — это не просто строка в спецификации: его замена требует прежде всего устойчивой программной поддержки в серии, а также адаптации схемотехники и обвязки под новый кристалл.
В случае РЕГЛАБ задача дополнительно усложняется масштабом линейки: более 100 серийных изделий, более 1500 типов компонентов и разные классы модулей в линейке REGUL. Для части задач достаточно компактного микроконтроллера уровня «Амур» К1948ВК018, который уже применен в серийных модулях. Для основных изделий рассматривается Baikal‑U, а для наиболее требовательных — К1921ВГ1Т НИИЭТ.
В этом материале разбираем, как выглядит такой переход с инженерной стороны: где RISC‑V MCU уже дошел до серии, какие ограничения остаются по памяти, периферии, корпусам и SDK, а также почему выбор микроконтроллера для промышленной автоматики нельзя свести к таблице характеристик. Если вам интересна эта тема, то добро пожаловать под кат.

При разработке электронных устройств порой надо подключить инкрементный энкодер.
Это могут быть устройства с регулированием громкости звука, яркости свечения, датчик оборотов одометра или что-н еще.
В этом тексте я показал как может работать программный компонент драйвера для опроса инкрементного энкодера.
Представьте: маленький брелок лежит в кармане. На нём — мордочка кота из популярного мема. Нажимаешь кнопку на затылке — и в центре головы загорается круг из двенадцати ярких SMD-светодиодов. Два огонька начинают бегать по кругу с коротким хвостом. Ещё одно нажатие — и запускается спиннер: три луча вращаются по часовой, потом три круга против. Третий режим — маятник, три светодиода плавно качаются взад-вперёд, как загипнотизированный взгляд. Четвёртое нажатие — и всё гаснет. Батарейка CR2032 отдыхает.
Всё это работает на самом дешёвом микроконтроллере ATtiny13. Четыре пина управляют двенадцатью светодиодами через Charlieplexing. Никаких Arduino, никаких сдвиговых регистров.

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