Как стать автором
Обновить

В поисках контроллера вентиляторов

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.1K

В 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 года с комплектующими уже стало туго, с али исчезли множество компонентов, приходится искать замены где только возможно.

Интересные кейсы и Авито

Было интересно попробовать продать это, не особо ради денег, а отклика. Выставил я объявление на Авито, люди писали интересовались и буквально через недели две у меня была первая продажа на водянку.

Из интересного:

  1. Майнеры, у которых управлять оборотами нужно не от ПК, а от датчиков воды, в результате я дополнил прошивку умениями опираться на датчики без компьютера. Графики оборотов задавался командой прямо в контроллер и в нем сохранялся.

  2. Моддеры, тут все просто, заказывали белые корпуса :-)

  3. Админы, брали на сервера, питание я так понял запитывали отдельно, т.к. серверные вентиляторы довольно прожорливые и контроллер по питанию их не вывезет. А управление писали на скриптах, контроллер даже в UNIX определялся на COM порту и взаимодействие было простое, что очень радовало клиентов.

  4. Несколько контроллеров, был случай когда человек заказал сразу три контроллера, для ПК, но плагин мой не рассчитан был на множество, пришлось дописать, теперь к FanControl можно подключать множество.

  5. Само выключение или Ping, у клиента был ноутбук со станцией, пока он на станции контроллер должен был работать, а как его снимали, он выключался. Доработал командой ping как только контроллер его не получает в течении N времени он выключается.

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

Итоги

А итогов как таковых и нет, безусловно это замечательный опыт, организации продукта от идеи до реализации, взаимодействия с клиентами и понимания чего он хочет. Скорее для меня это хобби, разгрузиться от рутины программирования.

Теги:
Хабы:
+8
Комментарии34

Публикации

Ближайшие события