Очень, очень рекомендую эту серию.

Блог обо всём.
На моей Orange Pi PC Plus у меня крутится сервер сетевой печати, а также локальный DNS сервер (чтобы к устройствам в домашней сети обращаться по именам, а не по IP адресам).
И мне давно хотелось снабдить его бесперебойным питанием. Благо, братья китайцы наладили массовый выпуск UPS модулей на аккумуляторах 18650. И всё бы хорошо, но по старинной радиолюбительской традиции дело застопорилось на изготовлении корпуса.
А тут недавно у меня появился 3D принтер, и я этот самый корпус напечатал (см. рис. 1).
В общем вот. Теперь в случае пропадания электричества в квартире интернет продолжит какое-то время полноценно работать (роутер уже давно питается от «большого» UPS, а теперь и DNS сервер в относительной безопасности).
Для написания программ для микроконтроллера RP2040 я использую среду Arduino IDE. Это возможно, благодаря этому проекту, в котором реализована поддержка всех плат, основанных на RP2040 и RP2350. И частью этого проекта является порт операционной системы FreeRTOS.
Я вчера до глубокой ночи рубился с этим всем, пытаясь понять, почему не получают управление задачи, назначенные на core 0. Все задачи по-умолчанию запускаются на ядре core 1, а если попробовать явно назначит задачу на другое ядро, то она просто не получает управление. И в документации на FreeRTOS, и в исходных кодах написано, что задачи могут работать на обоих ядрах, т.к. в данном случае реализована поддержка FreeRTOS SMP (Symmetric Multi-Processing).
В реальности оказалось, что нужен лёгкий костыль, в виде функции vTaskDelay() или delay(), вызванной из основного «ардуинного» цикла loop() (см. рис. 1). В этом случае всё начинает работать, как заявлено. (Вообще, годится наверное любая функция из состава FreeRTOS API; я на этот эффект наткнулся, отправляя сообщения в очередь прямо из цикла loop()).
Пожалуй, заведу багу на github для этого проекта, чтобы привлечь внимание разработчиков в такой особенности. Оно-же, судя по документации, обязано работать без этого костыля.

У Гайвера вышел интересный видос (см. ниже). Полезная часть там — принцип работы и конструкция регулятора оборотов для моторчиков постоянного тока.
Думаю, что именно такая схема вполне подойдет как замена моему редуктору для швейной машинки. Главное — взять достаточно мощный и низкооборотистый моторчик.
Беру на заметку. (Хотя менять редуктор на регулятор я, конечно же, не буду.)
Ещё одна демонстрация возможностей MIDI-баяна.
На видео ниже — робкая попытка сыграть упрощенную версию вот этой аранжировки (мне она нравится больше, чем классическая).
Для записи использован звуковой модуль MB Music Pro.DX. Аккомпанемент (ударные инструменты) играется из этого файла:
Звучит он так:
Но надо понимать, что это MIDI файл. С интернетовским проигрывателем он звучит плохо, т.к. оптимизирован специально под использованный звуковой модуль. Через Pro.DX этот файл звучит отлично.
Уже давно я посматриваю на FreeRTOS, которая уже присутствует в составе SDK, который я использую для сборки прошивок для RP2040.
И чем дальше, тем усиливается интерес. Интересно, как бы я написал прошивку MIDI-баяна, если бы до начала работ умел программировать под FreeRTOS?
Возможно, пришло время это узнать. Я уже изучил тему поверхностно. Уже сейчас понятно, что архитектура, основанная на очереди событий (есть источники событий, и есть обработчики), для FreeRTOS, можно сказать, родная. Пожалуй, изучу эту шттуку до уровня свободного владения.

Когда-то давно в 2020 (или в 2021) году я подключился к отличному тарифу с честным безлимитным интернетом. За 300 рублей.
Потом абонентку за этот тариф поднимали-поднимали и подняли до 456 рублей.
А сегодня — см. рис. 1.
Но других вариантов получить безлимитный (честный безлимитный) интернет у Мегафона сейчас нет. Поэтому остаюсь на этом, что тут поделаешь… Будет 555 рублей в месяц. Буду утешаться тем, что по цене это примерно 3 шавермы. 🙂

В связи с недавней покупкой 3D принтера пришлось задуматься о том, как я буду сушить пластик в случае необходимости.
Наиболее очевидный вариант — это имеющаяся у меня духовка Bosch. Она умеет держать температуру в диапазоне от 30 до 300 градусов, и в ней есть режим конвекции. То есть, если исходить из заявленных характеристик, то сушить пластик в ней вполне можно, т.к. духовка способна поддерживать температуру, наиболее подходящую для сушки любого пластика.
Но остался открытым вопрос: а насколько можно верить тому, что духовка держит именно заданную температуру, а не какую-то другую? И насколько сильно эта удерживаемая температура меняется в процессе? Без эксперимента было не обойтись.
Поэтому я взял ардуинку и датчик температуры и влажности HTU21D и собрал простенькую схему измерителя температуры. Датчик я засунул в духовку, и провод от него вывел наружу, подключив к ардуинке.
Результат — на рис. 1. При включении температура начала расти, и в пике достигла 70 градусов. Затем она начала снижаться к заданному значению. Установившаяся температура оказалась в диапазоне от 60 до 61 градуса.
Сказать, что я удивился — это ничего не сказать. Я думал. что всё будет гораздо хуже, и что можно надеяться на удержание температуры, колеблющейся, например, в диапазоне от 50 до 70 градусов. Но судя по результату, в этой духовке температура удерживается с помощью честного ПИД. Я не ожидал от бытового устройства такой точности.
В общем, сушилка для пластика у меня есть. 🙂

Последнее искушение сработало. Был закуплен принтер Elegoo Neptune 4 Plus (см. рис. 1). Для моих задач больше не нужно. Но и меньше тоже не нужно, т.к. «Pro» имеет стол меньшего размера и корпус панели управления баяна, например он напечатать не сможет. А этот «Plus» — сможет.
Как всегда, оказалось, что 3Д печать — это целое дело, и чтобы хоть что-то напечатать с приемлемым качеством, нужно сначала самостоятельно настроить принтер, настроить спец-программу (т.н. «слайсер»), и только потом будет какой-то результат.
И нужно делать кофр для хранения этой бандуры…