Схема уже отработана на другой апельсине, но только сейчас взялся за паяльник, и Orange Pi PC Plus становится основной апельсиной благодаря eMMC и вообще стабильная и электричества мало ест(теперь важно, все теперь становится важным).
Вот схема подключения. Транзистор S9012, все сопротивления 220 ОМ. На плате вентилятор подключается к разъему, красное черное имеет значение, но на схеме этого разъема нет так как черчение в Fritzing и без того невыносимая боль.
ВАЖНО: Интересно, но это схема вообще не работает на Raspberry Pi 3 в корпусе NesPi — там питание приходит по пинам от корпуса, не по малинному усб. Ну никак, нет, только слегка дергается вентилятор, когда от базы все отключаю…
А вот фото готовой платки, сопротивления одинаковые маркировка разная
Ссылки на компоненты, возможно уже устарели но покупал давненько
Вентилятор 5V 0.2A
https://ru.aliexpress.com/item/Raspberry-PI-Fan-Active-Cooling-Fan-for-Customized-Acrylic-Case-5V-plug-in-and-play-Support/32294328071.html
Вот такие платки для паяния ссылки уже нет ‘Dropshipping 12 Шт. 5×7 4×6 3×7 2×8 см двойной Бортовой медь прототип печатной платы Универсальная Доска Стекловолокна доска для Arduino’
Ассорти из транзисторов https://ru.aliexpress.com/item/15Values-TO-92-Transistor-Assorted-Kit-S9012-S9013-S9014-S8050-S8550-2N3904-2N3906-BC327-BC337-Tl431/32384690394.html
Чтобы общаться с GPIO надо поставить WiringOP
git clone https://github.com/zhaolei/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
Самый простой способ запускать через cron скрипт который будет смотрим температуру и запускать кулер
вот такой
Тут еще включается лампочка, если больше 45 градусов красный, если меньше синий. Проверяйте путь к скрипту
whereis bash
что интересно если путь не правильный то из консоли скрипт будет работать, а из cron нет и вот длшадывайся что к чему
Создаем файл в root директории
vi cool.sh
Добавляем в него код
#!/bin/bash C=`/bin/cat /sys/class/thermal/thermal_zone0/temp` if [ $C -ge 45000 ] then /usr/local/bin/gpio mode 1 out&&/usr/local/bin/gpio write 1 off&&/usr/local/bin/gpio mode 3 out&&/usr/local/bin/gpio write 3 on&&/usr/local/bin/gpio write 2 off else /usr/local/bin/gpio write 1 on&&/usr/local/bin/gpio write 3 off&&/usr/local/bin/gpio mode 2 out&&/usr/local/bin/gpio write 2 on fi
делаем его исполняем
chmod +x cool.sh
и добавляем в расписание
crontab -e
строчку
*/1 * * * * /root/cool.sh
и это работает
Но всего лишь раз в минуту… но можно сделать на С и будет стописят раз в секунду опрашивать придется даже притормаживать
Идем в папку с примерами от WiringOP
cd /root/WiringOP/examples
Делаем файл
vi acool.c
Добавляем в файл этот код
#include <stdio.h> #include <wiringPi.h> #define LEDB 3 #define LEDR 2 #define COOLER 1 #define WARNING_TEMP 45000 int main (void) { int number1; wiringPiSetup (); pinMode (LEDB, OUTPUT); pinMode (LEDR, OUTPUT); pinMode (COOLER, OUTPUT); for (;;) { FILE *in_file; in_file = fopen("/sys/class/thermal/thermal_zone0/temp", "r"); if (in_file == NULL) { printf("Can't open file for reading.\n"); } else { fscanf(in_file, "%d", &number1); fclose(in_file); } if ( number1 <= WARNING_TEMP) { digitalWrite (LEDB, HIGH); // On digitalWrite (COOLER, HIGH); // Off digitalWrite (LEDR, LOW); // Off delay (500); // mS digitalWrite (LEDB, LOW); // Off delay (500); } else { digitalWrite (LEDR, HIGH); // On digitalWrite (COOLER, LOW); // On delay (50000); // mS } } return 0 ; }
Это путь к файлу с температурой в Armbian /sys/class/thermal/thermal_zone0/temp
ОСТОРОЖНО: Оказывается программы на С с циклами грузят на 100% процессор, если подумать то ничего удивительного тут нет. Но в этом скрипте мигание лампочки обеспечивает торможение цикла так что нагрузки не случается… но надо быть готовым
Собираем
make acool
И запускаем
./acool
И программа работает. Когда температура меньше 45000 (45 по Цельсиусу) мигает синий огонек, проверяет раз в секунду(это время задает интервалом мигания — лампочки важную роль играют тут такто), когда поднимается выше включается красный и вентилятор и скрипт замирает на 50 секунд, ну что бы не дергать вентилятор.
Это просто программа на С, как её сделать демоном не понял. Но её просто можно запустить на старте и она будет работать сама по себе
скомпелированный файл я скопировал в root директорию
cp /root/WiringOP/examples/acool /root/acool
идем в крон
crontab -e
добавляем эту строчку (старую убираем)
@reboot /root/acool
и это работает
Добавить комментарий