Автоматическое включение охлаждения на OrangePI

1.
Идем в папку /usr/bin
Создаем файл temp
В файл пишем :
#!/bin/sh
cat /etc/armbianmonitor/datasources/soctemp

сохраняем и закрываем.
Делаем его исполняемым chmod +x temp

2.
Идем в папку /usr/bin
Создаем файл temp_cool.sh и пишем в него:
#!/bin/sh
LEVEL=35
PORT=24
MODE=`gpio readall | grep "GPIO.$PORT" | awk -F"|" {'print$5'} | awk {'print$1'}`
TEMP=`/usr/bin/temp`
COOLER=`gpio read $PORT`
if [ $MODE != "OUT" ]; then
gpio mode $PORT out
fi
if [ $TEMP -gt $LEVEL ] && [ $COOLER -eq 0 ]; then
gpio write $PORT 1
fi
if [ $TEMP -lt $LEVEL ] && [ $COOLER -eq 1 ]; then
gpio write $PORT 0
fi

Делаем этот файл исполняемым chmod +x temp_cool.sh

3.
Идем в папку /etc/
Открываем на редактирование файл crontab и дописываем после примера:
* * * * * root /usr/bin/temp_cool.sh
Обратите внимание на пробелы и TAB!!! Эту строчку лучше не копировать, а вписать руками!!!
У меня это выглядит вот так

Перезагружаем OrangePI
Теперь каждую минуту наш скриптик будет проверять текущую температуру процессора и при необходимости включать или выключать кулер охлаждения проца нашей «мандарины»

p.s. Все это делалось от рута
Пунк 1 не обязателен! Можно в пункте 2 вместо TEMP=`/usr/bin/temp`
написать TEMP=` cat /etc/armbianmonitor/datasources/soctemp `
Теоретически должно работать, но я не пробовал… Пунк 1 у меня для того, что бы в любой момент и в любом месте я набрал команду temp и увидел текущую температуру процессора. И + ко всему в дальнейшем хочу вывод температуры сделать в самом ОктоПринте.

Так же для корректной работы у Вас должна быть установлена библиотека для работы в портом ввода/вывода.
Еще Вам нужно учесть вольтаж питания Вашего кулера. С пина GPIO выходит ввсего 3,5 вольта.
Решение может быть таким: Б/П 12v. К которому подключен кулер через транзистор и dc-dc конвертер на 5 вольт для «мандарины» Или отдельно подвести 12 вольт к кулеру, но тогда массы Б/П и «апельсины» должны быть соеденены.

Будет полезно посмотреть эту статью

Описалово:
В файле temp_cool.sh есть 2 переменные.
LEVEL – темература, при которой срабатывает включение и
PORT – номер GPIO пина к которому подключено управление кулером.

15

Метки: , ,    2016-07-19      Раздел: Доработка самодельного 3D принтера, Принт-сервер, Своими руками  
Автор: Просмотров: 2 424   28 комментариев



28 комментариев на «Автоматическое включение охлаждения на OrangePI»

  1. Упс… нашел косяк у себя в коде…
    данный код действителен для использования именно GPIO слева. Если Вы решили использовать GPIO находящийся справа, то следует использовать строку MODE=`gpio readall | grep «GPIO.4″ | awk -F»|» {‘print$11’} | awk {‘print$1’}` вместо строки MODE=`gpio readall | grep «GPIO.$PORT» | awk -F»|» {‘print$5’} | awk {‘print$1’}`

    0
    1. приветствую. у меня Orange Pi Plus2. запилил ваш скрипт, но не работает – вентиль не останавливается. прошу помощи :)
      Распиновка GPIO моей платы тут: https://goo.gl/wJuHPK
      вентиль висит на 4(5v) и 6(земля) пинах. В скрипте поставил PORT=4 (пробовал и 04). Мы же пин напряжения задаем, не землю? Команда temp в консоли работает, выводит текущую температуру, но вентиль на заданной Т. не останавливается. Куда дальше копать, что проверить ?
      Может команда MODE=`gpio readall …… требует правок ?

      0
        1. добавлено через пару дней :)
          Проблемку DEXMORF победили. Скрипт работает правильно.

          0
    2. Обратите внимание!
      1. Дабы это все работало требуется установленный вот этот пакет https://github.com/zhaolei/WiringOP
      2. Требуется создать скрипт для проверки пина и перевода его в режим OUT. При загрузке пин находится в другом режиме. Для примера можете подсмотреть код вот тут https://3deshnik.ru/blogs/wolfs_sg/rannee-preduprezhdenie-vozgoraniya

      0
  2. Добрый день. Мне очень понравился Ваш сайт. В частности сборник статей по octoprint. Меня заинтересовала строчка “И + ко всему в дальнейшем хочу вывод температуры сделать в самом ОктоПринте.” Как это можно сделать не подскажете? Очень нужно.

    0
    1. За этот ресурс говорим спасибо Алексею и Юрию… это они поддерживают этот сайт :)
      мне тоже он нравится… нужную мне информацию… в свое время… нашел только тут…
      Что касается вывода температуры в октопринте, то этот момент я так и не решил на данный момент… связано это с тем, что продал принтер (обменял) вместе с Orange PI и настроенным октопринтом на ней… а другой принтер пока не собрал и соответсятвенно пока и октопринтом не занимался…

      Если кто сделает вывод CPU температуры в октопринт, то прошу выложить эту информацию на данном ресурсе…

      0
  3. Спасибо за отчет.
    Реализовал у себя на апельсинке с маленьким 5в вентилятором и ключиком на транзисторе. Работает.
    Порог поставил на 45 градусов.

    0
  4. Ну и отлично… уже не напрасно статья выложена :)

    0
  5. gpio mode $PORT out.
    Тут вроде как точка лишняя в конце? С ней ругается “mode: Invalid mode: out.. Should be in/out/pwm/clock/up/down/tri”

    0
  6. Конечно. Ее там быть не должно. Исправил

    1
    1. Спасибо, полезная статья. Хочу сейчас сделать управление освещением, включением принтера и авт автоматическое охлаждение OrangPi. Управлять всем через релюшку ардуиновскую на 4 канала. Ное сли освещение и включение через реле нормально, то как быть с веключением вентилятора? Нагрелся – включил, остыл – выключил. И боюсь такие щелчки будут раз в минуту)
      И монжо чуть поподробнее про “Или отдельно подвести 12 вольт к кулеру, но тогда массы Б/П и «апельсины» должны быть соеденены.”, вот это не понял :-[ К слову питать собираюсь от 8 вольт, что бы не громко визжал кулер, вполне хватает для охлаждения.

      0
  7. Ну и нормально все… минусы БП которым питать кулер будете и апельсинки соедените и все…

    0
  8. Я релюшку включал бы минимум через транзистор…

    0
    1. Ардуиновкий блок реле, там ведь уже стоят транзисторы. Сделал как в статье, теперь охлаждение включается после того, как апельсинка чуть прогрелась. а выключается после отключения апельсинки. до 35 не охлаждает :) Но я намеренно подаю 8 вольт на вентилятор, вместо 12, при этом держится температура около 38. Работает почти бесшумно, а на ночь кулер отключается вместе с апельсинкой

      0
  9. Я первый раз вижу ардуиновкий блок реле…
    35 градусов – это как пример…
    Поставьте 40-45… и при реальной нагрузке… когда проц нагреется – включится охлаждение… а так смысл просто так гонять кулер

    1
    1. Ардуиновское реле удобное очень :) Подключил сразу на включение\отключение принтера, освещения зоны печати, охлаждение апельсинки. Осталось еще 1 место незадействованое, что нибудь придумаю :D
      Логику охлаждения еще переделаю, не хочу, что бы реле постоянно щелкало, а вентилятор даже при 8 градусов до 38 охлаждает.
      Еще бы плагин для Октапринта, что бы температуру Апельсинки выводила. Для Малинки есть, под апельсинку переделать надо бы

      0
    2. У меня камера все время работает, а она грузит 4 ядро на 99%. Если отключать камеру, в программе управления принтером под андроид (printoid) ошибка вываливается. Написал разработчику, как поправит, так буду отключать вебку и пусть Orange в холостую остывает и отключает вентилятор)

      0
  10. Не могли бы вы дать схему подключения 5 вольтового кулера? Далек я от электроники :-[

    0
    1. УПС… раньше не видел… схему чего нужно? как я понял выше писали, что через обычный транзистор подключили кулер… “+” кулера на плюс питания БП апельсины, а минус подключается к коллектору транзистора. транзистор в свою очередь подключен базой к пину на гребенке через резистор пару десятков ом. и эмитером к минусу БП апельсины подключен. Между базой и эмитером транзистора не забудьте резистор пару зесятков кило ом для исключения произвольного открытия транзистора.
      може тут подсмотреть https://3deshnik.ru/wp-content/uploads/2016/05/shema.jpg

      0
      1. Спасибо. По этой схеме и подключил.

        0
  11. Попробовал на Orange PC c установленной Openelec
    не получается создать файлы (или скопировать) в указанные папки . Хелп

    0
    1. Проблема у Вас видимо в том, что пользователь на Openelec далеко не рутовый. Вот у него и нет доступа к папке /usr/bin на создание файлов. Если Вы знаете пароль от root пользователя, то залогиньтесь под ним. Но это я включил блок телепатии уже… и без скриншотов ошибки и логов ставлю диагноз! И даже без фото… :D :D :D

      0
      1. Принтеры у меня с карточек печатают. Апельсинка для других целей планируется.
        Но для самостоятельной реализации “других целей” в частности OpenCV, необходимо понимание простых вещей, таких как :
        – как работает система , принцип
        – как самому написать программу, скрипт
        – как сделать автовыполнение..
        Пока простые вещи, но с чего то надо начинать. Потом она будет выдавать в gpio данные, а я уже буду их ловить другим своим устройством, на AMR мк с которыми давно дружу =)

        Дык вот, вхожу рутом, других юзеров и не создано. В какие то другие папки пишет, правит. Пока прикручивал пульт ИК к апельсинке, разобрался с SSH. вот в указанные папки по вашей инструкции не получается. Причем куллер повесил, через полевик развязал, через WiringOP включал, выключал.
        Какие фотки нужны ? Folder is read only ?

        0
        1. 1. Я описывал именно для Armbian’а т.к. у него есть специальный монитор температуры проца. Про Установленный Вами Openelec – я не в курсе! Openelec – не копал.
          2. Раз система говорит, что эта папка только для чтения, то наверно так и есть и нужно дальше копать систему на предмет ограничений.

          По поводу скрипта. Если в Openelec есть такой же монитор температуры… что вам мешает создать скриптик в какой другой папке для теста?
          Если монитор температуры отсутствует, то можно цифровой датчик прикрутить на гребенку апельсины DS18b20… стоит он копейки и где-то в исходниках WiringOP я для для этого датчика выдел готовый код чтения…

          0
          1. На самом деле я и думал поставить платку управления на Attiny с датчиком температуры на NTC резисторе, даже место в корпусе оставил, пока на вашу статью не наткнулся =)

            0
  12. Вариантов много каждый выбирает подходящий для себя
    Попробуйте ввести конманду cat /etc/armbianmonitor/datasources/soctemp
    В ответ должны получить температуру. Если будет ошибка или что-то кроме температуры, то для Ваших целей это не подходит

    как пример

    0
    1. печаль. нет такого файла и папокю
      Нарыл комманду cputemp она работает но пишет температуру замерзания воды – 0С

      0

Добавить комментарий




     
Авторизация
*
*
Генерация пароля
Яндекс.Метрика