В данной статье поговорим о PWM (ШИМ) вентиляторах и настроим 2 вентилятора от Raspberry Pi на Repka Pi
Сразу хочу сказать что Repka Pi скоро выпустить свою версию PWM (ШИМ) вентилятора который будет немного дешевле рассмотренных вариантов в данной статье. Также шапка будет оснащена штатными кнопками включения/выключения и перезагрузки, длинной сквозной 40 пиновой гребенной чтобы сохранить возможность подключения других модулей, разъемом Type-C и разъемом XH2.54 2Pin для подключения питания.
Для чего необходим PWM вентилятор?
Скоростью вращения PWM вентилятора можно управлять и отсюда следует что он может вращаться медленней или вовсе отключаться в зависимости от температуры процессора.
PWM и I2C на Raspberry Pi и Repka Pi #
Давайте сначала сравним расположение пинов на котором расположен PWM и I2C
Распиновка Raspberry Pi #
Распиновка Repka Pi 3
По схемам видно что у Repka Pi аппаратный PWM расположен на 33 пине (PWM0) и у Raspberry Pi на этом же пине расположен PWM1.
По схеме также видно что интерфейс I2C1 у Raspberry Pi и у Repka Pi расположены на 3 и 5 пине
Включаем PWM и I2C1 на Repka Pi #
Что-бы включить PWM необходимо воспользоваться утилитой repka-config
При запуске будет показана текущая максимальная частота, нажимаем “Ok”
Далее выбираем пункт 3 как на скриншоте ниже
Далее выбираем частоту ту которая вам необходима и после выбираем “5 Вариант” как на скриншоте
и перезагружаем репку.
После перезагрузке на пине 33 включится поддержка аппаратного PWM, а на 3 и 5 пине I2C1.
Если необходимо включить только I2C1 то выбираем подходящий вариант кроме “1 Вариант”
Geekworm SupTronics x735 v2.5 на Repka Pi #
Первым мы рассмотрим вентилятор от Geekworm, у меня версия 2.5 но на данный момент уже продается версия 3.0
Официальная страница https://wiki.geekworm.com/X735
Купить на AliExpress https://aliexpress.ru/item/33010555081.html
Давайте ближе рассмотрим данный вентилятор
Плюсы
-
Множество разъемов питания
-
Имеется 2 подключаемые кнопки но по факту работает 1, в версии 3.0 осталась 1 кнопка
-
Кнопка на плате
-
Вентилятор с датчиком вращения
-
Низкий шум вентилятора
-
Размер 40х40мм
-
Расположен над процессором Repka Pi
Минусы
-
Высокая цена
-
Разъемы подключения выходят за пределы основной платы
-
Работает только авто включение
-
Низкие GPIO, на Repka Pi необходимо будет заменить радиаторы на более низкие
Запускаем на Repka Pi #
Первым делом смотрим в документации какие пины использует данный вентилятор
Из таблицы видно что на 33 пине (PWM1) находится управление скоростью вращения, 36 пин датчик вращения, 29-38 менеджер питания. Мы будем использовать все кроме 38 пина. 29 пин это кнопка “Momentary Switch”
Установка #
Устанавливаем RepkaPi.GPIO SysFS
sudo apt-get update
sudo apt-get install python3-dev python3-setuptools git
git clone https://gitflic.ru/project/repka_pi/repkapigpiofs.git
cd repkapigpiofs
sudo python3 setup.py install
* Если вы устанавливаете под пользователем, то подробная документация как настроить права пользователю расположена на странице проекта.
Устанавливаем подготовленные скрипты Geekworm SupTronics x735 v25
git clone https://gitflic.ru/project/screator/suptronics-x735-v2-5.git
cd suptronics-x735-v2-5
sudo chmod +x *.sh
sudo bash install.sh
sudo reboot
Внимание: после установки папку suptronics-x735-v2-5 нельзя удалять, переименовывать или перемещать.
После перезагрузки проверяем работоспособность при помощи чтения скорости вращения. Скрипт установщик добавляет службу для автоматического запуска контроля скорости и поддержку кнопки
python3 read_fan_speed.py
По скриншоту видно что скорость вращения изменяется в зависимости от температуры.
Скорость вращения можно изменить в файле pwm_fan_control.py, указывается в процентах
Также теперь поддерживается кнопка, принцип ее работы:
-
для перезагрузки нажмите кнопку и удерживайте 1-2 секунды
-
для безопасного отключения нажмите кнопку и удерживайте 3 секунды
-
чтобы принудительно выключить нажмите кнопку и удерживайте 7-8 секунд.
Если вы хотите отключить обработку кнопки то для этого необходимо отключить службу
sudo systemctl disable x735pwr.service
Для отключения управления скоростью вращения, также отключаем службу
sudo systemctl disable pwm_fan_control.service
Удаление #
Для удаления достаточно выполнить скрипт uninstall.sh
sudo bash uninstall.sh
YAHBOOM RGB Cooling HAT #
Рассмотрим еще вариант PWM вентилятора. Данному вентилятору для работы необходим только интерфейс I2C1.
Данный вентилятор имеет RGB подсветку и возможность установить I2C OLED экран.
Официальная страница: http://www.yahboom.net/study/RGB_Cooling_HAT
Купить на AliExpress: https://aliexpress.ru/item/1005003472541765.html
Плюсы
-
Вентилятор бесшумный
-
Управляемая LED подсветка
-
Подключаемый I2C экранчик
-
Низкий шум вентилятора
-
Размер 40х40мм
-
Управление по I2C интерфейсу
-
Не занимает PWM
-
Высокий GPIO, хорошо подходит к Repka Pi
Минусы
-
Высокая цена
-
Нет контроля питания и дополнительных разъемов питания
-
Расположение вентилятора не над процессором
-
Не отключается при отключение питания
Установки #
В начале статьи мы рассмотрели как включить интерфейс I2C, если вы его еще не включили, то вам необходимо его включить.
Устанавливаем библиотеку для работы с OLED, RepkaPi Oled разрабатывается для Repka Pi 3
sudo apt-get update
sudo apt-get install python3-dev python3-setuptools git i2c-tools python3-smbus python3-pip
sudo pip3 install pillow smbus2
git clone https://gitflic.ru/project/screator/repkapi-oled.git
cd repkapi-oled
sudo python3 setup.py install
Устанавливаем скрипты управления RGB Cooling HAT, скрипт был адаптирован для работы с Repka Pi
git clone https://gitflic.ru/project/screator/yahboom-rgb-cooling-hat.git
cd yahboom-rgb-cooling-hat
sudo chmod +x \*.sh
sudo bash install.sh
sudo reboot
Внимание: после установки папку yahboom-rgb-cooling-hat нельзя удалять, переименовывать или перемещать.
После перезагрузки вы должны увидеть информацию на экране
Скорость вращения, RGB и информацию на экране можно настроить в файле RGB_Cooling_HAT.py, находится в конце файла
Также в папке расположены скрипты примеры, а на сайте модуля есть более подробное описание http://www.yahboom.net/study/RGB_Cooling_HAT
Если после установки не горит LED подсветка, вентилятор не срабатывает при температуре более 45 градусов или не выводится на экран информация то необходимо проверить и возможно заменить адрес i2c устройств. Давайте рассмотрим подробней как это сделать
Смотрим подключенные устройства к I2C1 следующей командой
i2cdetect -y 1
Вывод команды должен быть похожим
В данном случае 0d это адрес чипа управления подсветкой и вентилятором, а 3c это адвес экранчика.
Если у вас другие адреса то необходимо отредактировать файл RGB_Cooling_HAT.py, адреса находятся в начале файла
Если в выводе пусто
То значит вентилятор не подключен или не исправен.
Чтобы отключить модуль необходимо выполнить
sudo systemctl disable RGB_Cooling_HAT.service
Удаление #
Для удаления достаточно выполнить скрипт uninstall.sh
sudo bash uninstall.sh
Простой PWM вентилятор #
Вы можете также взять вентилятор со встроенным PWM, также есть еще дополнительно с датчиком оборота и LED.
https://aliexpress.ru/item/1005002509296525.html - вентилятор PWM с 3 проводами
https://aliexpress.ru/item/1005002518918026.html - вентилятор PWM с 3 проводами и LED
https://aliexpress.ru/item/1005003661639143.html - вентилятор PWM с датчеком скорости 4 провода
https://aliexpress.ru/item/1005005039538251.html - вентилятор PWM с WS2812 RED подсветкой
Для управления скоростью вентилятора необходимо также включить PWM.
Схема подключения #
Данные вентиляторы имеют 3 или 4 провода (красный, черный, синий и желтый)
-
Красный - 5v (плюс) подключаем на 2 или 4 пин
-
Черный - GND (минус) подключаем на 6 пин или любой другой GND
-
Синий - PWM (ШИМ сигнал) подключаем на 33 пин лучше поставить еще резистор 100Ом
-
Желтый - Tacho (Тахо датчик оборотов) можно подключить к любому GPIO но на схеме подключаем к 36 пину лучше поставить еще резистор 100Ом, также нужна подтяжка к 3.3v через резистор 5,1кОм
Скрипт
Если вы подключили по схеме то можно использовать скрипт для Geekworm SupTronics x735 v2.5
Вопрос разработчикам этого самого Repka-PWM Fan (если, конечно, они читают здесь комментарии): если вы однажды всё же его выпустите, можно ли будет его поставить на родной корпус Репы без "колхоза и доработки напильником"? Думаю, это было бы весьма существенно.