В 2022 году, когда курс валют был благоприятным, я решил обновить свой компьютер. Я собрал топовую конфигурацию на базе процессора i9 и видеокарты 3080Ti (мне для работы :-)). Для обеспечения хорошего охлаждения я установил 9 вентиляторов. Всё было бы замечательно, если бы в небольшой квартире по вечерам и ночам гул вентиляторов не мешал моей семье.
Было решено собрать кастомное СЖО. Система была собрана на двух трехсекционных радиаторах, количество вентиляторов было уменьшено до шести, но, как оказалось, напрасно. Несмотря на уменьшение количества вентиляторов, из корпуса все еще нужно было выдувать горячий воздух, и количество вентиляторов снова стало девять. Хотя обороты вентиляторов уменьшились, система стала тише.
В голову пришла идея отключать вентиляторы работающие без надобности. Ведь видеокарта если не играть особо не грелась. В ходе экспериментов установил, что в режиме работы и просмотра ютуба для охлаждения всего хватало 2х вентиляторов на одном радиаторе и одного радиатора на выдув, остальные можно было выключить. Поискав по интернету выбор пал на контроллер от Lian Li имеющий 4 независимых порта для вентиляторов, в процессе настройки понял для себя что не все вентиляторы могут останавливаться совсем в добавок софт для управления работал отвратительно. Немного пораскинув мозгами было принято решение собрать свой контроллер, ведь ничего особо сложного думал я...
Выбор микроконтроллера проходил по параметрам нужно было большое количество портов поддерживающих PWM и легкое вхождение. Выбор был между esp32 и RP2040. Первый был дешевый, но уровень вхождения и плясок с бубном на всех форумах был запредельный. Второй же был дороже, но работать с ним оказалось гораздо легче и я остановился на нем, а точнее на Raspberry Pi Pico. Плата была куплена, увы из-за отсутствия времени и сил ни как не мог приступить хоть что то делать, поняв что так дальше нельзя я решил найти человека который сделает хотя бы основу моей задумки. В VK была найдена группа оказывающая услуги, списавшись с представителем и описав что я хочу он согласился обозначил сроки и цену, мной был оплачен аванс и я стал ждать занимаясь своими делами. Как оказалось все было зря и меня просто продинамили месяц, кормя завтраками и в итоге заблокировали после написания отзыва на них. Заявление в полицию я конечно написал, но вот уже прошло больше двух лет, ни ответа ни привета от них нет (группа все еще существует, люди онлайн, только я в блокировке группу даже отзыв не написать). Получив отрицательный опыт, я конечно погоревал, но дело нужно было завершить. Ночами я штудировал форумы и у меня получилось собрать свой первый MVP. Это был собранный на макетной плате по найденным в интернете статьям, управлялся путем изменением процентов в коде и перепрограммированию микроконтроллера, но он работал и радости не было предела.

Масштабировав получившийся результат до 4 вентиляторов, я задался мыслью как ими управлять. Писать программу самому? Долго, сложно и результат не понятен, нужно проще. Основной проблемой казалось определение температуры устройств, CPU, GPU, диски и т.п., море производителей, океан драйверов, одному мне это не потянуть. Я начал искать готовые решения, из требовании: открытый код или поддержка плагинов, легкость и быстрота работы (я был огорчен опытом LIAN Li и стандартной утилитой от ASUS), и возможность гибко настраивать режимы работы. И к моему счастью я нашел FanControl, код хоть и закрыт, но возможность добавить свой контроллер с помощью плагина меня воодушевила. Когда пришла муза я за вечер придумал как "общаться" с контроллером и написал MVP плагина, хоть и писал я на C# второй раз в жизни, первый был в университете. А "говорили" они с друг другом с помощью JSON. В момент запуска программы она сканирует COM порты (именно на этих портах работает Raspberry Pi Pico, хоть и подключается по USB) и посылает сообщение:
{"action":"hellow"}
Если в ответ приходит тот же hellow, но программа запоминает порт и работает с ним дальше. И до сих пор я не знаю правильно ли это посылать на все порты данные, возможно какое то устройство поймет не правильно и что то пойдет не так, но другой реализации я не придумал.
Скрытый текст
Пока проблем с крахом других устройств не выявлялось :)
В дальнейшем плагин запрашивает параметры вентиляторов или температуры:
{"action":"fans"}
{"action":"temperature"}
Вы ответе контроллера список портов и количество оборотов на порте в минуту, этот список формирует вентиляторы в программе FanControl.

В дальнейшем я уткнулся в стену вопроса: - Как останавливать любой вентилятор?
Было понятно что нужно рубить питание.. тут как говориться:
Наши полномочия всё, окончены!
Ибо в электронике я не отличаю резистора от транзистора. Тут я понял мне снова нужен помощник, но предыдущий опыт ограничил поиск только в родном городе и только лично. К моему удивлению был найден человек который имел опыт в микроконтроллерах и мы с ним создали прототип, а затем и законченное устройство. Печатные платы были заказаны у наших зарубежных партнерах в количестве 20-ти штук, у нас за эти деньги можно было лишь сделать 5 штук, так же большая часть компонентов была с али. Первые устройства я паял страшно долго, опыта было по минимуму, но за-то сейчас могу спокойно за день спаять 5 штук. По не опытности спалил один контроллер положив его на металлический корпус ПК для тестов без корпуса, блок питания щелкнул и ушел в защиту и ПК выключился, я жутко испугался что спалил все, но выключив контроллер все включилось и USB порт к которому он был подключен не выгорел. С тех самых пор у меня отдельный изолированный стенд для тестирования. Корпуса печатаю на 3D принтере у партнёров с доски объявления. Изначально я хотел сделать контроллер модульным, чтобы меняя версии Pico на версию с Wi-Fi получать беспроводной, но из-за довольно сложной реализации подключения отказался от этой затеи.

С наступлением 23 года с комплектующими уже стало туго, с али исчезли множество компонентов, приходится искать замены где только возможно.
Интересные кейсы и Авито
Было интересно попробовать продать это, не особо ради денег, а отклика. Выставил я объявление на Авито, люди писали интересовались и буквально через недели две у меня была первая продажа на водянку.
Из интересного:
Майнеры, у которых управлять оборотами нужно не от ПК, а от датчиков воды, в результате я дополнил прошивку умениями опираться на датчики без компьютера. Графики оборотов задавался командой прямо в контроллер и в нем сохранялся.
Моддеры, тут все просто, заказывали белые корпуса :-)
Админы, брали на сервера, питание я так понял запитывали отдельно, т.к. серверные вентиляторы довольно прожорливые и контроллер по питанию их не вывезет. А управление писали на скриптах, контроллер даже в UNIX определялся на COM порту и взаимодействие было простое, что очень радовало клиентов.
Несколько контроллеров, был случай когда человек заказал сразу три контроллера, для ПК, но плагин мой не рассчитан был на множество, пришлось дописать, теперь к FanControl можно подключать множество.
Само выключение или Ping, у клиента был ноутбук со станцией, пока он на станции контроллер должен был работать, а как его снимали, он выключался. Доработал командой ping как только контроллер его не получает в течении N времени он выключается.
Большинство клиентов берут на водянку. Был у меня конечно и брак, один :) почему то контроллер ушел в загрузочный режим и ни какие прошивки на него не подходили, возможно просто брак контроллера, может я что то перегрел при пайке, но на тестах он работал, и у клиента проработал запуск, а потом ушел в загрузчики. Благо клиент хороший и я без проблем выслал замену, сколько не разбирался с бракованным так и не понял что с ним.
Итоги
А итогов как таковых и нет, безусловно это замечательный опыт, организации продукта от идеи до реализации, взаимодействия с клиентами и понимания чего он хочет. Скорее для меня это хобби, разгрузиться от рутины программирования.
Комментарии (34)
diov
30.06.2025 20:05Так странно читать подобное... Если хотите тишины - почему не избавиться от вентиляторов совсем?!
У меня ещё более мощная система, но установлен всего ... один вентилятор на корпус ПК. За рассеивание тепла отвечает пассивный радиатор. Когда выбирал размеры радиатора, нашёл таблицу ТТХ, прикинул температуры и мощность рассеивания. Как оказалось - он справляется отлично!
sim2q
30.06.2025 20:05Пользуюсь платкой с али. ШИМ диммирование по питанию. Полностью программируется. Может останавливаться. Из недостатков - один канал и нет remote control. Taho pin не используется, так что нет обратной связи. И желательно настроить начальный ШИМ при котором вентилятор уверенно стартует.
фото
vladkorotnev
30.06.2025 20:05И до сих пор я не знаю правильно ли это посылать на все порты данные, возможно какое то устройство поймет не правильно и что то пойдет не так, но другой реализации я не придумал.
Пойдите от обратного, пусть ваше устройство постоянно срёт в порт какой-то конкретный набор символов до инициализации или после таймаута с момента последнего сообщения, а программа просто открывает все подряд порты и смотрит, есть там такое или нет. Ну а если есть — отвечает, и дальше уже вы знаете.
Правда нюансы тоже возможны: как-то раз сделал такое, выбрав «маркером» букву M, и при следующем подключении моя прога девайс не увидела, зато курсор мыши стал абсолютно неуправляем. Как выяснилось, драйвер от какой-то древней мелкомягкой мыши на компорт работает абсолютно таким же образом и до сих пор сидел в недрах восьмой винды :-)
randomsimplenumber
30.06.2025 20:05уровень вхождения и плясок с бубном на всех форумах был запредельны
Даладно.. Arduino framework везде одинаковый, ставится в 2 клика.
EnChikiben Автор
30.06.2025 20:05Меня отпугнуло что из коробки там был какой то аналог C++ (питон вроде как был но чтобы его запустить надо что то сделать) и что контроллеров esp32 очень много и для каждого семейства своя прошивка, шаг влево шаг вправо. Да есть "заводской" Arduino но и цена у него была соответствующая. Не исключаю что сейчас что то и поменялось, но имеем то что имеем. В Pico же просто закидываешь файл скрипта и нет ни каких забот с прошивками версиями и т.п., проще некуда.
randomsimplenumber
30.06.2025 20:05В Arduino IDE добавляется поддержка выбранной платы и пишется обычный код в arduino style. Никаких плясок.
net_men
30.06.2025 20:05действительно, с нуля туда лезть - такое себе. Я тоже до сих пор не вникал глубоко, хотя и отучился на программиста, а сейчас - админ. На самом деле ничего сложного: все языки похожи... но есть множество нюансов именно со связкой электроники и кода. Иногда проще собрать на транзисторах и простой логике :))
nikolz
30.06.2025 20:05Выбор микроконтроллера проходил по параметрам нужно было большое количество портов поддерживающих PWM и легкое вхождение. Выбор был между esp32 и RP2040. Первый был дешевый, но уровень вхождения и плясок с бубном на всех форумах был запредельный. Второй же был дороже, но работать с ним оказалось гораздо легче и я остановился на нем, а точнее на Raspberry Pi Pico.
Странно, что Вы проигнорировали ESP8266(ESP8285). Это дешевле, проще и нет никаких танцев с бубном.
Я собираю на них модули для управления до 8 исполнительными механизмами в готовом корпусе с али по цене 40 руб ,включая доставку.
randomsimplenumber
30.06.2025 20:05Ног мало. А цена микроконтроллера в таких проектах не играет роли.
nikolz
30.06.2025 20:05собираю на них модули для управления до 8 исполнительными механизмами в готовом корпусе с али по цене 40 руб ,включая доставку.
Число ног увеличивается без проблем за копейки
randomsimplenumber
30.06.2025 20:05В одноразовом проекте правда это важно - обойдется контроллер в 1 бакс или в целых 2.5 ? ;)
nikolz
30.06.2025 20:05Проблема не в этом. На ESP8266 очень просто и быстро реализовать все хотелки. При этом будет меньше потребление, менее сложная конструкция, а возможностей больше.
В итоге, не только один чип, но и вся разработка будет в разы дешевле, а время выхода конечного продукта в разы меньше.
randomsimplenumber
30.06.2025 20:05Если начинать с нуля, совсем не очевидно.В более новых платах, тех что целых 2.5 бакса, есть возможность отладки, например. Это здорово упрощает.
nikolz
30.06.2025 20:05Давайте предметно обсуждать. Назовите новые модули за 2.5 бакса, которые по вашему мнению лучше и проще.
randomsimplenumber
30.06.2025 20:05Для чего лучше и кому проще? ;)
А так, rp2040 стоит 1.5 бакса, прошивку заливать можно прямо из проводника, есть отладчик. Разве плохо?
nikolz
30.06.2025 20:05Не плохо, но не лучше.
Размер модуля больше, цена больше.
В ЕSP прошивку заливаем по UART.
Нет беспроводного интерфейса.
Следовательно обновлять и управлять либо с компьютера либо еще один модуль.
Два ядра - как корове седло.
Если с нуля то сложнее писать софт.
Задача как в статье вообще не требует второго ядра.
Режим сна минимальный ток 390uA против 10uA ESP8285
----------------
Данный чип существенно сложнее, чем ESP8286.
Модуль больше, WiFi нет. Писать программы сложнее.
объем flash меньше. От батарейки работать будет не долго.
А Ваше мнение? Для каких задач этот модуль лучше?
randomsimplenumber
30.06.2025 20:05Ну для вентиляторов, правда, так критично наличие wifi и что там с потреблением? ;)
nikolz
30.06.2025 20:05Вообще-то мой комент был по поводу того, что автор статьи посмотрел ESP32 и RP2040. И их он не взял именно из-за сложности написания программ.
Я сказал, что он не посмотрел более простой ESP82xx.
Вы же опять ему предлагаете взять то, что он отверг.
Так чем этот модуль лучше?
Зачем его брать вместо ESP8266(85)?
randomsimplenumber
30.06.2025 20:05В каких то случаях ничем не лучше, в каких то лучше. Самая короткая дорога - та которую знаешь.
А для управления вентиляторами можно брать совершенно что угодно. Хоть stc8, хоть ltg328. Хоть терморезистор за 5 копеек и ne555.
EnChikiben Автор
30.06.2025 20:05Вот и я выбрал ту которая для меня казалась проще:) в этих контроллерах сам черт ногу сломит :)
SergeyIl2
30.06.2025 20:05На Али продают датчики температуры, даже скорее термостат или реле температуры, с нормально разомкнутыми контактами. Идеально около 50 градусов брать. У меня на проц серверный кулер шумит с вентилятором 70мм, но медный и при офисной нагрузке и пассивно охлаждает нормально (корпусной обдувает). Включил его вентилятор через такой датчик и стало тихо! В игре включается.
goldexer
30.06.2025 20:05Я бы, например, заюзал что-то из STM32. И кстати С от С# не очень то отличается, если нужны только совсем базовые конструкции (циклы да условия - которых в таком небольшом проекте достаточно). А с их новомодным уровнем абстракций большинство интерфейсов заводится на ура. Поднять USB-CDC, датчики на АЦП или цифровые линии связи, ШИМ отправлять на купленные на АЛИ готовые драйверы. Ну и я, например, обожаю для этого Кейл из-за хорошей риалтайм-отладки через его собственный драйвер.
Если речь всё-таки про «подключить библиотеки и не марать руки» то и Ардуино отличный вариант. Сообщество уже выкатило библиотеки практически на любой чих
net_men
30.06.2025 20:05Всё красиво, интересно... но читать - боль. Не поленитесь, почитайте классиков из школьного курса. Мыслеизложение ужасно, слова проглатываются и теряются. на сколько я троешник, но "ниасилил" полностью прочитать.
Va_sil
У Гайвера есть видео на эту тему . Лет 5 назад решал ту же задачу , с тех пор пользуюсь . Просто , удобно atTyn85 резистор , терморезистор . Опционально кнопка и пищалка. Зачем усложнять ?
xSVPx
Кстати может можно было бы и просто терморезистором и транзистором обойтись :). Но это не молодежной совершенно.
Но распберри - это уже через край.
BSOZ
Лет 10 назад попалась МП с багами в управлении вентиляторами: диапазон скоростей был от высокого до максимального. Всё устанавливалось в графике температурной зависимости, но вот нижняя граница графика давала ну где-то процентов 80 ШИМ (очевидно производитель перестраховался от случая, когда некачественные 3-проводные вентиляторы некоторых производителей могут остановиться и сгореть на каких-то довольно высоких скважностях). Очень шумно всё это работало. Плюс/минус ситуация как у автора. Я тогда просто купил реле температуры с выносным датчиком и сделал разрыв цепи 3 корпусных вентиляторов из 4 при холодном воздухе на выходе. Большую часть времени они и не включались. Работает более чем сносно до сих пор, правда уже не у меня.
xSVPx
Один работающий на полную вентилятор всё-таки хуже, чем четыре работающих на чуть-чуть.
Залман одно время клал в наборы специальный переходник с крутилкой, не расковыривал, но он позволял не отказываясь от управления со стороны матери уменьшать скорость вращения вентилятора.
EnChikiben Автор
Хочется управлять каждым вентилятором/портом